[vbox-dev] Dynamic linking of OpenGL drivers

Benji Wiebe benjiwiebe14 at gmail.com
Sun May 14 05:43:20 GMT 2017


Hello,

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 
software development.

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.

Thanks




More information about the vbox-dev mailing list