SDL: STK exits on startup when mouse is moved with Wayland video driver

When I move my mouse while SuperTuxKart is starting with SDL_VIDEODRIVER=wayland, SDL_SendQuit() gets called at https://github.com/libsdl-org/SDL/blob/402b86f2a88b5ee3e112dbde2ec232ee5f36572f/src/video/wayland/SDL_waylandevents.c#L245 for some reason. This should obviously not happen. It happens in at least Wayfire and Sway.

Edit: When I put a breakpoint on SDL_SendQuit(), the following is the backtrace:

#0  SDL_SendQuit () at ./src/events/SDL_quit.c:206
#1  0x00007ffff7611bac in SDL_PumpEvents_REAL () at ./src/events/SDL_events.c:760
#2  0x00007ffff7611d2d in SDL_WaitEventTimeout_REAL (event=0x7fffffffdc50, timeout=0) at ./src/events/SDL_events.c:895
#3  0x0000555555eb94d8 in irr::CIrrDeviceSDL::run (this=0x55555649bb60) at /home/woutjuh/stk/stk-code/lib/irrlicht/source/Irrlicht/CIrrDeviceSDL.cpp:664
#4  0x0000555555a96b6e in GUIEngine::renderLoading (clearIcons=<optimized out>, launching=<optimized out>, update_tips=<optimized out>) at /home/woutjuh/stk/stk-code/src/guiengine/engine.cpp:1538
#5  0x0000555555a971bc in GUIEngine::addLoadingIcon (icon=<optimized out>) at /home/woutjuh/stk/stk-code/src/guiengine/engine.cpp:1570
#6  0x0000555555baa5a4 in initRest () at /home/woutjuh/stk/stk-code/src/main.cpp:1962
#7  0x0000555555916917 in main (argc=-8112, argv=<optimized out>) at /home/woutjuh/stk/stk-code/src/main.cpp:2251

Edit 2: I am sure the SDL_SendQuit() is from the line I linked, because when I add a printf the line before it, it prints stuff.

About this issue

  • Original URL
  • State: closed
  • Created 3 years ago
  • Comments: 20

Most upvoted comments

Oof, so my mouse concern was real:

Unfortunately, this is a very real issue. With a short simulated freeze of any Wayland client along with a high-resolution input device (1000Hz mouse in my case), it’s fairly easy to cause libwayland-server to terminate the client’s connection and cause its process to exit. This applies to Xwayland as a Wayland client as well, which can cause the compositor itself to exit such as in the case of Mutter.

I’m open to helping out with this, but yeah let’s put the SDL side on hold in favor of the server side.