]> code.ossystems Code Review - openembedded-core.git/commitdiff
qemu: Work around the crash seen on Ubuntu.
authorJeff Dike <jdike@linux.intel.com>
Wed, 23 Jun 2010 16:29:54 +0000 (17:29 +0100)
committerJoshua Lock <josh@linux.intel.com>
Wed, 23 Jun 2010 16:32:12 +0000 (17:32 +0100)
Due to different stack contents in sdl_display_init on Ubuntu vs other distros,
an uninitialized structure is causing a crash.  Zeroing the structure makes the
behavior uniform across distros, avoiding the Ubuntu crash, but doesn't fix the
underlying bugs, notably:
the return value of SDL_GetWMInfo needs to be checked, as it's currently
failing silently
the underlying reason for the failure of SDL_GetWMInfo needs to be found -
there is a GetWMINfo method in the internal SDL structure which is NULL, and
the reason for this needs to be found.

Signed-off-by: Jeff Dike <jdike@linux.intel.com>
meta/packages/qemu/qemu-0.12.4/init-info.patch [new file with mode: 0644]
meta/packages/qemu/qemu_0.12.4.bb

diff --git a/meta/packages/qemu/qemu-0.12.4/init-info.patch b/meta/packages/qemu/qemu-0.12.4/init-info.patch
new file mode 100644 (file)
index 0000000..8ba7d8f
--- /dev/null
@@ -0,0 +1,16 @@
+# This is a workaround to the crashes seen on Ubuntu.  Setting info to zero
+# makes info.info.x11.display zero and avoids the calls to
+# opengl_exec_set_parent_window, one of which is crashing.
+
+Index: qemu-0.12.4/sdl.c
+===================================================================
+--- qemu-0.12.4.orig/sdl.c
++++ qemu-0.12.4/sdl.c
+@@ -871,6 +871,7 @@ void sdl_display_init(DisplayState *ds, 
+     vi = SDL_GetVideoInfo();
+     host_format = *(vi->vfmt);
++    bzero(&info, sizeof(info));
+     SDL_GetWMInfo(&info);
+     if (info.subsystem == SDL_SYSWM_X11 && info.info.x11.display)
+         opengl_exec_set_parent_window(info.info.x11.display,
index 79b73d38ad75ecc6e7b3684c28e227b0034568c2..f1ecf3c067f46880682f3eec962c50edbd26d040 100644 (file)
@@ -14,5 +14,6 @@ SRC_URI = "\
     file://fix-nogl.patch \
     file://qemugl-allow-glxcontext-release.patch \
     file://linker-flags.patch"
+    file://init-info.patch;patch=1"
 
 S = "${WORKDIR}/qemu-${PV}"