libSDL and $DISPLAY

Sylvain beuc at beuc.net
Thu Jun 27 22:11:29 UTC 2013


Hi Evgeni,

On Thu, Jun 27, 2013 at 08:53:43PM +0200, Evgeni Golov wrote:
> [ writing this to -games as there are enough ppl with SDL experience
> here I hope ]
> 
> as you might have seen, there have been a couple of the 1.2K crash bugs
> reported for our packges. While looking into these, I discovered a funny
> effect in libSDL and wanted to ask for some advice/suggestion.
> 
> Let's assume we have the following code:
> #include <SDL/SDL.h>
> 
> void main() {
>   if (SDL_Init (SDL_INIT_VIDEO) < 0) {
>     fprintf(stderr, "Unable to init SDL: %s\n", SDL_GetError());
>     exit(1);
>   }
> }
> 
> and libsdl1.2, 1.3 and 2.0 (the later obviously needs a SDL2/SDL.h).
> 
> Running this should initialize SDL and exit immediately, right?
> So it does when $DISPLAY has a valid value.
> When you call it with garbage as $DISPLAY, or even nothing at all, thing
> get funny:
> 
> 2.0:
> % env -i ./a.out
> Unable to init SDL: No available video device
> % env -i DISPLAY=foo ./a.out
> Unable to init SDL: No available video device
> 
> 1.3:
> % env -i ./a.out
> commandline read: a.out
> SDL_DirectFB: Disabling linxu input
> 
> 
>    ~~~~~~~~~~~~~~~~~~~~~~~~~~| DirectFB 1.2.10 |~~~~~~~~~~~~~~~~~~~~~~~~~~
>         (c) 2001-2008  The world wide DirectFB Open Source Community
>         (c) 2000-2004  Convergence (integrated media) GmbH
>       ----------------------------------------------------------------
> 
> (*) DirectFB/Core: Single Application Core. (2012-05-20 12:49)
> (*) Direct/Modules: suppress module 'x11input'
> (*) Direct/Memcpy: Using libc memcpy()
> (!) DirectFB/core/vt: Error opening `/dev/tty0'!
>     --> Permission denied
> (!) DirectFB/Core: Could not initialize 'system_core' core!
>     --> Initialization error!
> SDL_DirectFB: ../../src/video/directfb/SDL_DirectFB_video.c
> (244):Initialization error!
> (!) [23906:    0.000] --> Caught signal 11 (at 0x528, invalid address) <--
> [1]    23906 abort (core dumped)  env -i ./a.out
> % env -i DISPLAY=foo ./a.out
> commandline read: a.out
> SDL_DirectFB: Disabling linxu input
> 
> 
>    ~~~~~~~~~~~~~~~~~~~~~~~~~~| DirectFB 1.2.10 |~~~~~~~~~~~~~~~~~~~~~~~~~~
>         (c) 2001-2008  The world wide DirectFB Open Source Community
>         (c) 2000-2004  Convergence (integrated media) GmbH
>       ----------------------------------------------------------------
> 
> (*) DirectFB/Core: Single Application Core. (2012-05-20 12:49)
> (*) Direct/Memcpy: Using libc memcpy()
> (!) X11: Error in XOpenDisplay for 'foo'
> (!) DirectFB/Core: Could not initialize 'system_core' core!
>     --> Initialization error!
> SDL_DirectFB: ../../src/video/directfb/SDL_DirectFB_video.c
> (244):Initialization error!
> (!) [23885:    0.000] --> Caught signal 11 (at 0x528, invalid address) <--
> 
> 1.2:
> % env -i ./a.out
> Unable to init SDL: Unable to open a console terminal
> % env -i DISPLAY=foo ./a.out
> Unable to init SDL: Unable to open a console terminal
> 
> The fun part about 1.2 is: it does a half vt switch here. I see tty1, my
> mouse from Xorg and my whole input still going to Xorg. Pressing
> Ctrl+Alt+F1 to actually switch to tty1 and then Alt+F7 brings Xorg back.
> This does not happen in 1.3 (besides the codedump) nor in 2.0.
> 
> I wonder: is this general SDL behavior? Or some weird combo of my
> GPU/drivers/Xorg/SDL?

Same behavior here - I would have expected the same behavior as 1.3,
weird.

You might want to corner the culprit driver using SDL_VIDEODRIVER:
http://sdl.beuc.net/sdl.wiki/SDL_envvars

-- 
Sylvain



More information about the Pkg-sdl-maintainers mailing list