Bug#1038741: sdl12-compat + bumprace: game becomes unresponsive during "CRASHED" death message

Simon McVittie smcv at debian.org
Tue Jun 20 19:25:38 BST 2023


Package: libsdl1.2-compat,bumprace
Severity: important
Forwarded: https://github.com/libsdl-org/sdl12-compat/issues/253
Control: found -1 libsdl1.2-compat/1.2.60-1
Control: found -1 libsdl1.2-compat/1.2.64-2
Control: found -1 bumprace/1.5.8-1
User: pkg-sdl-maintainers at lists.alioth.debian.org
Usertags: sdl12-compat-regression

sdl12-compat is a compatibility layer that implements the SDL 1.2 API/ABI
by dlopening SDL 2 and using that instead. During the Debian 13 cycle,
I want to replace the unmaintained "classic SDL 1.2" with sdl12-compat.
I tested lots of older games with sdl12-compat during the Debian
12 freeze and upstream was able to apply fixes or workarounds, but
unfortunately bumprace is one of the few for which using sdl12-compat
exhibits a regression.  It's not clear whether this is a bumprace bug,
or a sdl12-compat bug.

Prerequisites:

* Debian 12 system (with or without upgrading libsdl1.2-compat from
  unstable)
* A Wayland environment with Xwayland
* sudo apt install bumprace libsdl1.2-compat

To reproduce:

export SDL12COMPAT_DEBUG_LOGGING=1
bumprace
SDL_VIDEODRIVER=x11 LD_LIBRARY_PATH='/usr/$LIB/sdl12-compat' bumprace
SDL_VIDEODRIVER=wayland LD_LIBRARY_PATH='/usr/$LIB/sdl12-compat' bumprace

While the LD_LIBRARY_PATH is set, check that you see this as the first line
of output:
> INFO: sdl12-compat 1.2.60, built on (date) at (time), talking to SDL2 2.26.5

Use arrow keys and Enter to select "1 player game",
"Flying saucer (Best steering)".

Use Left/Right arrow keys to rotate (the red tick mark on the flying
saucer is the back end) and Up arrow key to fire the engine. Steer
yourself into an enemy (grey shuriken-looking things) or obstacle
(electricity). If necessary exit the level (press Esc repeatedly) and
start again to get a level where there is electricity closer to your
starting position.

Expected result:

* After colliding, an explosion and "CRASHED" appear, reasonably promptly,
  and the level restarts

Actual result:

* With classic SDL 1.2 (simple "asc" command), it works as expected.

* With libsdl1.2-compat, often (maybe half the time), the game freezes for
  a while (music continues to play but the game is unresponsive).
  In GNOME this often triggers a "Bumprace is not responding" dialog.

According to SDL upstream, the problem is that the game doesn't iterate
the SDL main loop while fading in and out the red "CRASHED" message. It
seems that this might have been OK in SDL 1.2, but in SDL 2 the result
is that it fades in extremely slowly.

Workaround: using native X11 (for example "GNOME on Xorg") doesn't seem
to trigger this for whatever reason.

    smcv



More information about the Pkg-sdl-maintainers mailing list