[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