[Interest] Windows: "loadlibrary failed with error 87" on a configuration with a fake video card?

Thiago Macieira thiago.macieira at intel.com
Tue Mar 22 13:28:05 CET 2022


On Tuesday, 22 March 2022 04:13:27 -03 Alexander Dyagilev wrote:
> Why does it attempts to load this driver at all, if QT_OPENGL=software
> is set?..

Please turn on the debug logging for category "qt.qpa.gl" and see what it said 
for this debug line:

    qCDebug(lcQpaGl) << "Qt: Using WGL and OpenGL from" << openglDll;

That second argument is the name of the DLL that Qt is trying to use.

Since you asked for software rendering, that should be "opengl32sw". If you 
see something other than that here, check if you didn't set QT_OPENGL_DLL in 
the environment, that QT_OPENGL=software is indeed set and that no other 
errors in loading happened.

That said, this comment in the source is relevant:

    if (moduleIsNotOpengl32()) {
        // Load opengl32.dll always. GDI functions like ChoosePixelFormat do
        // GetModuleHandle for opengl32.dll and behave differently (and call 
back into
        // opengl32) when the module is present. This is fine for dummy 
contexts and windows.
        QSystemLibrary::load(L"opengl32");
    }

Looks like it always loads opengl32 anyway and one of the functions it may use 
for it is ChoosePixelFormat, which is in your stack trace:

opengl32.dll!wglChoosePixelFormat()
gdi32full.dll!ChoosePixelFormat()
qwindows.dll!00007ffcede270ae()

It might be that one of those safe uses from GDI is not safe because your 
video card driver is broken. I suggest you contact your vendor for help.

-- 
Thiago Macieira - thiago.macieira (AT) intel.com
  Software Architect - Intel DPG Cloud Engineering





More information about the Interest mailing list