[vbox-dev] Dynamic linking of OpenGL drivers
benjiwiebe14 at gmail.com
Sun May 14 05:43:20 UTC 2017
I have been running the latest trunk of Mesa for a few days now, and
when I wanted to start up VirtualBox I got the following errors: (the
other info is from setting LIBGL_DEBUG=verbose)
libGL: OpenDriver: trying /usr/local/lib/dri/tls/r600_dri.so
libGL: OpenDriver: trying /usr/local/lib/dri/r600_dri.so
libGL: dlopen /usr/local/lib/dri/r600_dri.so failed ((null))
libGL error: unable to load driver: r600_dri.so
libGL error: driver pointer missing
libGL error: failed to load driver: r600
libGL: OpenDriver: trying /usr/local/lib/dri/tls/swrast_dri.so
libGL: OpenDriver: trying /usr/local/lib/dri/swrast_dri.so
libGL: dlopen /usr/local/lib/dri/swrast_dri.so failed ((null))
libGL error: unable to load driver: swrast_dri.so
libGL error: failed to load driver: swrast
I've poked around in Mesa's code responsible for loading the drivers,
and finally poked around in glibc with gdb while debugging VirtualBox.
Disclaimer: I'm somewhat clueless as to the niceties of virtualization
It seems that VirtualBox has some sort of wrapper for dlopen() called
supR3HardenedPosixMonitor_Dlopen which in turn calls a few other
VirtualBox functions before returning back to dlopen(). Anyways
somewhere in there is where loading the driver fails. According to
strace, open() never gets called on the driver file. Also, since
dlerror() returns NULL, I'm assuming that it isn't glibc's fault, since
glibc's dlopen() returns error messages via dlerror() if dlopen()
returns NULL, i.e. dlopen() and dlerror() should NEVER both return NULL.
And in this case both do.
So. What should I try next? Is this a VirtualBox bug? My custom Mesa is
working fine with everything else. Using strace/ltrace on the glxinfo
command shows that the driver gets loaded just fine.
More information about the vbox-dev