Source: libsdl-perl, sdl12-compat Control: found -1 libsdl-perl/2.548-3 Control: found -1 sdl12-compat/1.2.64-5 Control: block 1039911 by -1 Severity: serious Tags: trixie sid ftbfs User: debian...@lists.debian.org Usertags: breaks needs-update
Since sdl12-compat took over the libsdl1.2debian and libsdl1.2-dev packages from the old libsdl1.2, the test suite from libsdl-perl is sometimes crashing in t/core_video.t. It seems to be failing consistently on 32-bit architectures, and intermittently on some 64-bit architectures (arm64 and s390x). I didn't see this before starting the transition because I had used amd64 for my test-rebuilds, and amd64 seems to be consistently unaffected. I originally saw this in the autopkgtest runs on ci.debian.net, but I was able to reproduce a similar failure during build-time testing on i386. I didn't see a similar crash when testing real games, so I don't know whether this is a crash that can affect games in practice, or just a test issue. It is not yet clear to me whether this is a libsdl-perl bug or a sdl12-compat bug, so for now the bug is reported as affecting both packages. It can be reassigned to either libsdl-perl or sdl12-compat when a root cause is found. In the cases where it fails, there are two failure modes that I've seen. One failure mode is that t/core_video.t crashes with signal 11 (SIGSEGV) during testing, usually (perhaps always?) after test point 65, for example in <https://ci.debian.net/data/autopkgtest/testing/armel/libs/libsdl-perl/35792469/log.gz>:
147s t/core_video.t .................. 147s ok 1 - SDL::Video->can(...) 147s ok 2 - SDL_SWSURFACE should be imported
...
147s ok 63 - '[get_video_surface] Checking if we get a surface ref back' isa 'SDL::Surface' 147s ok 64 - [video_driver_name] This is your driver name: dummy 147s ok 65 - [video_mode_ok] Checking if an integer was return 147s All 65 subtests passed 147s (2 TODO tests unexpectedly succeeded)
...
289s t/core_video.t (Wstat: 11 (Signal: SEGV) Tests: 65 Failed: 0) 289s TODO passed: 57, 59 289s Non-zero wait status: 11 289s Parse errors: No plan found in TAP output
The other failure mode is that t/core_video.t completes testing and calls done_testing(), but then crashes with SIGSEGV during exit, for example in <https://ci.debian.net/data/autopkgtest/testing/arm64/libs/libsdl-perl/35707567/log.gz>:
369s t/core_video.t .................. 369s ok 1 - SDL::Video->can(...) 369s ok 2 - SDL_SWSURFACE should be imported ... 369s ok 108 # skip No window manager available 369s ok 109 # skip No window manager available 369s ok 110 - Are we still alive? Checking for segfaults 369s 1..110 369s All 110 subtests passed 369s (less 39 skipped subtests: 71 okay) 369s (2 TODO tests unexpectedly succeeded)
...
499s t/core_video.t (Wstat: 11 (Signal: SEGV) Tests: 110 Failed: 0) 499s TODO passed: 57, 59 499s Non-zero wait status: 11
In the s390x log <https://ci.debian.net/data/autopkgtest/testing/s390x/libs/libsdl-perl/35709601/log.gz> we can also see an error message from glibc's malloc implementation indicating memory corruption, perhaps a double-free or something like that:
130s ok 64 - [video_driver_name] This is your driver name: dummy 130s ok 65 - [video_mode_ok] Checking if an integer was return 130s corrupted size vs. prev_size
This is blocking migration of sdl12-compat to testing (#1039911). smcv