# Valgrind suppressions for the libakgl memory-check run. # # Used by `cmake --build build --target memcheck` and by any hand-run # `ctest -T memcheck`; see AGENTS.md -> "Memory checking". # # Every entry here is a deliberate decision that a finding belongs to somebody # else's code and cannot be fixed from this repository. Nothing that libakgl # allocates is suppressed, and nothing is suppressed merely because it is noisy. # If a suppression starts hiding a real finding, delete it -- a false negative in # a leak check is worth more than a quiet log. # # The memcheck target runs the suite headless (SDL_VIDEO_DRIVER=dummy, # SDL_RENDER_DRIVER=software, SDL_AUDIO_DRIVER=dummy) precisely so that the GPU # stack is never loaded. That removes thousands of unfixable findings inside # amdgpu_dri.so / Mesa / libGLX without suppressing anything, which is why there # are no driver entries below. Run the suite against a real driver and you will # need them; do not add them here on that account. # SDL allocates its global state -- the hint table, the property registry, the # log category array, the clipboard -- on first use and reclaims it in SDL_Quit. # A test that fails before SDL_Quit, and every test that deliberately leaves SDL # up so a later assertion can look at it, leaves those blocks behind. They are # one-per-process, not per-call, so they cannot accumulate into a leak. { sdl3-global-state-still-reachable Memcheck:Leak match-leak-kinds: reachable ... fun:SDL_InitSubSystem_REAL } # dlopen keeps the link map and the loaded objects' TLS blocks for the process # lifetime; a dlclose does not return them. SDL loads its video, audio, and # render backends this way, and SDL_image and SDL_mixer load their codecs the # same way. { dl-open-keeps-its-link-map Memcheck:Leak match-leak-kinds: reachable,possible ... fun:_dl_open } # FreeType, reached through SDL_ttf, caches per-face and per-size structures # inside the library instance and frees them in FT_Done_FreeType, which SDL_ttf # calls from TTF_Quit. A suite that opens a font and exits without TTF_Quit # reports them; a font libakgl itself failed to close is a different finding and # is NOT covered here -- it appears under akgl_text_loadfont, not under # FT_Init_FreeType. { freetype-library-instance Memcheck:Leak match-leak-kinds: reachable ... fun:FT_Init_FreeType } # deps/semver's own unit test leaks the buffers it cuts strings into -- # semver_unit.c:8 and :21, one calloc each per case. Vendored code, and its test # program at that: not ours to edit, and not worth carrying a local patch for. # Named by function rather than by file so that a rewrite of those cases stops # being suppressed and comes back as a finding. # # This is the only entry here that hides a real leak in a program this build # runs. It is bounded, it is in a test, and the alternative is either a fork of # a vendored dependency or a memcheck run that is always red -- see TODO.md, # "Memory checking" item 39. { vendored-semver-unit-test-strcut-first Memcheck:Leak match-leak-kinds: definite fun:calloc fun:test_strcut_first fun:test_strcut fun:main } { vendored-semver-unit-test-strcut-second Memcheck:Leak match-leak-kinds: definite fun:calloc fun:test_strcut_second fun:test_strcut fun:main }