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

Reply via email to