[poky] [PATCH 1/1] qemu: Use mesa's libGL rather than nVidia's to avoid segfault of qemu
Mark Hatle
mark.hatle at windriver.com
Thu Mar 17 08:03:03 PDT 2011
I reworked the patch slightly.. It's available on poky-contrib
mhatle/qemu-workaround.
Specifically I changed:
- the warning message to make clarify it a bit.
- Changed the preload to be "libGL.so", so the rt-linker will now search for it
(/usr/lib/libGL.so may be wrong on some systems where /usr/lib64 is the default
library path)
- Added a second check to see if the workaround worked or not, if it didn't add
a second warning message
- To the QEMU run line, add "stty sane" in the case of a failure. Otherwise
QEMU leaves the terminal/console in a confused state.
Can you please verify that this still works on the Ubuntu systems and that I
didn't miss anything/break anything else? If so I think this is the version we
should go with.
--Mark
On 3/17/11 7:22 AM, Zhai Edwin wrote:
> From: Zhai Edwin <edwin.zhai at intel.com>
>
> Proprietary nVidia driver introduce its own libGL that precede mesa's.
> qemu has segfault if linked with it. This fix try to use mesa's libGL
> if ldd find qemu linked with nVidia libGL.
>
> [YOCTO #649]
> [YOCTO #698]
>
>
> Signed-off-by: Zhai Edwin <edwin.zhai at intel.com>
> ---
> scripts/poky-qemu-internal | 16 +++++++++++++++-
> 1 files changed, 15 insertions(+), 1 deletions(-)
>
> diff --git a/scripts/poky-qemu-internal b/scripts/poky-qemu-internal
> index 3638a65..1f09fe7 100755
> --- a/scripts/poky-qemu-internal
> +++ b/scripts/poky-qemu-internal
> @@ -436,10 +436,24 @@ else
> echo "Warning: distccd not present, no distcc support loaded."
> fi
>
> +# qemu got segfault if linked with nVidia's libgl
> +GL_LD_PRELOAD=$LD_PRELOAD
> +
> +if ldd $QEMUBIN | grep -i nvidia &> /dev/null
> +then
> + echo "************** !!!Warning!!! **************
> + You installed nVidia's libGL.so that probably lead qemu segfault!
> + Pls. uninstall proprietary nVidia driver or make mesa libgl precede nvidia's."
> +
> + # To avoid segfault of qemu, skip nVidia's libGL and use mesa's instead
> + echo "Skip nVidia's libGL!"
> + GL_LD_PRELOAD="/usr/lib/libGL.so $LD_PRELOAD"
> +fi
> +
> echo "Running $QEMU..."
> # -no-reboot is a mandatory option - see bug #100
> echo $QEMUBIN -kernel $KERNEL $QEMUOPTIONS $SERIALOPTS -no-reboot $SCRIPT_QEMU_OPT $SCRIPT_QEMU_EXTRA_OPT --append '"'$KERNCMDLINE $SCRIPT_KERNEL_OPT'"'
> -$QEMUBIN -kernel $KERNEL $QEMUOPTIONS $SERIALOPTS -no-reboot $SCRIPT_QEMU_OPT $SCRIPT_QEMU_EXTRA_OPT --append "$KERNCMDLINE $SCRIPT_KERNEL_OPT" || /bin/true
> +LD_PRELOAD="$GL_LD_PRELOAD" $QEMUBIN -kernel $KERNEL $QEMUOPTIONS $SERIALOPTS -no-reboot $SCRIPT_QEMU_OPT $SCRIPT_QEMU_EXTRA_OPT --append "$KERNCMDLINE $SCRIPT_KERNEL_OPT" || /bin/true
>
> cleanup
>
More information about the poky
mailing list