mirror of
https://github.com/scp-fs2open/fs2open.github.com.git
synced 2026-11-08 17:48:46 -10:00
The Linux Debug legs fail memcheck on six "definitely lost" contexts (480 bytes in 12 blocks), all allocated under the temporary SDL_InitSubSystem(SDL_INIT_VIDEO) in resolution_default(). SDL probes its real video backends, dlopens libX11, and keeps a few small blocks across the matching SDL_QuitSubSystem(). These are the same six contexts #7657 suppressed via fun:X11_CreateDevice. That suppression stopped matching when #7774 bumped the prebuilt libs: 62c89ef6 shipped libSDL3.so.0.2.14 with a full .symtab (433 distinct X11_* symbols), b57636e0 ships a stripped libSDL3.so.0.4.14 (none). X11_CreateDevice is a static function, so valgrind can no longer resolve it and every libSDL3 frame prints as ???. Every PR branch based on post-bump master fails this leg. Rather than rewrite the suppression around object wildcards, stop allocating the memory in the first place. The unit tests never open a window and the runners are headless, so pin SDL_VIDEODRIVER=dummy: SDL skips backend probing entirely, libX11 is never loaded, and the leaks do not happen. It also makes the tests behave identically whether or not the runner has a display. No test depends on the real desktop mode; the only resolution test sets an explicit override. The os_init suppression stays. That leak is from SDL_Init(SDL_INIT_EVENTS) and SDL_hid_init(), not from video, so the dummy driver does not affect it. The X11_CreateDevice block also stays, as a backstop for running memcheck by hand, now with a comment recording why it is inert in CI. Co-authored-by: Claude Opus 5 (1M context) <[email protected]>