Mixxx 2.2 X86 crashes on Win64

Bug #1786718 reported by Daniel Schürmann
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
Mixxx
Fix Released
Critical
RJ Skerry-Ryan

Bug Description

I think we should either fix it, or refuse the installation.

This is the mixxx.log

```
Info [Main]: SoundSourceProxy - Loading SoundSource plugins "C:/Program Files (x86)/Mixxx/plugins/soundsource"
Info [Main]: SoundSourcePluginLibrary - Dynamically loaded plugin library "C:/Program Files (x86)/Mixxx/plugins/soundsource/soundsourcemediafoundation.dll"
Warning [Main]: SoundSourcePluginLibrary - Failed to dynamically load plugin library "C:/Program Files (x86)/Mixxx/plugins/soundsource/soundsourcemediafoundation.exp" : "Cannot load library C:\\Program Files (x86)\\Mixxx\\plugins\\soundsource\\soundsourcemediafoundation.exp: Unknown error 0x000000c1."
Warning [Main]: SoundSourceProxy - Failed to load SoundSource plugin "C:/Program Files (x86)/Mixxx/plugins/soundsource/soundsourcemediafoundation.exp"
Warning [Main]: SoundSourcePluginLibrary - Failed to dynamically load plugin library "C:/Program Files (x86)/Mixxx/plugins/soundsource/soundsourcemediafoundation.lib" : "Cannot load library C:\\Program Files (x86)\\Mixxx\\plugins\\soundsource\\soundsourcemediafoundation.lib: Unknown error 0x000000c1."
Warning [Main]: SoundSourceProxy - Failed to load SoundSource plugin "C:/Program Files (x86)/Mixxx/plugins/soundsource/soundsourcemediafoundation.lib"
Debug [Main]: "Mixxx" "2.2.0-alpha-pre" "(built on: Aug 12 2018 @ 20:22:38; flags: asan=0 asmlib=0 battery=1 buildtime=1 bulk=0 color=0 coreaudio=0 faad=0 ffmpeg=0 hid=1 hss1394=1 ipod=0 lilv=0 localecompare=1 macappstore=0 mad=1 mediafoundation=1 modplug=0 mpris=0 opengles=0 optimize=fastbuild opus=1 perftools=0 perftools_profiler=0 profiling=0 qdebug=1 qt_sqlite_plugin=0 qtkeychain=0 shoutcast=1 test=1 tsan=0 ubsan=0 vamp=1 verbose=0 vinylcontrol=1 wv=0)" is starting...
Debug [Main]: Compile time library versions:
Debug [Main]: Qt: 5.10.1
Debug [Main]: libshout: 2.4.1
Debug [Main]: PortAudio: 1246720 PortAudio V19.6.0-devel, revision 396fe4b6699ae929d3a685b3ef8a7e97396139a4
Debug [Main]: RubberBand: 1.8.1
Debug [Main]: SoundTouch: 2.0.0
Debug [Main]: TagLib: 1.10.0
Debug [Main]: ChromaPrint: 1.3.1
Debug [Main]: Vorbis: Xiph.Org libVorbis 1.3.5
Debug [Main]: libsndfile: libsndfile-1.0.26
Debug [Main]: FLAC: 1.3.1
Debug [Main]: QDesktopServices::storageLocation(HomeLocation): "C:/Users/dasch"
Debug [Main]: QDesktopServices::storageLocation(DataLocation): "C:/Users/dasch/AppData/Local/Mixxx"
Debug [Main]: QCoreApplication::applicationDirPath() "C:/Program Files (x86)/Mixxx"
Debug [Main]: Loading resources from "C:/Program Files (x86)/Mixxx/"
Debug [Main]: Configuration file is at the current version 2.2.0-alpha-pre
Info [Main]: BroadcastSettings - Found 1 profile(s)
Debug [Main]: Loading resources from "C:/Program Files (x86)/Mixxx/"
Debug [Main]: Loading resources from "C:/Program Files (x86)/Mixxx/"
Debug [Main]: Loading translations for locale "de_DE" from translations folder "C:/Program Files (x86)/Mixxx/translations/" : success
Debug [Main]: "Error: Unable to import console: no such extension"
Debug [Main]: "Error: Unable to import svg: no such extension"
Debug [Main]: Loading resources from "C:/Program Files (x86)/Mixxx/"
Debug [Main]: Compressor attack per frame: 0.000408163 decay per frame: 4.08163e-05
Debug [Main]: EngineNetworkStream - addWorker: worker added
Debug [Main]: EngineNetworkStream - worker slots used: "1 out of 16"
Debug [Main]: BroadcastManager - addConnection: created connection for profile "Connection 1"
Debug [Main]: WARNING: AudioInput already registered!
Debug [Main]: WARNING: AudioInput already registered!
Debug [Main]: WARNING: AudioInput already registered!
Debug [Main]: WARNING: AudioInput already registered!
Info [Main]: DbConnection - Available drivers for database connections: ("QSQLITE")
Info [Main]: DbConnectionPool - Cloned thread-local database connection "MIXXX-1" QSqlDatabase(driver="QSQLITE", database="C:/Users/dasch/AppData/Local/Mixxx/mixxxdb.sqlite", host="localhost", port=-1, user="mixxx", open=true)
Info [Main]: MixxxMainWindow - Connecting to database
Info [Main]: MixxxMainWindow - Initializing or upgrading database schema
Info [Main]: SchemaManager - Database schema is up-to-date at version 28
Debug [Main]: LibraryScanner - Starting thread
Info [Main]: Library - Connecting database
Debug [Main]: Committing transaction on "MIXXX-1" result: true
Debug [LibraryScanner 1]: LibraryScanner - Entering thread
Info [LibraryScanner 1]: DbConnectionPool - Cloned thread-local database connection "MIXXX-2" QSqlDatabase(driver="QSQLITE", database="C:/Users/dasch/AppData/Local/Mixxx/mixxxdb.sqlite", host="localhost", port=-1, user="mixxx", open=true)
Debug [Main]: CrateFeature::rebuildChildModel() -1
Debug [Main]: Default quick links: ("C:/Users/dasch/Music/", "C:/Users/dasch/Downloads/", "C:/Users/dasch/Desktop/", "C:/Users/dasch/OneDrive/Dokumente/")
Debug [Main]: Appending Quick Link: "Music" --- "C:/Users/dasch/Music/"
Debug [Main]: Appending Quick Link: "Downloads" --- "C:/Users/dasch/Downloads/"
Debug [Main]: Appending Quick Link: "Desktop" --- "C:/Users/dasch/Desktop/"
Debug [Main]: Appending Quick Link: "Dokumente" --- "C:/Users/dasch/OneDrive/Dokumente/"
Debug [Main]: Committing transaction on "MIXXX-1" result: true
Debug [Main]: Traktor Library Location=[ "C:/Users/dasch/collection.nml" ]
Debug [Main]: Checking for access to user's library directories:
Debug [Main]: Checking for access to "C:\\Users\\dasch\\Music" : true
Debug [Main]: Creating ControllerManager
Debug [LibraryScanner 1]: LibraryScanner - Event loop starting
Debug [Controller]: ControllerManager:slotInitialize
Critical [Main]: Failed to load libEGL (Das angegebene Modul wurde nicht gefunden.)
Warning [Main]: QWindowsEGLStaticContext::create: Failed to load and resolve libEGL functions
Critical [Main]: Failed to load opengl32sw.dll (Das angegebene Modul wurde nicht gefunden.)
Warning [Main]: Failed to load and resolve WGL/OpenGL functions
Critical [Main]: Failed to load libEGL (Das angegebene Modul wurde nicht gefunden.)
Warning [Main]: QWindowsEGLStaticContext::create: Failed to load and resolve libEGL functions
Critical [Main]: Failed to load opengl32sw.dll (Das angegebene Modul wurde nicht gefunden.)
Warning [Main]: Failed to load and resolve WGL/OpenGL functions
Critical [Main]: Failed to load libEGL (Das angegebene Modul wurde nicht gefunden.)
Warning [Main]: QWindowsEGLStaticContext::create: Failed to load and resolve libEGL functions
Critical [Main]: Failed to load opengl32sw.dll (Das angegebene Modul wurde nicht gefunden.)
Warning [Main]: Failed to load and resolve WGL/OpenGL functions
Critical [Main]: Failed to load libEGL (Das angegebene Modul wurde nicht gefunden.)
Warning [Main]: QWindowsEGLStaticContext::create: Failed to load and resolve libEGL functions
Critical [Main]: Failed to load opengl32sw.dll (Das angegebene Modul wurde nicht gefunden.)
```

Tags: windows
tags: added: windows
RJ Skerry-Ryan (rryan)
Changed in mixxx:
importance: Undecided → Critical
Revision history for this message
RJ Skerry-Ryan (rryan) wrote :

What's "Win64 32bit"? Seems like a contradiction?

Changed in mixxx:
milestone: none → 2.2.0
Revision history for this message
Daniel Schürmann (daschuer) wrote :

Oh, a typo.
I have installed the 32 bit build on my 64 bit Os

summary: - Mixxx 2.2 X86 crashes on Win64 32bit
+ Mixxx 2.2 X86 crashes on Win64 32bi
summary: - Mixxx 2.2 X86 crashes on Win64 32bi
+ Mixxx 2.2 X86 crashes on Win64
Revision history for this message
Sean M. Pappalardo (pegasus-renegadetech) wrote :

Since this particular problem appears to be with missing OpenGL libraries, is auto-switching to a non-GL waveform an acceptable solution? We might also want to pop up a warning so the user knows what's happening.

Revision history for this message
Sean M. Pappalardo (pegasus-renegadetech) wrote :

Daniel, does this crash still happen with an empty Mixxx config? (Do we default to a non-GL waveform?)

Revision history for this message
RJ Skerry-Ryan (rryan) wrote :

BTW, is this machine a VM?

Revision history for this message
Daniel Schürmann (daschuer) wrote :

Yes, it is a win10 preview VM in virtual box on Ubuntu Bionic

Revision history for this message
RJ Skerry-Ryan (rryan) wrote :

But the 64-bit Mixxx build does not trigger the same OpenGL failure log messages?

We build Qt 5 with "-opengl dynamic". https://doc.qt.io/qt-5/windows-requirements.html
"""
When configured with -opengl dynamic, neither Qt nor the applications built using qmake will link to the opengl32 (standard desktop OpenGL) or QtANGLE libraries. Instead, the appropriate library is chosen at runtime. By default, Qt will determine whether the system's opengl32.dll provides OpenGL 2 functions. If these are present, opengl32.dll is used, otherwise the ANGLE libraries (libEGL.dll and libGLESv2.dll) will be used. In case the ANGLE libraries are missing or initialization fails for some reason, an additional fallback is attempted by trying to load opengl32sw.dll. See below for details.
"""

This seems like a hint -- I wonder if the runtime loading logic in 32-bit Qt doesn't work when running on 64-bit Windows?

Revision history for this message
RJ Skerry-Ryan (rryan) wrote :

I believe we need to bundle libEGL.dll/libGLESv2.dll/libopengl32sw.dll with Mixxx.

libEGL.dll and libGLESv2.dll are present in our build environment ($ENV/Qt-5.11/bin/). I'm not sure where to get libopengl32sw.dll -- Qt hosts some pre-built ones:

Daniel -- can you try copying opengl32sw.dll from here:
https://download.qt.io/development_releases/prebuilt/llvmpipe/windows/
into the Mixxx folder w/ the other DLLs? Let's see if that lets us use software rendering at least.

Revision history for this message
RJ Skerry-Ryan (rryan) wrote :

https://doc.qt.io/qt-5/windows-deployment.html
"""
If dynamic OpenGL is used, you additionally need to include the libraries required for ANGLE and software rendering. For ANGLE, both libEGL.dll and libGLESv2.dll from Qt's lib directory are required as well as the HLSL compiler from DirectX. The HLSL compiler library, d3dcompiler_XX.dll, where XX is the version number that ANGLE (libGLESv2) was linked against.
"""

Revision history for this message
RJ Skerry-Ryan (rryan) wrote :

It's still a mystery why your 64-bit build works but the 32-bit doesn't. I think Qt's "dynamic" logic ("By default, Qt will determine whether the system's opengl32.dll provides OpenGL 2 functions.") must be failing for a 32-bit build of Qt on a 64-bit Windows system.

Changed in mixxx:
status: New → Confirmed
Revision history for this message
Daniel Schürmann (daschuer) wrote :

The opengl32sw.dll does the trick.

The crash is gone, but I have still the logfile spam and no moving waveforms with any option.

Warning [Main]: Configuration file is at version "2.2.0-alpha-pre" instead of the current 2.3.0-alpha-pre
Critical [Main]: Failed to load libEGL (Das angegebene Modul wurde nicht gefunden.)
Warning [Main]: QWindowsEGLStaticContext::create: Failed to load and resolve libEGL functions
Critical [Main]: Failed to load opengl32sw.dll (Das angegebene Modul wurde nicht gefunden.)
Warning [Main]: Failed to load and resolve WGL/OpenGL functions
Critical [Main]: Failed to load libEGL (Das angegebene Modul wurde nicht gefunden.)
Warning [Main]: QWindowsEGLStaticContext::create: Failed to load and resolve libEGL functions
Critical [Main]: Failed to load opengl32sw.dll (Das angegebene Modul wurde nicht gefunden.)
Warning [Main]: Failed to load and resolve WGL/OpenGL functions
Critical [Main]: Failed to load libEGL (Das angegebene Modul wurde nicht gefunden.)
Warning [Main]: QWindowsEGLStaticContext::create: Failed to load and resolve libEGL functions
Critical [Main]: Failed to load opengl32sw.dll (Das angegebene Modul wurde nicht gefunden.)
Warning [Main]: Failed to load and resolve WGL/OpenGL functions
Critical [Main]: Failed to load libEGL (Das angegebene Modul wurde nicht gefunden.)
Warning [Main]: QWindowsEGLStaticContext::create: Failed to load and resolve libEGL functions
Critical [Main]: Failed to load opengl32sw.dll (Das angegebene Modul wurde nicht gefunden.)
Warning [Main]: Failed to load and resolve WGL/OpenGL functions
mixxx

Revision history for this message
Daniel Schürmann (daschuer) wrote :

Interestingly the 64 bit Mixxx crashes now as well. I can remember I have experienced this crash before. Did we changed something recently or was this an issue caused by a Windows update?
I am pretty sure that I had a working Windows 64 Version when writing this bug: mixxx-2.2.0-alpha-pre-master-PR1632-git6492-release-x64.

The opengl32sw.dll helps here as well. I have now the software rendered waveforms and the QT GL types. For all others I can see only a moving beat grid.

RJ Skerry-Ryan (rryan)
Changed in mixxx:
assignee: nobody → RJ Skerry-Ryan (rryan)
status: Confirmed → In Progress
Revision history for this message
RJ Skerry-Ryan (rryan) wrote :
Revision history for this message
RJ Skerry-Ryan (rryan) wrote :
Revision history for this message
RJ Skerry-Ryan (rryan) wrote :
Revision history for this message
RJ Skerry-Ryan (rryan) wrote :

@Daniel -- could you please try adding libEGL.dll, libGLESv2.dll, and d3dcompiler_47.dll to the 32-bit Mixxx installation folder without opengl32sw.dll? I'm wondering what will happen.

Revision history for this message
Daniel Schürmann (daschuer) wrote :
Download full text (5.7 KiB)

It does also not crash and the moving non GL waveforms are back like in the 64 bit version.
So the situation is slightly improved.
Here is the relevant logfile path:

Debug [Main]: Created QGLWidget. Context Valid: true Sharing: true
Debug [Main]: GLWaveformRendererSignalShader::loadShaders
Warning [Main]: QGLShader::compile(Vertex): ERROR: 0:5: 'gl_TexCoord' : undeclared identifier
ERROR: 0:5: 'gl_TexCoord' : left of '[' is not of type array, matrix, or vector
ERROR: 0:5: 'gl_MultiTexCoord0' : undeclared identifier
ERROR: 0:6: 'gl_ModelViewProjectionMatrix' : undeclared identifier
ERROR: 0:6: 'gl_Vertex' : undeclared identifier
ERROR: 0:6: 'assign' : cannot convert from 'float' to 'Position highp 4-component vector of float'

Debug [Main]: GLWaveformRendererSignalShader::loadShaders - "ERROR: 0:5: 'gl_TexCoord' : undeclared identifier \nERROR: 0:5: 'gl_TexCoord' : left of '[' is not of type array, matrix, or vector \nERROR: 0:5: 'gl_MultiTexCoord0' : undeclared identifier \nERROR: 0:6: 'gl_ModelViewProjectionMatrix' : undeclared identifier \nERROR: 0:6: 'gl_Vertex' : undeclared identifier \nERROR: 0:6: 'assign' : cannot convert from 'float' to 'Position highp 4-component vector of float'\n"
Warning [Main]: failed to init WafeformWidget 7 fall back to "Empty"
Debug [Main]: Created QGLWidget. Context Valid: true Sharing: true
Debug [Main]: GLWaveformRendererSignalShader::loadShaders
Warning [Main]: QGLShader::compile(Vertex): ERROR: 0:5: 'gl_TexCoord' : undeclared identifier
ERROR: 0:5: 'gl_TexCoord' : left of '[' is not of type array, matrix, or vector
ERROR: 0:5: 'gl_MultiTexCoord0' : undeclared identifier
ERROR: 0:6: 'gl_ModelViewProjectionMatrix' : undeclared identifier
ERROR: 0:6: 'gl_Vertex' : undeclared identifier
ERROR: 0:6: 'assign' : cannot convert from 'float' to 'Position highp 4-component vector of float'

Debug [Main]: GLWaveformRendererSignalShader::loadShaders - "ERROR: 0:5: 'gl_TexCoord' : undeclared identifier \nERROR: 0:5: 'gl_TexCoord' : left of '[' is not of type array, matrix, or vector \nERROR: 0:5: 'gl_MultiTexCoord0' : undeclared identifier \nERROR: 0:6: 'gl_ModelViewProjectionMatrix' : undeclared identifier \nERROR: 0:6: 'gl_Vertex' : undeclared identifier \nERROR: 0:6: 'assign' : cannot convert from 'float' to 'Position highp 4-component vector of float'\n"
Warning [Main]: failed to init WafeformWidget 7 fall back to "Empty"
Debug [Main]: Created QGLWidget. Context Valid: true Sharing: true
Debug [Main]: GLWaveformRendererSignalShader::loadShaders
Warning [Main]: QGLShader::compile(Vertex): ERROR: 0:5: 'gl_TexCoord' : undeclared identifier
ERROR: 0:5: 'gl_TexCoord' : left of '[' is not of type array, matrix, or vector
ERROR: 0:5: 'gl_MultiTexCoord0' : undeclared identifier
ERROR: 0:6: 'gl_ModelViewProjectionMatrix' : undeclared identifier
ERROR: 0:6: 'gl_Vertex' : undeclared identifier
ERROR: 0:6: 'assign' : cannot convert from 'float' to 'Position highp 4-component vector of float'

Debug [Main]: GLWaveformRendererSignalShader::loadShaders - "ERROR: 0:5: 'gl_TexCoord' : undeclared identifier \nERROR: 0:5: 'gl_TexCoord' : left of '[' is not of type array, matrix, or vector \nERROR...

Read more...

Revision history for this message
Be (be.ing) wrote :

What is the status of this bug? Has there been work towards a solution?

Revision history for this message
Be (be.ing) wrote :

ping

Revision history for this message
RJ Skerry-Ryan (rryan) wrote :

I believe this PR is a sufficient fix for 2.2:
https://github.com/mixxxdj/mixxx/pull/1816

One further fix we could do is to bundle mesa DLLs for software rendering, but that's not critical. I filed Bug #1798858.

Changed in mixxx:
status: In Progress → Fix Committed
Changed in mixxx:
status: Fix Committed → Fix Released
Revision history for this message
Swiftb0y (swiftb0y) wrote :

Mixxx now uses GitHub for bug tracking. This bug has been migrated to:
https://github.com/mixxxdj/mixxx/issues/9404

lock status: Metadata changes locked and limited to project staff
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.