Bug#1041211: libsdl-perl: FTBFS and autopkgtest failure with sdl12-compat, especially on 32-bit

Simon McVittie smcv at debian.org
Sat Jul 15 18:43:08 BST 2023


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-ci at 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



More information about the pkg-perl-maintainers mailing list