SDL2 UI sends a NULL to sdl_grab_start if fullscreen, which crashes in ui/sdl2.c: if (full_screen) { gui_fullscreen = 1; sdl_grab_start(0); } Is sent, but no null checks are made in sdl_grab_start (its assumed to be an allocated pointer). So a crash happens if you start qemu -full-screen. It should at lease send the first [0] of the newly allocated sdl2_console through. Quickly looking around should look something like: if (full_screen) { gui_fullscreen = 1; sdl_grab_start(&sdl2_console[0]); }