Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

"critical error" on startup with software gl renderer #6966

Closed
mixxxbot opened this issue Aug 22, 2022 · 37 comments
Closed

"critical error" on startup with software gl renderer #6966

mixxxbot opened this issue Aug 22, 2022 · 37 comments
Labels
Milestone

Comments

@mixxxbot
Copy link
Collaborator

Reported by: ewanuno
Date: 2013-03-26T13:05:21Z
Status: Fix Released
Importance: High
Launchpad Issue: lp1160353
Tags: 1.11
Attachments: spinny_check.patch, error.patch, not_critical.patch, no_invalid_spinny_check.patch


mixxx 1.11 revision 3779 from bzr

i am running mixxx on avlinux 6.0(based on debian squeeze)
using an nvidia geforce fx 5200 (old card) using the nouveau gpl driver, (software renderer)

since i am using the software renderer, i suspect that this is not specific to my graphics card.

i have a laptop with an identical software configuration that does not suffer from this problem which uses an intel graphics card.

i DONT GET THIS PROBLEM WITH THE CLOSED SOURCE NVIDIA DRIVERS,

on startup i get a dialog box with "critical error" in its title but no text or buttons.

Debug [Main]: resize QSize(1024, 577) 
Debug [Main]: Running Mixxx 
Debug [Main]: ControllerManager::getControllerList 
Warning [Main]: QGLShader: could not create shader 
Warning [Main]: Vertex shader for simpleShaderProg (MainVertexShader & PositionOnlyVertexShader) failed to compile
Warning [Main]: QGLShader: could not create shader 
Warning [Main]: Fragment shader for simpleShaderProg (MainFragmentShader & ShockingPinkSrcFragmentShader) failed to compile
Warning [Main]: QGLShaderProgram: could not create shader program 
Critical [Main]: Errors linking simple shader: ""
@mixxxbot mixxxbot added the bug label Aug 22, 2022
@mixxxbot
Copy link
Collaborator Author

Commented by: daschuer
Date: 2013-03-26T15:33:40Z


Hi Ewan,

Does Mixxx crash?

It looks like Mixxx is configured for experimental GLSL Waveforms.

Please change your waveform settings in .mixxx/mixxx.cfg to

[Waveform]
WaveformType 0

and report the original value here.

This issue should be fixed since Bug #⁠981218.
But maybe we have not cached all cases.

@mixxxbot
Copy link
Collaborator Author

Commented by: ewanuno
Date: 2013-03-26T16:26:08Z


yes , mixxx crashes.

@mixxxbot
Copy link
Collaborator Author

Commented by: ewanuno
Date: 2013-03-26T16:26:55Z


i have tried with WaveformType 0

but no change. still the exact same error.

since you ask my mixxx.cfg was like this:

[Waveform]
FrameRate 30
DefaultZoom 3
ZoomSynchronization 0
WaveformType 6
VisualGain_0 1.5
VisualGain_1 1
VisualGain_2 1
VisualGain_3 1
OverviewNormalized 0

@mixxxbot
Copy link
Collaborator Author

Commented by: ewanuno
Date: 2013-03-26T16:22:13Z


i have tried with WaveformType 0

but no change. still the exact same error.

since you ask my mixxx.cfg was like this:

[Waveform]
FrameRate 30
DefaultZoom 3
ZoomSynchronization 0
WaveformType 6
VisualGain_0 1.5
VisualGain_1 1
VisualGain_2 1
VisualGain_3 1
OverviewNormalized 0

On 26 March 2013 16:33, Daniel Schürmann wrote:

Hi Ewan,

Does Mixxx crash?

It looks like Mixxx is configured for experimental GLSL Waveforms.

Please change your waveform settings in .mixxx/mixxx.cfg to

[Waveform]
WaveformType 0

and report the original value here.

This issue should be fixed since Bug #⁠981218.
But maybe we have not cached all cases.

--
You received this bug notification because you are subscribed to the bug
report.
https://bugs.launchpad.net/bugs/1160353

Title:
"critical error" on startup with software gl renderer

Status in Mixxx:
New

Bug description:
mixxx 1.11 revision 3779 from bzr

i am running mixxx on avlinux 6.0(based on debian squeeze)
using an nvidia geforce fx 5200 (old card) using the nouveau gpl driver,
(software renderer)

since i am using the software renderer, i suspect that this is not
specific to my graphics card.

i have a laptop with an identical software configuration that does not
suffer from this problem which uses an intel graphics card.

i DONT GET THIS PROBLEM WITH THE CLOSED SOURCE NVIDIA DRIVERS,

on startup i get a dialog box with "critical error" in its title but
no text or buttons.

Debug [Main]: resize QSize(1024, 577)
Debug [Main]: Running Mixxx
Debug [Main]: ControllerManager::getControllerList
Warning [Main]: QGLShader: could not create shader
Warning [Main]: Vertex shader for simpleShaderProg (MainVertexShader &
PositionOnlyVertexShader) failed to compile
Warning [Main]: QGLShader: could not create shader
Warning [Main]: Fragment shader for simpleShaderProg (MainFragmentShader
& ShockingPinkSrcFragmentShader) failed to compile
Warning [Main]: QGLShaderProgram: could not create shader program
Critical [Main]: Errors linking simple shader: ""

To manage notifications about this bug go to:
https://bugs.launchpad.net/mixxx/+bug/1160353/+subscriptions

--
http://www.ewancolsell.com/

@mixxxbot
Copy link
Collaborator Author

Commented by: kain88-de
Date: 2013-03-26T17:58:59Z


please set the WaveformType to 0. It is still at 6 in your mixxx.cfg

If this still crashes could you also create a backtrace as described
here. This helps us see where exactly mixxx crashes

http://www.mixxx.org/wiki/doku.php/creating_backtraces

I'm not sure if this is a bug in nouveau though. This driver should
enable hardware rendering anyway.

On Tue, 26 Mar 2013 16:26:55 -0000
ewan colsell <email address hidden> wrote:

i have tried with WaveformType 0

but no change. still the exact same error.

since you ask my mixxx.cfg was like this:

[Waveform]
FrameRate 30
DefaultZoom 3
ZoomSynchronization 0
WaveformType 6
VisualGain_0 1.5
VisualGain_1 1
VisualGain_2 1
VisualGain_3 1
OverviewNormalized 0

@mixxxbot
Copy link
Collaborator Author

Commented by: daschuer
Date: 2013-03-26T19:08:30Z


The error messages are initiated from QT itself.
/src/opengl/gl2paintengineex/qglengineshadermanager.cpp line 194.

I can hit the function with gdb when selecting GLWaveform = WaveformType 6. But not with EmptyWaveform = WaveformType 0

So if Mixxx still crashing with WaveformType 0 please provide the log and a backtrack as requested by Max.

@mixxxbot
Copy link
Collaborator Author

Commented by: ewanuno
Date: 2013-03-26T21:40:05Z


sorry for the confusion, i really did set it to WaveformType 0 the config was for daniel who requested the previous config.

i should be more specific, it dosent segfault, it freezes while showing me an empty dialog box with "critical error' in its title.

here is a back trace:

Warning [Main]: QGLShader: could not create shader 
Warning [Main]: Vertex shader for simpleShaderProg (MainVertexShader & PositionOnlyVertexShader) failed to compile
Warning [Main]: QGLShader: could not create shader 
Warning [Main]: Fragment shader for simpleShaderProg (MainFragmentShader & ShockingPinkSrcFragmentShader) failed to compile
Warning [Main]: QGLShaderProgram: could not create shader program 
Critical [Main]: Errors linking simple shader: "" 
^Z
Program received signal SIGTSTP, Stopped (user).
0xb7fe2424 in __kernel_vsyscall ()
(gdb) thread apply all bt

Thread 16 (Thread 0xa6125b70 (LWP 5031)):
#0  0xb7fe2424 in __kernel_vsyscall ()
mixxxdj/mixxx#4910  0xb664f20a in pthread_cond_wait@@GLIBC_2.3.2 ()
   from /lib/i386-linux-gnu/i686/cmov/libpthread.so.0
mixxxdj/mixxx#4911  0xb78c0572 in ?? () from /usr/lib/libQtCore.so.4
mixxxdj/mixxx#4912  0xb78bbaf2 in QMutex::lock() () from /usr/lib/libQtCore.so.4
mixxxdj/mixxx#4913  0x0807fdfa in QMutexLocker::relock (this=0xa6124cc8)
    at /usr/include/qt4/QtCore/qmutex.h:120
mixxxdj/mixxx#4914  0x0807fd76 in QMutexLocker (this=0xa6124cc8, m=0x855e928)
    at /usr/include/qt4/QtCore/qmutex.h:102
mixxxdj/mixxx#4915  0x08136fe2 in MessageHandler (type=QtDebugMsg, 
    input=0xa9feefd0 "New BeatGrid ") at src/main.cpp:86
mixxxdj/mixxx#4916  0xb78b7f65 in qt_message_output(QtMsgType, char const*) ()
   from /usr/lib/libQtCore.so.4
mixxxdj/mixxx#4917  0x08077686 in ~QDebug (this=0xa6124d9c, __in_chrg=<value optimized out>)
    at /usr/include/qt4/QtCore/qdebug.h:85
mixxxdj/mixxx#4918  0x0825c1ae in BeatGrid (this=0xa9f72308, pTrack=0xad4c38b8, 
    pByteArray=0x0, __in_chrg=<value optimized out>, 
    __vtt_parm=<value optimized out>) at src/track/beatgrid.cpp:43
mixxxdj/mixxx#4919 0x08260e45 in BeatFactory::makeBeatGrid (pTrack=0xad4c38b8, 
    dBpm=109.70999908447266, dFirstBeatSample=0)
---Type <return> to continue, or q <return> to quit---
    at src/track/beatfactory.cpp:35
mixxxdj/mixxx#4920 0x08259b76 in TrackInfoObject::setBpm (this=0xad4c38b8, 
    f=109.70999908447266) at src/trackinfoobject.cpp:335
mixxxdj/mixxx#4921 0x0821ad44 in SoundSourceProxy::ParseHeader (p=0xad4c38b8)
    at src/soundsourceproxy.cpp:339
mixxxdj/mixxx#4922 0x08258f6e in TrackInfoObject::parse (this=0xad4c38b8)
    at src/trackinfoobject.cpp:198
mixxxdj/mixxx#4923 0x08257d5d in TrackInfoObject::initialize (this=0xad4c38b8, 
    parseHeader=true) at src/trackinfoobject.cpp:142
mixxxdj/mixxx#4924 0x08256881 in TrackInfoObject (this=0xad4c38b8, sLocation=..., 
    parseHeader=true) at src/trackinfoobject.cpp:43
mixxxdj/mixxx#4925 0x0817acb6 in TrackCollection::importDirectory (this=0x8baf528, 
    directory=..., trackDao=..., nameFilters=..., cancel=0xa9f856ac)
    at src/library/trackcollection.cpp:158
mixxxdj/mixxx#4926 0x081da3c8 in LibraryScanner::recursiveScan (this=0xa9f855f8, 
    dirPath=..., verifiedDirectories=...)
    at src/library/libraryscanner.cpp:379
mixxxdj/mixxx#4927 0x081da505 in LibraryScanner::recursiveScan (this=0xa9f855f8, 
    dirPath=..., verifiedDirectories=...)
    at src/library/libraryscanner.cpp:404
mixxxdj/mixxx#4928 0x081da505 in LibraryScanner::recursiveScan (this=0xa9f855f8, 
    dirPath=..., verifiedDirectories=...)
---Type <return> to continue, or q <return> to quit---
    at src/library/libraryscanner.cpp:404
mixxxdj/mixxx#4929 0x081d98f9 in LibraryScanner::run (this=0xa9f855f8)
    at src/library/libraryscanner.cpp:227
mixxxdj/mixxx#4930 0xb78c0fbe in ?? () from /usr/lib/libQtCore.so.4
mixxxdj/mixxx#4931 0xb664ac39 in start_thread ()
   from /lib/i386-linux-gnu/i686/cmov/libpthread.so.0
mixxxdj/mixxx#4932 0xb62f596e in clone () from /lib/i386-linux-gnu/i686/cmov/libc.so.6

Thread 15 (Thread 0xa86fcb70 (LWP 5030)):
#0  0xb7fe2424 in __kernel_vsyscall ()
mixxxdj/mixxx#4910  0xb664f20a in pthread_cond_wait@@GLIBC_2.3.2 ()
   from /lib/i386-linux-gnu/i686/cmov/libpthread.so.0
mixxxdj/mixxx#4911  0xb78c1fb7 in QWaitCondition::wait(QMutex*, unsigned long) ()
   from /usr/lib/libQtCore.so.4
mixxxdj/mixxx#4912  0x081e0786 in SearchThread::run (this=0xa9fd4378)
    at src/library/searchthread.cpp:46
mixxxdj/mixxx#4913  0xb78c0fbe in ?? () from /usr/lib/libQtCore.so.4
mixxxdj/mixxx#4914  0xb664ac39 in start_thread ()
   from /lib/i386-linux-gnu/i686/cmov/libpthread.so.0
mixxxdj/mixxx#4915  0xb62f596e in clone () from /lib/i386-linux-gnu/i686/cmov/libc.so.6

Thread 14 (Thread 0xa8efdb70 (LWP 5029)):
---Type <return> to continue, or q <return> to quit---
#0  0xb7fe2424 in __kernel_vsyscall ()
mixxxdj/mixxx#4910  0xb664f20a in pthread_cond_wait@@GLIBC_2.3.2 ()
   from /lib/i386-linux-gnu/i686/cmov/libpthread.so.0
mixxxdj/mixxx#4911  0xb78c1fb7 in QWaitCondition::wait(QMutex*, unsigned long) ()
   from /usr/lib/libQtCore.so.4
mixxxdj/mixxx#4912  0x081e0786 in SearchThread::run (this=0xa9f96910)
    at src/library/searchthread.cpp:46
mixxxdj/mixxx#4913  0xb78c0fbe in ?? () from /usr/lib/libQtCore.so.4
mixxxdj/mixxx#4914  0xb664ac39 in start_thread ()
   from /lib/i386-linux-gnu/i686/cmov/libpthread.so.0
mixxxdj/mixxx#4915  0xb62f596e in clone () from /lib/i386-linux-gnu/i686/cmov/libc.so.6

Thread 13 (Thread 0xa96feb70 (LWP 5028)):
#0  0xb7fe2424 in __kernel_vsyscall ()
mixxxdj/mixxx#4910  0xb664f20a in pthread_cond_wait@@GLIBC_2.3.2 ()
   from /lib/i386-linux-gnu/i686/cmov/libpthread.so.0
mixxxdj/mixxx#4911  0xb78c1fb7 in QWaitCondition::wait(QMutex*, unsigned long) ()
   from /usr/lib/libQtCore.so.4
mixxxdj/mixxx#4912  0x081e0786 in SearchThread::run (this=0xa9f3c790)
    at src/library/searchthread.cpp:46
mixxxdj/mixxx#4913  0xb78c0fbe in ?? () from /usr/lib/libQtCore.so.4
mixxxdj/mixxx#4914  0xb664ac39 in start_thread ()
---Type <return> to continue, or q <return> to quit---
   from /lib/i386-linux-gnu/i686/cmov/libpthread.so.0
mixxxdj/mixxx#4915  0xb62f596e in clone () from /lib/i386-linux-gnu/i686/cmov/libc.so.6

Thread 12 (Thread 0xa9effb70 (LWP 5027)):
#0  0xb7fe2424 in __kernel_vsyscall ()
mixxxdj/mixxx#4910  0xb664f20a in pthread_cond_wait@@GLIBC_2.3.2 ()
   from /lib/i386-linux-gnu/i686/cmov/libpthread.so.0
mixxxdj/mixxx#4911  0xb78c1fb7 in QWaitCondition::wait(QMutex*, unsigned long) ()
   from /usr/lib/libQtCore.so.4
mixxxdj/mixxx#4912  0x081e0786 in SearchThread::run (this=0xa9f030e8)
    at src/library/searchthread.cpp:46
mixxxdj/mixxx#4913  0xb78c0fbe in ?? () from /usr/lib/libQtCore.so.4
mixxxdj/mixxx#4914  0xb664ac39 in start_thread ()
   from /lib/i386-linux-gnu/i686/cmov/libpthread.so.0
mixxxdj/mixxx#4915  0xb62f596e in clone () from /lib/i386-linux-gnu/i686/cmov/libc.so.6

Thread 11 (Thread 0xaa8f8b70 (LWP 5026)):
#0  0xb7fe2424 in __kernel_vsyscall ()
mixxxdj/mixxx#4910  0xb664f20a in pthread_cond_wait@@GLIBC_2.3.2 ()
   from /lib/i386-linux-gnu/i686/cmov/libpthread.so.0
mixxxdj/mixxx#4911  0xb78c1fb7 in QWaitCondition::wait(QMutex*, unsigned long) ()
   from /usr/lib/libQtCore.so.4
---Type <return> to continue, or q <return> to quit---
mixxxdj/mixxx#4912  0x081e0786 in SearchThread::run (this=0xad4c6aa8)
    at src/library/searchthread.cpp:46
mixxxdj/mixxx#4913  0xb78c0fbe in ?? () from /usr/lib/libQtCore.so.4
mixxxdj/mixxx#4914  0xb664ac39 in start_thread ()
   from /lib/i386-linux-gnu/i686/cmov/libpthread.so.0
mixxxdj/mixxx#4915  0xb62f596e in clone () from /lib/i386-linux-gnu/i686/cmov/libc.so.6

Thread 10 (Thread 0xab0f9b70 (LWP 5025)):
#0  0xb7fe2424 in __kernel_vsyscall ()
mixxxdj/mixxx#4910  0xb664f20a in pthread_cond_wait@@GLIBC_2.3.2 ()
   from /lib/i386-linux-gnu/i686/cmov/libpthread.so.0
mixxxdj/mixxx#4911  0xb78c1fb7 in QWaitCondition::wait(QMutex*, unsigned long) ()
   from /usr/lib/libQtCore.so.4
mixxxdj/mixxx#4912  0x081e0786 in SearchThread::run (this=0xad4a3c88)
    at src/library/searchthread.cpp:46
mixxxdj/mixxx#4913  0xb78c0fbe in ?? () from /usr/lib/libQtCore.so.4
mixxxdj/mixxx#4914  0xb664ac39 in start_thread ()
   from /lib/i386-linux-gnu/i686/cmov/libpthread.so.0
mixxxdj/mixxx#4915  0xb62f596e in clone () from /lib/i386-linux-gnu/i686/cmov/libc.so.6

Thread 9 (Thread 0xac897b70 (LWP 5024)):
#0  0xb7fe2424 in __kernel_vsyscall ()
---Type <return> to continue, or q <return> to quit---
mixxxdj/mixxx#4910  0xb664f703 in pthread_cond_timedwait@@GLIBC_2.3.2 ()
   from /lib/i386-linux-gnu/i686/cmov/libpthread.so.0
mixxxdj/mixxx#4911  0xb78c1f3f in QWaitCondition::wait(QMutex*, unsigned long) ()
   from /usr/lib/libQtCore.so.4
mixxxdj/mixxx#4912  0xb78b5f6b in ?? () from /usr/lib/libQtCore.so.4
mixxxdj/mixxx#4913  0xb78c0fbe in ?? () from /usr/lib/libQtCore.so.4
mixxxdj/mixxx#4914  0xb664ac39 in start_thread ()
   from /lib/i386-linux-gnu/i686/cmov/libpthread.so.0
mixxxdj/mixxx#4915  0xb62f596e in clone () from /lib/i386-linux-gnu/i686/cmov/libc.so.6

Thread 8 (Thread 0xad098b70 (LWP 5023)):
#0  0xb7fe2424 in __kernel_vsyscall ()
mixxxdj/mixxx#4910  0xb62e7f86 in poll () from /lib/i386-linux-gnu/i686/cmov/libc.so.6
mixxxdj/mixxx#4911  0xb7fa1973 in ?? () from /usr/lib/i386-linux-gnu/libportaudio.so.2
mixxxdj/mixxx#4912  0xb7fa2930 in ?? () from /usr/lib/i386-linux-gnu/libportaudio.so.2
mixxxdj/mixxx#4913  0xb664ac39 in start_thread ()
   from /lib/i386-linux-gnu/i686/cmov/libpthread.so.0
mixxxdj/mixxx#4914  0xb62f596e in clone () from /lib/i386-linux-gnu/i686/cmov/libc.so.6

Thread 7 (Thread 0xadd20b70 (LWP 5022)):
#0  0xb7fe2424 in __kernel_vsyscall ()
mixxxdj/mixxx#4910  0xb62e7f86 in poll () from /lib/i386-linux-gnu/i686/cmov/libc.so.6
---Type <return> to continue, or q <return> to quit---
mixxxdj/mixxx#4911  0xb605613b in g_poll () from /lib/i386-linux-gnu/libglib-2.0.so.0
mixxxdj/mixxx#4912  0xb60479f0 in ?? () from /lib/i386-linux-gnu/libglib-2.0.so.0
mixxxdj/mixxx#4913  0xb6047b51 in g_main_context_iteration ()
   from /lib/i386-linux-gnu/libglib-2.0.so.0
mixxxdj/mixxx#4914  0xb79e9075 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQtCore.so.4
mixxxdj/mixxx#4915  0xb79bbae9 in QEventLoop::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQtCore.so.4
mixxxdj/mixxx#4916  0xb79bbf3a in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) ()
   from /usr/lib/libQtCore.so.4
mixxxdj/mixxx#4917  0xb78be629 in QThread::exec() () from /usr/lib/libQtCore.so.4
mixxxdj/mixxx#4918  0xb78be6cd in QThread::run() () from /usr/lib/libQtCore.so.4
mixxxdj/mixxx#4919 0xb78c0fbe in ?? () from /usr/lib/libQtCore.so.4
mixxxdj/mixxx#4920 0xb664ac39 in start_thread ()
   from /lib/i386-linux-gnu/i686/cmov/libpthread.so.0
mixxxdj/mixxx#4921 0xb62f596e in clone () from /lib/i386-linux-gnu/i686/cmov/libc.so.6

Thread 6 (Thread 0xae521b70 (LWP 5021)):
#0  0xb7fe2424 in __kernel_vsyscall ()
mixxxdj/mixxx#4910  0xb664f20a in pthread_cond_wait@@GLIBC_2.3.2 ()
   from /lib/i386-linux-gnu/i686/cmov/libpthread.so.0
mixxxdj/mixxx#4911  0xb78c1fb7 in QWaitCondition::wait(QMutex*, unsigned long) ()
---Type <return> to continue, or q <return> to quit---
   from /usr/lib/libQtCore.so.4
mixxxdj/mixxx#4912  0x0810a249 in AnalyserQueue::dequeueNextBlocking (this=0x8c2bfc8)
    at src/analyserqueue.cpp:100
mixxxdj/mixxx#4913  0x0810abc6 in AnalyserQueue::run (this=0x8c2bfc8)
    at src/analyserqueue.cpp:271
mixxxdj/mixxx#4914  0xb78c0fbe in ?? () from /usr/lib/libQtCore.so.4
mixxxdj/mixxx#4915  0xb664ac39 in start_thread ()
   from /lib/i386-linux-gnu/i686/cmov/libpthread.so.0
mixxxdj/mixxx#4916  0xb62f596e in clone () from /lib/i386-linux-gnu/i686/cmov/libc.so.6

Thread 5 (Thread 0xb37b0b70 (LWP 5020)):
#0  0xb7fe2424 in __kernel_vsyscall ()
mixxxdj/mixxx#4910  0xb664f20a in pthread_cond_wait@@GLIBC_2.3.2 ()
   from /lib/i386-linux-gnu/i686/cmov/libpthread.so.0
mixxxdj/mixxx#4911  0xb78c1fb7 in QWaitCondition::wait(QMutex*, unsigned long) ()
   from /usr/lib/libQtCore.so.4
mixxxdj/mixxx#4912  0x081adf58 in BrowseThread::run (this=0x8bfe8b8)
    at src/library/browse/browsethread.cpp:82
mixxxdj/mixxx#4913  0xb78c0fbe in ?? () from /usr/lib/libQtCore.so.4
mixxxdj/mixxx#4914  0xb664ac39 in start_thread ()
   from /lib/i386-linux-gnu/i686/cmov/libpthread.so.0
mixxxdj/mixxx#4915  0xb62f596e in clone () from /lib/i386-linux-gnu/i686/cmov/libc.so.6
---Type <return> to continue, or q <return> to quit---

Thread 3 (Thread 0xb3fb1b70 (LWP 5016)):
#0  0xb7fe2424 in __kernel_vsyscall ()
mixxxdj/mixxx#4910  0xb664f20a in pthread_cond_wait@@GLIBC_2.3.2 ()
   from /lib/i386-linux-gnu/i686/cmov/libpthread.so.0
mixxxdj/mixxx#4911  0xb78c1fb7 in QWaitCondition::wait(QMutex*, unsigned long) ()
   from /usr/lib/libQtCore.so.4
mixxxdj/mixxx#4912  0x080f1d71 in EngineSideChain::run (this=0x86eb8b8)
    at src/engine/enginesidechain.cpp:163
mixxxdj/mixxx#4913  0xb78c0fbe in ?? () from /usr/lib/libQtCore.so.4
mixxxdj/mixxx#4914  0xb664ac39 in start_thread ()
   from /lib/i386-linux-gnu/i686/cmov/libpthread.so.0
mixxxdj/mixxx#4915  0xb62f596e in clone () from /lib/i386-linux-gnu/i686/cmov/libc.so.6

Thread 2 (Thread 0xb496eb70 (LWP 5015)):
#0  0xb7fe2424 in __kernel_vsyscall ()
mixxxdj/mixxx#4910  0xb664f20a in pthread_cond_wait@@GLIBC_2.3.2 ()
   from /lib/i386-linux-gnu/i686/cmov/libpthread.so.0
mixxxdj/mixxx#4911  0xb78c1fb7 in QWaitCondition::wait(QMutex*, unsigned long) ()
   from /usr/lib/libQtCore.so.4
mixxxdj/mixxx#4912  0x080e2ba6 in EngineWorkerScheduler::run (this=0x86dd518)
    at src/engine/engineworkerscheduler.cpp:68
---Type <return> to continue, or q <return> to quit---
mixxxdj/mixxx#4913  0xb78c0fbe in ?? () from /usr/lib/libQtCore.so.4
mixxxdj/mixxx#4914  0xb664ac39 in start_thread ()
   from /lib/i386-linux-gnu/i686/cmov/libpthread.so.0
mixxxdj/mixxx#4915  0xb62f596e in clone () from /lib/i386-linux-gnu/i686/cmov/libc.so.6

Thread 1 (Thread 0xb5af9720 (LWP 5012)):
#0  0xb7fe2424 in __kernel_vsyscall ()
mixxxdj/mixxx#4910  0xb664f20a in pthread_cond_wait@@GLIBC_2.3.2 ()
   from /lib/i386-linux-gnu/i686/cmov/libpthread.so.0
mixxxdj/mixxx#4911  0xb78c0572 in ?? () from /usr/lib/libQtCore.so.4
mixxxdj/mixxx#4912  0xb78bbaf2 in QMutex::lock() () from /usr/lib/libQtCore.so.4
mixxxdj/mixxx#4913  0x0807fdfa in QMutexLocker::relock (this=0xbfffc968)
    at /usr/include/qt4/QtCore/qmutex.h:120
mixxxdj/mixxx#4914  0x0807fd76 in QMutexLocker (this=0xbfffc968, m=0x855e928)
    at /usr/include/qt4/QtCore/qmutex.h:102
mixxxdj/mixxx#4915  0x08136fe2 in MessageHandler (type=QtWarningMsg, 
    input=0x9c3c128 "QGLShader: could not create shader ") at src/main.cpp:86
mixxxdj/mixxx#4916  0xb78b7f65 in qt_message_output(QtMsgType, char const*) ()
   from /usr/lib/libQtCore.so.4
mixxxdj/mixxx#4917  0xb6d12efd in QDebug::~QDebug() () from /usr/lib/libQtOpenGL.so.4
mixxxdj/mixxx#4918  0xb6d3a9cb in ?? () from /usr/lib/libQtOpenGL.so.4
mixxxdj/mixxx#4919 0xb6d3ab16 in QGLShader::QGLShader(QFlags<QGLShader::ShaderTypeBit>, QGLCon---Type <return> to continue, or q <return> to quit---
text const*, QObject*) () from /usr/lib/libQtOpenGL.so.4
mixxxdj/mixxx#4920 0xb6d4d4cb in ?? () from /usr/lib/libQtOpenGL.so.4
mixxxdj/mixxx#4921 0xb6d4dfe8 in ?? () from /usr/lib/libQtOpenGL.so.4
mixxxdj/mixxx#4922 0xb6d4e0cf in QGLEngineShaderManager::QGLEngineShaderManager(QGLContext*)
    () from /usr/lib/libQtOpenGL.so.4
mixxxdj/mixxx#4923 0xb6d5229d in QGL2PaintEngineEx::begin(QPaintDevice*) ()
   from /usr/lib/libQtOpenGL.so.4
mixxxdj/mixxx#4924 0xb7075852 in QPainter::begin(QPaintDevice*) ()
   from /usr/lib/libQtGui.so.4
mixxxdj/mixxx#4925 0xb7076028 in QPainter::QPainter(QPaintDevice*) ()
   from /usr/lib/libQtGui.so.4
mixxxdj/mixxx#4926 0x08163e4c in WSpinny::paintEvent (this=0x97e39c0, e=0xbfffd3a4)
    at src/widget/wspinny.cpp:156
mixxxdj/mixxx#4927 0xb6f64686 in QWidget::event(QEvent*) () from /usr/lib/libQtGui.so.4
mixxxdj/mixxx#4928 0xb6d068f9 in QGLWidget::event(QEvent*) () from /usr/lib/libQtOpenGL.so.4
mixxxdj/mixxx#4929 0xb6f065cc in QApplicationPrivate::notify_helper(QObject*, QEvent*) ()
   from /usr/lib/libQtGui.so.4
mixxxdj/mixxx#4930 0xb6f0d1f9 in QApplication::notify(QObject*, QEvent*) ()
   from /usr/lib/libQtGui.so.4
mixxxdj/mixxx#4931 0xb79bd4cb in QCoreApplication::notifyInternal(QObject*, QEvent*) ()
   from /usr/lib/libQtCore.so.4
mixxxdj/mixxx#4932 0xb6f6d976 in QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPo---Type <return> to continue, or q <return> to quit---
int const&, int, QPainter*, QWidgetBackingStore*) ()
   from /usr/lib/libQtGui.so.4
mixxxdj/mixxx#4933 0xb7141726 in QWidgetPrivate::repaint_sys(QRegion const&) ()
   from /usr/lib/libQtGui.so.4
mixxxdj/mixxx#4934 0xb6f5e11e in QWidgetPrivate::syncBackingStore() ()
   from /usr/lib/libQtGui.so.4
mixxxdj/mixxx#4935 0xb6f64e46 in QWidget::event(QEvent*) () from /usr/lib/libQtGui.so.4
mixxxdj/mixxx#4936 0xb6d068f9 in QGLWidget::event(QEvent*) () from /usr/lib/libQtOpenGL.so.4
mixxxdj/mixxx#4937 0xb6f065cc in QApplicationPrivate::notify_helper(QObject*, QEvent*) ()
   from /usr/lib/libQtGui.so.4
mixxxdj/mixxx#4938 0xb6f0d1f9 in QApplication::notify(QObject*, QEvent*) ()
   from /usr/lib/libQtGui.so.4
mixxxdj/mixxx#4939 0xb79bd4cb in QCoreApplication::notifyInternal(QObject*, QEvent*) ()
   from /usr/lib/libQtCore.so.4
mixxxdj/mixxx#4940 0xb79c0f2c in QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) () from /usr/lib/libQtCore.so.4
mixxxdj/mixxx#4941 0xb79c10ad in QCoreApplication::sendPostedEvents(QObject*, int) ()
   from /usr/lib/libQtCore.so.4
mixxxdj/mixxx#4942 0xb79e957f in ?? () from /usr/lib/libQtCore.so.4
mixxxdj/mixxx#4943 0xb60476d3 in g_main_context_dispatch ()
   from /lib/i386-linux-gnu/libglib-2.0.so.0
mixxxdj/mixxx#4944 0xb6047a70 in ?? () from /lib/i386-linux-gnu/libglib-2.0.so.0
---Type <return> to continue, or q <return> to quit---
mixxxdj/mixxx#4945 0xb6047b51 in g_main_context_iteration ()
   from /lib/i386-linux-gnu/libglib-2.0.so.0
mixxxdj/mixxx#4946 0xb79e9075 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQtCore.so.4
mixxxdj/mixxx#4947 0xb6fc4ed5 in ?? () from /usr/lib/libQtGui.so.4
mixxxdj/mixxx#4948 0xb79bbae9 in QEventLoop::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQtCore.so.4
mixxxdj/mixxx#4949 0xb79bbf3a in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) ()
   from /usr/lib/libQtCore.so.4
mixxxdj/mixxx#4950 0xb7443723 in QDialog::exec() () from /usr/lib/libQtGui.so.4
mixxxdj/mixxx#4951 0x08147920 in ErrorDialogHandler::errorDialog (this=0x85d7ee0, 
    pProps=0x93cfd48) at src/errordialoghandler.cpp:167
mixxxdj/mixxx#4952 0x082d3a24 in ErrorDialogHandler::qt_metacall (this=0x85d7ee0, 
    _c=QMetaObject::InvokeMetaMethod, _id=2, _a=0xbfffdf28)
    at lin32_build/moc_errordialoghandler.cc:84
mixxxdj/mixxx#4953 0xb79c27aa in QMetaObject::metacall(QObject*, QMetaObject::Call, int, void**) () from /usr/lib/libQtCore.so.4
mixxxdj/mixxx#4954 0xb79d11bb in QMetaObject::activate(QObject*, QMetaObject const*, int, void**) () from /usr/lib/libQtCore.so.4
mixxxdj/mixxx#4955 0x082d3ad2 in ErrorDialogHandler::showErrorDialog (this=0x85d7ee0, 
    _t1=0x93cfd48) at lin32_build/moc_errordialoghandler.cc:97
mixxxdj/mixxx#4956 0x081475c7 in ErrorDialogHandler::requestErrorDialog (this=0x85d7ee0, 
---Type <return> to continue, or q <return> to quit---
    props=0x93cfd48) at src/errordialoghandler.cpp:117
mixxxdj/mixxx#4957 0x08147435 in ErrorDialogHandler::requestErrorDialog (this=0x85d7ee0, 
    type=DLG_CRITICAL, message=...) at src/errordialoghandler.cpp:98
mixxxdj/mixxx#4958 0x081372c2 in MessageHandler (type=QtCriticalMsg, 
    input=0x92a87a0 "Errors linking simple shader: \"\" ") at src/main.cpp:134
mixxxdj/mixxx#4959 0xb78b7f65 in qt_message_output(QtMsgType, char const*) ()
   from /usr/lib/libQtCore.so.4
mixxxdj/mixxx#4960 0xb6d4dcb0 in ?? () from /usr/lib/libQtOpenGL.so.4
mixxxdj/mixxx#4961 0xb6d4dfe8 in ?? () from /usr/lib/libQtOpenGL.so.4
mixxxdj/mixxx#4962 0xb6d4e0cf in QGLEngineShaderManager::QGLEngineShaderManager(QGLContext*)
    () from /usr/lib/libQtOpenGL.so.4
mixxxdj/mixxx#4963 0xb6d5229d in QGL2PaintEngineEx::begin(QPaintDevice*) ()
   from /usr/lib/libQtOpenGL.so.4
mixxxdj/mixxx#4964 0xb7075852 in QPainter::begin(QPaintDevice*) ()
   from /usr/lib/libQtGui.so.4
mixxxdj/mixxx#4965 0xb7076028 in QPainter::QPainter(QPaintDevice*) ()
   from /usr/lib/libQtGui.so.4
mixxxdj/mixxx#4966 0x08163e4c in WSpinny::paintEvent (this=0x9412400, e=0xbfffe944)
    at src/widget/wspinny.cpp:156
mixxxdj/mixxx#4967 0xb6f64686 in QWidget::event(QEvent*) () from /usr/lib/libQtGui.so.4
mixxxdj/mixxx#4968 0xb6d068f9 in QGLWidget::event(QEvent*) () from /usr/lib/libQtOpenGL.so.4
mixxxdj/mixxx#4969 0xb6f065cc in QApplicationPrivate::notify_helper(QObject*, QEvent*) ()
---Type <return> to continue, or q <return> to quit---
   from /usr/lib/libQtGui.so.4
mixxxdj/mixxx#4970 0xb6f0d1f9 in QApplication::notify(QObject*, QEvent*) ()
   from /usr/lib/libQtGui.so.4
mixxxdj/mixxx#4971 0xb79bd4cb in QCoreApplication::notifyInternal(QObject*, QEvent*) ()
   from /usr/lib/libQtCore.so.4
mixxxdj/mixxx#4972 0xb6f6d976 in QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) ()
   from /usr/lib/libQtGui.so.4
mixxxdj/mixxx#4973 0xb7141726 in QWidgetPrivate::repaint_sys(QRegion const&) ()
   from /usr/lib/libQtGui.so.4
mixxxdj/mixxx#4974 0xb6f5e11e in QWidgetPrivate::syncBackingStore() ()
   from /usr/lib/libQtGui.so.4
mixxxdj/mixxx#4975 0xb6f64e46 in QWidget::event(QEvent*) () from /usr/lib/libQtGui.so.4
mixxxdj/mixxx#4976 0xb6d068f9 in QGLWidget::event(QEvent*) () from /usr/lib/libQtOpenGL.so.4
mixxxdj/mixxx#4977 0xb6f065cc in QApplicationPrivate::notify_helper(QObject*, QEvent*) ()
   from /usr/lib/libQtGui.so.4
mixxxdj/mixxx#4978 0xb6f0d1f9 in QApplication::notify(QObject*, QEvent*) ()
   from /usr/lib/libQtGui.so.4
mixxxdj/mixxx#4979 0xb79bd4cb in QCoreApplication::notifyInternal(QObject*, QEvent*) ()
   from /usr/lib/libQtCore.so.4
mixxxdj/mixxx#4980 0xb79c0f2c in QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) () from /usr/lib/libQtCore.so.4
---Type <return> to continue, or q <return> to quit---
mixxxdj/mixxx#4981 0xb79c10ad in QCoreApplication::sendPostedEvents(QObject*, int) ()
   from /usr/lib/libQtCore.so.4
mixxxdj/mixxx#4982 0xb79e957f in ?? () from /usr/lib/libQtCore.so.4
mixxxdj/mixxx#4983 0xb60476d3 in g_main_context_dispatch ()
   from /lib/i386-linux-gnu/libglib-2.0.so.0
mixxxdj/mixxx#4984 0xb6047a70 in ?? () from /lib/i386-linux-gnu/libglib-2.0.so.0
mixxxdj/mixxx#4985 0xb6047b51 in g_main_context_iteration ()
   from /lib/i386-linux-gnu/libglib-2.0.so.0
mixxxdj/mixxx#4986 0xb79e9075 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQtCore.so.4
mixxxdj/mixxx#4987 0xb6fc4ed5 in ?? () from /usr/lib/libQtGui.so.4
mixxxdj/mixxx#4988 0xb79bbae9 in QEventLoop::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQtCore.so.4
mixxxdj/mixxx#4989 0xb79bbf3a in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) ()
   from /usr/lib/libQtCore.so.4
mixxxdj/mixxx#4990 0xb79c116f in QCoreApplication::exec() () from /usr/lib/libQtCore.so.4
mixxxdj/mixxx#4991 0xb6f06667 in QApplication::exec() () from /usr/lib/libQtGui.so.4
mixxxdj/mixxx#4992 0x08137800 in main (argc=1, argv=0xbffff4c4) at src/main.cpp:305
(gdb) 
(gdb) 

@mixxxbot
Copy link
Collaborator Author

Commented by: kain88-de
Date: 2013-04-04T11:08:03Z


In your config set show_spinny to zero at every occurence , their should be 2

The main problem here is in noveau (google give a lot of error with your card), but mixxx should also fail more gracefully when we the spinny widgets fail

@mixxxbot
Copy link
Collaborator Author

Commented by: daschuer
Date: 2013-04-04T13:01:03Z


Ok, I think I have narrowed it down.

The deadlock is, is caused by Mixxx itself, because it tries to display the "Critical Error" Message Box from the Shinny Paint event.
This causes a a new Spinny paint event. A paint event within a paint event seams to lead to a deadlock.

We exit Mixxx in any case on after closing the critical error message so the deadlock problem is a minor one.
An without the deadlock we where not able to get such a significant backtrace :-).

So I will try Max's idea to check http://qt-project.org/doc/qt-4.8/qglwidget.html#isValid before painting.

@mixxxbot
Copy link
Collaborator Author

Commented by: rryan
Date: 2013-04-04T14:25:58Z


Nice work! We've had an issue like this before related to the waveforms in
a much older version of Mixxx. I can't seem to find the bug report though.

On Thu, Apr 4, 2013 at 9:01 AM, Daniel Schürmann <

wrote:

Ok, I think I have narrowed it down.

The deadlock is, is caused by Mixxx itself, because it tries to display
the "Critical Error" Message Box from the Shinny Paint event.
This causes a a new Spinny paint event. A paint event within a paint event
seams to lead to a deadlock.

We exit Mixxx in any case on after closing the critical error message so
the deadlock problem is a minor one.
An without the deadlock we where not able to get such a significant
backtrace :-).

So I will try Max's idea to check
http://qt-project.org/doc/qt-4.8/qglwidget.html#isValid before painting.

** Changed in: mixxx
Assignee: (unassigned) => Daniel Schürmann (daschuer)

** Changed in: mixxx
Status: New => In Progress

** Changed in: mixxx
Importance: Undecided => High

--
You received this bug notification because you are a member of Mixxx
Development Team, which is subscribed to Mixxx.
https://bugs.launchpad.net/bugs/1160353

Title:
"critical error" on startup with software gl renderer

To manage notifications about this bug go to:
https://bugs.launchpad.net/mixxx/+bug/1160353/+subscriptions

@mixxxbot
Copy link
Collaborator Author

Commented by: rryan
Date: 2013-04-04T14:37:22Z


Found it -- Bug #⁠517373. This was because our warning handler would show a
message box on qWarning which would sometimes happen when a paint event was
already active. So that's not really related to what's going on here.

I agree we should fix that deadlock but like you said it won't actually fix
this bug because we were already in the qCritical handler which would have
aborted us. Is a shader link failure really a quit-worthy event? Is that
just because Qt qCritical's it? Maybe we should stop quitting Mixxx on
qCritical and just explicitly quit everywhere Mixxx has a qCritical that is
quit-worthy.

On Thu, Apr 4, 2013 at 10:25 AM, RJ Ryan wrote:

Nice work! We've had an issue like this before related to the waveforms in
a much older version of Mixxx. I can't seem to find the bug report though.

On Thu, Apr 4, 2013 at 9:01 AM, Daniel Schürmann <
> wrote:

Ok, I think I have narrowed it down.

The deadlock is, is caused by Mixxx itself, because it tries to display
the "Critical Error" Message Box from the Shinny Paint event.
This causes a a new Spinny paint event. A paint event within a paint
event seams to lead to a deadlock.

We exit Mixxx in any case on after closing the critical error message so
the deadlock problem is a minor one.
An without the deadlock we where not able to get such a significant
backtrace :-).

So I will try Max's idea to check
http://qt-project.org/doc/qt-4.8/qglwidget.html#isValid before painting.

** Changed in: mixxx
Assignee: (unassigned) => Daniel Schürmann (daschuer)

** Changed in: mixxx
Status: New => In Progress

** Changed in: mixxx
Importance: Undecided => High

--
You received this bug notification because you are a member of Mixxx
Development Team, which is subscribed to Mixxx.
https://bugs.launchpad.net/bugs/1160353

Title:
"critical error" on startup with software gl renderer

To manage notifications about this bug go to:
https://bugs.launchpad.net/mixxx/+bug/1160353/+subscriptions

@mixxxbot
Copy link
Collaborator Author

Commented by: daschuer
Date: 2013-04-04T20:08:00Z
Attachments: spinny_check.patch


The attached patch checks if Wspinny is valid, if not an empty group widget is shown.
the patch is against lp:mixxx/1.11
You can add it with
bzr patch spinny_check.patch

Please search you mixxx.log for
WSpinny() and provide the whole line.

I would like to commit this patch in any case to 1.11 even if it does not fix the problem, because checking if WSinny is valid is a good idea anyhow. OK?

@mixxxbot
Copy link
Collaborator Author

Commented by: rryan
Date: 2013-04-04T20:34:25Z


(again, ignoring the deadlock in the messagebox code -- we should still fix that)

Hi guys -- I think there really isn't a problem with the invalid QGLWidget here. Even if the QGLWidget is invalid it won't cause problems for us, the paint commands should just fail. The problem is that the Qt source code has qCritical() calls in it for debug output like failing to compile a shader. Qt doesn't expect that a qCritical will result in an exit or abort. This is something we do in Mixxx from src/errordialoghandler.cpp.

I propose that instead we remove exit/abort on qCritical from Mixxx and instead make every part of Mixxx that uses qCritical also exit explicitly if it wants to. Currently there are only 3 places that this happens:

  1. If the ConfigObject config file cannot be found.
  2. If the skin directory cannot be found.
  3. If a script error occurs in debug mode.

I think case #⁠3 should actually be removed in favor of a script console where developers can see the errors in their scripts.

If we don't remove the abort/exit on qCritical then some other Qt code that uses qCritical will cause us to crash in the future.

@mixxxbot
Copy link
Collaborator Author

Commented by: kain88-de
Date: 2013-04-04T21:01:51Z
Attachments: error.patch


did you have something like this in mind?

@mixxxbot
Copy link
Collaborator Author

Commented by: rryan
Date: 2013-04-04T21:23:24Z
Attachments: not_critical.patch


Actually something a little more involved like this:

@mixxxbot
Copy link
Collaborator Author

Commented by: kain88-de
Date: 2013-04-04T21:51:17Z


rryan - LGTM

Daniel - I think it would be better to display some text like 'video driver does not support openGL' when the dummy is shown instead of nothing. Otherwise people will think this feature is broken

@mixxxbot
Copy link
Collaborator Author

Commented by: daschuer
Date: 2013-04-05T06:47:25Z


We have two aspects:

  1. GL problem:
    Ok, i will add a warning text.
    I'm curious to hear if Ewan will ever see this message because I am wondering that the crash happens on that specific place in Qt.
    @ewan: You will find Linux builds including the patch in: http://builds.mixxx.org/builds/experimental-daschuers_trunk/r3178/
    But be warned, its my experimental branch.

  2. Deadlock
    I have not looked to the details of RJs patch, but after a rough overview it looks good so far.

I have just read:
http://qt-project.org/doc/qt-4.8/qtglobal.html#qFatal
And it looks reasonable for me.

So Qt thinks:
qCritical = Continue
qFatal = Stop, if possible with debug

I would prefer we do the same: change our MIxxx reportCriticalErrorAndQuit to qFatal.
Then we are in line with Qt.
By the way: does our error handler disable the debugger invoke from the qfatal default handler?

The other problem to me is a major one: With the new ideas issued in the patch, we will not have such a fine bug reports like this in the future. We will only have users reporting some malfunction and then we have to look in the Mixxx log for a critical error but there is no way for the user to make a back trace.

Maybe we could route qCritical to qFatal in develloper mode and verifie that the qFatal default handler is called (or we can just write to NULL ;-))  

@mixxxbot
Copy link
Collaborator Author

Commented by: rryan
Date: 2013-04-05T14:29:10Z


I committed a fix for the deadlock -- it's a pretty simple one:
http://bazaar.launchpad.net/~mixxxdevelopers/mixxx/release-1.11.x/revision/3797
MessageHandler's mutex is only meant to protect Logfile but it is held while calling ErrorDialogHandler (which is already thread safe) so that is why re-entrancy in MessageHandler can deadlock. The solution is to just unlock before calling ErrorDialogHandler.

@mixxxbot
Copy link
Collaborator Author

Commented by: rryan
Date: 2013-04-05T14:31:16Z


I don't think the QGLWidget qCritical would actually cause a crash if it weren't for Mixxx deadlocking or quitting because someone issued a qCritical log. So there's really no crash to fix, just bad behavior on Mixxx's part. (We should confirm this with Ewan once we turn off quitting on qCritical).

@mixxxbot
Copy link
Collaborator Author

Commented by: rryan
Date: 2013-04-05T14:36:24Z


I looked at the 3 places we call qFatal in Mixxx and I don't think any of them deserve that we quit -- we could instead handle the error gracefully.

RE: Debugging

I think the only reason we got a nice backtrace from Ewan was because Mixxx deadlocked. Normally on a qCritical/qFatal we would only see a backtrace leading up to the line the debug was issued from. We already know the line the debug was issued from because we can look where the error string occurs in the codebase. So the information the backtrace can tell us is:

  1. The call stack leading up to the log message. (definitely useful in this case to see it was a deadlock!)
  2. The state of all the other threads.

Since the qCritical will still issue an error dialog the user can use GDB to break and get a backtrace when the error dialog is issued. Since the error dialog is modal it preserves the call-stack that led up to the error dialog being displayed. I think it still allows the user to get us the information we need we just need to tell them how to break GDB using Control-C instead of waiting for a crash to occur.

@mixxxbot
Copy link
Collaborator Author

Commented by: ewanuno
Date: 2013-04-05T16:57:05Z


ok here a new backtrace using the latest 1.11 bzr and the last few log messages,

now i get two critical error dialogs the frst says: 'error linking simple shader "" ' and the seccond says 'error linking blit shader ''' '

when i press ok in one of these dialogs mixx segfaults.

Warning [Main]: QGLShader: could not create shader 
Warning [Main]: Warning: "" failed to compile! 
Debug [LibraryScanner 1]: New BeatGrid 
Warning [Main]: QGLShader: could not create shader 
Warning [Main]: Warning: "" failed to compile! 
Warning [Main]: QGLShader: could not create shader 
Warning [Main]: Warning: "" failed to compile! 
Debug [LibraryScanner 1]: New BeatGrid 
Warning [Main]: QGLShader: could not create shader 
Warning [Main]: Warning: "" failed to compile! 
Warning [Main]: QGLShader: could not create shader 
Warning [Main]: Warning: "" failed to compile! 
Debug [LibraryScanner 1]: New BeatGrid 
Debug [LibraryScanner 1]: New BeatGrid 
Debug [LibraryScanner 1]: New BeatGrid 
Warning [Main]: QGLShader: could not create shader 
Warning [Main]: Warning: "" failed to compile! 
Warning [Main]: QGLShader: could not create shader 
Warning [Main]: Warning: "" failed to compile! 
Debug [LibraryScanner 1]: New BeatGrid 
Debug [LibraryScanner 1]: New BeatGrid 

Program received signal SIGSEGV, Segmentation fault.
0xb6d520e0 in QGL2PaintEngineEx::renderHintsChanged() ()
from /usr/lib/libQtOpenGL.so.4
(gdb) thread apply all bt

Thread 16 (Thread 0xa62e4b70 (LWP 3492)):
#0  0xb7fe2424 in __kernel_vsyscall ()
mixxxdj/mixxx#4910  0xb62e5c46 in statfs () from /lib/i386-linux-gnu/i686/cmov/libc.so.6
mixxxdj/mixxx#4911  0xb62c1ca0 in pathconf () from /lib/i386-linux-gnu/i686/cmov/libc.so.6
mixxxdj/mixxx#4912  0xb79962f1 in ?? () from /usr/lib/libQtCore.so.4
mixxxdj/mixxx#4913  0xb7943e85 in ?? () from /usr/lib/libQtCore.so.4
mixxxdj/mixxx#4914  0xb7944a89 in ?? () from /usr/lib/libQtCore.so.4
mixxxdj/mixxx#4915  0xb7944f7f in QDirIterator::QDirIterator(QString const&, QFlags<QDir::Filter>, QFlags<QDirIterator::IteratorFlag>) () from /usr/lib/libQtCore.so.4
mixxxdj/mixxx#4916  0x081da55e in LibraryScanner::recursiveScan (this=0xa8701230, 
    dirPath=..., verifiedDirectories=...)
    at src/library/libraryscanner.cpp:394
mixxxdj/mixxx#4917  0x081da5e1 in LibraryScanner::recursiveScan (this=0xa8701230, 
    dirPath=..., verifiedDirectories=...)
    at src/library/libraryscanner.cpp:404
mixxxdj/mixxx#4918  0x081da5e1 in LibraryScanner::recursiveScan (this=0xa8701230, 
    dirPath=..., verifiedDirectories=...)
    at src/library/libraryscanner.cpp:404
mixxxdj/mixxx#4919 0x081da5e1 in LibraryScanner::recursiveScan (this=0xa8701230, 
    dirPath=..., verifiedDirectories=...)
    at src/library/libraryscanner.cpp:404
mixxxdj/mixxx#4920 0x081da5e1 in LibraryScanner::recursiveScan (this=0xa8701230, 
    dirPath=..., verifiedDirectories=...)
    at src/library/libraryscanner.cpp:404
mixxxdj/mixxx#4921 0x081d99d5 in LibraryScanner::run (this=0xa8701230)
    at src/library/libraryscanner.cpp:227
mixxxdj/mixxx#4922 0xb78c0fbe in ?? () from /usr/lib/libQtCore.so.4
mixxxdj/mixxx#4923 0xb664ac39 in start_thread ()
   from /lib/i386-linux-gnu/i686/cmov/libpthread.so.0
mixxxdj/mixxx#4924 0xb62f596e in clone () from /lib/i386-linux-gnu/i686/cmov/libc.so.6

Thread 15 (Thread 0xa86ffb70 (LWP 3491)):
#0  0xb7fe2424 in __kernel_vsyscall ()
mixxxdj/mixxx#4910  0xb664f20a in pthread_cond_wait@@GLIBC_2.3.2 ()
   from /lib/i386-linux-gnu/i686/cmov/libpthread.so.0
mixxxdj/mixxx#4911  0xb78c1fb7 in QWaitCondition::wait(QMutex*, unsigned long) ()
   from /usr/lib/libQtCore.so.4
mixxxdj/mixxx#4912  0x081e0862 in SearchThread::run (this=0x9521b20)
    at src/library/searchthread.cpp:46
mixxxdj/mixxx#4913  0xb78c0fbe in ?? () from /usr/lib/libQtCore.so.4
mixxxdj/mixxx#4914  0xb664ac39 in start_thread ()
   from /lib/i386-linux-gnu/i686/cmov/libpthread.so.0
mixxxdj/mixxx#4915  0xb62f596e in clone () from /lib/i386-linux-gnu/i686/cmov/libc.so.6

Thread 14 (Thread 0xa90c6b70 (LWP 3490)):
#0  0xb7fe2424 in __kernel_vsyscall ()
mixxxdj/mixxx#4910  0xb664f20a in pthread_cond_wait@@GLIBC_2.3.2 ()
   from /lib/i386-linux-gnu/i686/cmov/libpthread.so.0
mixxxdj/mixxx#4911  0xb78c1fb7 in QWaitCondition::wait(QMutex*, unsigned long) ()
   from /usr/lib/libQtCore.so.4
mixxxdj/mixxx#4912  0x081e0862 in SearchThread::run (this=0x94df328)
    at src/library/searchthread.cpp:46
mixxxdj/mixxx#4913  0xb78c0fbe in ?? () from /usr/lib/libQtCore.so.4
mixxxdj/mixxx#4914  0xb664ac39 in start_thread ()
   from /lib/i386-linux-gnu/i686/cmov/libpthread.so.0
mixxxdj/mixxx#4915  0xb62f596e in clone () from /lib/i386-linux-gnu/i686/cmov/libc.so.6

Thread 13 (Thread 0xa98c7b70 (LWP 3489)):
#0  0xb7fe2424 in __kernel_vsyscall ()
mixxxdj/mixxx#4910  0xb664f20a in pthread_cond_wait@@GLIBC_2.3.2 ()
   from /lib/i386-linux-gnu/i686/cmov/libpthread.so.0
mixxxdj/mixxx#4911  0xb78c1fb7 in QWaitCondition::wait(QMutex*, unsigned long) ()
   from /usr/lib/libQtCore.so.4
mixxxdj/mixxx#4912  0x081e0862 in SearchThread::run (this=0x9482650)
    at src/library/searchthread.cpp:46
mixxxdj/mixxx#4913  0xb78c0fbe in ?? () from /usr/lib/libQtCore.so.4
mixxxdj/mixxx#4914  0xb664ac39 in start_thread ()
   from /lib/i386-linux-gnu/i686/cmov/libpthread.so.0
mixxxdj/mixxx#4915  0xb62f596e in clone () from /lib/i386-linux-gnu/i686/cmov/libc.so.6

Thread 12 (Thread 0xaa0c8b70 (LWP 3488)):
#0  0xb7fe2424 in __kernel_vsyscall ()
mixxxdj/mixxx#4910  0xb664f20a in pthread_cond_wait@@GLIBC_2.3.2 ()
   from /lib/i386-linux-gnu/i686/cmov/libpthread.so.0
mixxxdj/mixxx#4911  0xb78c1fb7 in QWaitCondition::wait(QMutex*, unsigned long) ()
   from /usr/lib/libQtCore.so.4
mixxxdj/mixxx#4912  0x081e0862 in SearchThread::run (this=0x9461698)
    at src/library/searchthread.cpp:46
mixxxdj/mixxx#4913  0xb78c0fbe in ?? () from /usr/lib/libQtCore.so.4
mixxxdj/mixxx#4914  0xb664ac39 in start_thread ()
   from /lib/i386-linux-gnu/i686/cmov/libpthread.so.0
mixxxdj/mixxx#4915  0xb62f596e in clone () from /lib/i386-linux-gnu/i686/cmov/libc.so.6

Thread 11 (Thread 0xaa8c9b70 (LWP 3487)):
#0  0xb7fe2424 in __kernel_vsyscall ()
mixxxdj/mixxx#4910  0xb664f20a in pthread_cond_wait@@GLIBC_2.3.2 ()
   from /lib/i386-linux-gnu/i686/cmov/libpthread.so.0
mixxxdj/mixxx#4911  0xb78c1fb7 in QWaitCondition::wait(QMutex*, unsigned long) ()
   from /usr/lib/libQtCore.so.4
mixxxdj/mixxx#4912  0x081e0862 in SearchThread::run (this=0x943ac68)
    at src/library/searchthread.cpp:46
mixxxdj/mixxx#4913  0xb78c0fbe in ?? () from /usr/lib/libQtCore.so.4
mixxxdj/mixxx#4914  0xb664ac39 in start_thread ()
   from /lib/i386-linux-gnu/i686/cmov/libpthread.so.0
mixxxdj/mixxx#4915  0xb62f596e in clone () from /lib/i386-linux-gnu/i686/cmov/libc.so.6

Thread 10 (Thread 0xab0cab70 (LWP 3486)):
#0  0xb7fe2424 in __kernel_vsyscall ()
mixxxdj/mixxx#4910  0xb664f20a in pthread_cond_wait@@GLIBC_2.3.2 ()
   from /lib/i386-linux-gnu/i686/cmov/libpthread.so.0
mixxxdj/mixxx#4911  0xb78c1fb7 in QWaitCondition::wait(QMutex*, unsigned long) ()
   from /usr/lib/libQtCore.so.4
mixxxdj/mixxx#4912  0x081e0862 in SearchThread::run (this=0x9426648)
    at src/library/searchthread.cpp:46
mixxxdj/mixxx#4913  0xb78c0fbe in ?? () from /usr/lib/libQtCore.so.4
mixxxdj/mixxx#4914  0xb664ac39 in start_thread ()
   from /lib/i386-linux-gnu/i686/cmov/libpthread.so.0
mixxxdj/mixxx#4915  0xb62f596e in clone () from /lib/i386-linux-gnu/i686/cmov/libc.so.6

Thread 9 (Thread 0xac8afb70 (LWP 3485)):
#0  0xb7fe2424 in __kernel_vsyscall ()
mixxxdj/mixxx#4910  0xb664f703 in pthread_cond_timedwait@@GLIBC_2.3.2 ()
   from /lib/i386-linux-gnu/i686/cmov/libpthread.so.0
mixxxdj/mixxx#4911  0xb78c1f3f in QWaitCondition::wait(QMutex*, unsigned long) ()
   from /usr/lib/libQtCore.so.4
mixxxdj/mixxx#4912  0xb78b5f6b in ?? () from /usr/lib/libQtCore.so.4
mixxxdj/mixxx#4913  0xb78c0fbe in ?? () from /usr/lib/libQtCore.so.4
mixxxdj/mixxx#4914  0xb664ac39 in start_thread ()
   from /lib/i386-linux-gnu/i686/cmov/libpthread.so.0
mixxxdj/mixxx#4915  0xb62f596e in clone () from /lib/i386-linux-gnu/i686/cmov/libc.so.6

Thread 8 (Thread 0xad0b0b70 (LWP 3484)):
#0  0xb7fe2424 in __kernel_vsyscall ()
mixxxdj/mixxx#4910  0xb62e7f86 in poll () from /lib/i386-linux-gnu/i686/cmov/libc.so.6
mixxxdj/mixxx#4911  0xb7fa1973 in ?? () from /usr/lib/i386-linux-gnu/libportaudio.so.2
mixxxdj/mixxx#4912  0xb7fa2930 in ?? () from /usr/lib/i386-linux-gnu/libportaudio.so.2
mixxxdj/mixxx#4913  0xb664ac39 in start_thread ()
   from /lib/i386-linux-gnu/i686/cmov/libpthread.so.0
mixxxdj/mixxx#4914  0xb62f596e in clone () from /lib/i386-linux-gnu/i686/cmov/libc.so.6

Thread 7 (Thread 0xadbfeb70 (LWP 3483)):
#0  0xb7fe2424 in __kernel_vsyscall ()
mixxxdj/mixxx#4910  0xb62e7f86 in poll () from /lib/i386-linux-gnu/i686/cmov/libc.so.6
mixxxdj/mixxx#4911  0xb605613b in g_poll () from /lib/i386-linux-gnu/libglib-2.0.so.0
mixxxdj/mixxx#4912  0xb60479f0 in ?? () from /lib/i386-linux-gnu/libglib-2.0.so.0
mixxxdj/mixxx#4913  0xb6047b51 in g_main_context_iteration ()
   from /lib/i386-linux-gnu/libglib-2.0.so.0
mixxxdj/mixxx#4914  0xb79e9075 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQtCore.so.4
mixxxdj/mixxx#4915  0xb79bbae9 in QEventLoop::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQtCore.so.4
mixxxdj/mixxx#4916  0xb79bbf3a in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) ()
   from /usr/lib/libQtCore.so.4
mixxxdj/mixxx#4917  0xb78be629 in QThread::exec() () from /usr/lib/libQtCore.so.4
mixxxdj/mixxx#4918  0xb78be6cd in QThread::run() () from /usr/lib/libQtCore.so.4
mixxxdj/mixxx#4919 0xb78c0fbe in ?? () from /usr/lib/libQtCore.so.4
mixxxdj/mixxx#4920 0xb664ac39 in start_thread ()
   from /lib/i386-linux-gnu/i686/cmov/libpthread.so.0
mixxxdj/mixxx#4921 0xb62f596e in clone () from /lib/i386-linux-gnu/i686/cmov/libc.so.6

Thread 6 (Thread 0xae3ffb70 (LWP 3482)):
#0  0xb7fe2424 in __kernel_vsyscall ()
mixxxdj/mixxx#4910  0xb664f20a in pthread_cond_wait@@GLIBC_2.3.2 ()
   from /lib/i386-linux-gnu/i686/cmov/libpthread.so.0
mixxxdj/mixxx#4911  0xb78c1fb7 in QWaitCondition::wait(QMutex*, unsigned long) ()
   from /usr/lib/libQtCore.so.4
mixxxdj/mixxx#4912  0x0810a2b1 in AnalyserQueue::dequeueNextBlocking (this=0x8c304b8)
    at src/analyserqueue.cpp:100
mixxxdj/mixxx#4913  0x0810ac2e in AnalyserQueue::run (this=0x8c304b8)
    at src/analyserqueue.cpp:271
mixxxdj/mixxx#4914  0xb78c0fbe in ?? () from /usr/lib/libQtCore.so.4
mixxxdj/mixxx#4915  0xb664ac39 in start_thread ()
   from /lib/i386-linux-gnu/i686/cmov/libpthread.so.0
mixxxdj/mixxx#4916  0xb62f596e in clone () from /lib/i386-linux-gnu/i686/cmov/libc.so.6

Thread 5 (Thread 0xb37b0b70 (LWP 3481)):
#0  0xb7fe2424 in __kernel_vsyscall ()
mixxxdj/mixxx#4910  0xb664f20a in pthread_cond_wait@@GLIBC_2.3.2 ()
   from /lib/i386-linux-gnu/i686/cmov/libpthread.so.0
mixxxdj/mixxx#4911  0xb78c1fb7 in QWaitCondition::wait(QMutex*, unsigned long) ()
   from /usr/lib/libQtCore.so.4
mixxxdj/mixxx#4912  0x081ae034 in BrowseThread::run (this=0x8c040d8)
    at src/library/browse/browsethread.cpp:82
mixxxdj/mixxx#4913  0xb78c0fbe in ?? () from /usr/lib/libQtCore.so.4
mixxxdj/mixxx#4914  0xb664ac39 in start_thread ()
   from /lib/i386-linux-gnu/i686/cmov/libpthread.so.0
mixxxdj/mixxx#4915  0xb62f596e in clone () from /lib/i386-linux-gnu/i686/cmov/libc.so.6

Thread 3 (Thread 0xb3fb1b70 (LWP 3478)):
#0  0xb7fe2424 in __kernel_vsyscall ()
mixxxdj/mixxx#4910  0xb664f20a in pthread_cond_wait@@GLIBC_2.3.2 ()
   from /lib/i386-linux-gnu/i686/cmov/libpthread.so.0
mixxxdj/mixxx#4911  0xb78c1fb7 in QWaitCondition::wait(QMutex*, unsigned long) ()
   from /usr/lib/libQtCore.so.4
mixxxdj/mixxx#4912  0x080f1dd9 in EngineSideChain::run (this=0x86f99d0)
    at src/engine/enginesidechain.cpp:163
mixxxdj/mixxx#4913  0xb78c0fbe in ?? () from /usr/lib/libQtCore.so.4
mixxxdj/mixxx#4914  0xb664ac39 in start_thread ()
   from /lib/i386-linux-gnu/i686/cmov/libpthread.so.0
mixxxdj/mixxx#4915  0xb62f596e in clone () from /lib/i386-linux-gnu/i686/cmov/libc.so.6

Thread 2 (Thread 0xb496eb70 (LWP 3477)):
#0  0xb7fe2424 in __kernel_vsyscall ()
mixxxdj/mixxx#4910  0xb664f20a in pthread_cond_wait@@GLIBC_2.3.2 ()
   from /lib/i386-linux-gnu/i686/cmov/libpthread.so.0
mixxxdj/mixxx#4911  0xb78c1fb7 in QWaitCondition::wait(QMutex*, unsigned long) ()
   from /usr/lib/libQtCore.so.4
mixxxdj/mixxx#4912  0x080e2c0e in EngineWorkerScheduler::run (this=0x86e6810)
    at src/engine/engineworkerscheduler.cpp:68
mixxxdj/mixxx#4913  0xb78c0fbe in ?? () from /usr/lib/libQtCore.so.4
mixxxdj/mixxx#4914  0xb664ac39 in start_thread ()
   from /lib/i386-linux-gnu/i686/cmov/libpthread.so.0
mixxxdj/mixxx#4915  0xb62f596e in clone () from /lib/i386-linux-gnu/i686/cmov/libc.so.6

Thread 1 (Thread 0xb5af9720 (LWP 3474)):
#0  0xb6d520e0 in QGL2PaintEngineEx::renderHintsChanged() ()
   from /usr/lib/libQtOpenGL.so.4
mixxxdj/mixxx#4910  0xb706c7b7 in QPainter::setRenderHints(QFlags<QPainter::RenderHint>, bool)
    () from /usr/lib/libQtGui.so.4
mixxxdj/mixxx#4911  0xb706c822 in QPainter::setRenderHint(QPainter::RenderHint, bool) ()
   from /usr/lib/libQtGui.so.4
mixxxdj/mixxx#4912  0x08163f07 in WSpinny::paintEvent (this=0x9939ac0, e=0xbfffd3a4)
    at src/widget/wspinny.cpp:157
mixxxdj/mixxx#4913  0xb6f64686 in QWidget::event(QEvent*) () from /usr/lib/libQtGui.so.4
mixxxdj/mixxx#4914  0xb6d068f9 in QGLWidget::event(QEvent*) () from /usr/lib/libQtOpenGL.so.4
mixxxdj/mixxx#4915  0xb6f065cc in QApplicationPrivate::notify_helper(QObject*, QEvent*) ()
   from /usr/lib/libQtGui.so.4
mixxxdj/mixxx#4916  0xb6f0d1f9 in QApplication::notify(QObject*, QEvent*) ()
   from /usr/lib/libQtGui.so.4
mixxxdj/mixxx#4917  0xb79bd4cb in QCoreApplication::notifyInternal(QObject*, QEvent*) ()
   from /usr/lib/libQtCore.so.4
mixxxdj/mixxx#4918  0xb6f6d976 in QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) ()
   from /usr/lib/libQtGui.so.4
mixxxdj/mixxx#4919 0xb7141726 in QWidgetPrivate::repaint_sys(QRegion const&) ()
   from /usr/lib/libQtGui.so.4
mixxxdj/mixxx#4920 0xb6f5e11e in QWidgetPrivate::syncBackingStore() ()
   from /usr/lib/libQtGui.so.4
mixxxdj/mixxx#4921 0xb6f64e46 in QWidget::event(QEvent*) () from /usr/lib/libQtGui.so.4
mixxxdj/mixxx#4922 0xb6d068f9 in QGLWidget::event(QEvent*) () from /usr/lib/libQtOpenGL.so.4
mixxxdj/mixxx#4923 0xb6f065cc in QApplicationPrivate::notify_helper(QObject*, QEvent*) ()
   from /usr/lib/libQtGui.so.4
mixxxdj/mixxx#4924 0xb6f0d1f9 in QApplication::notify(QObject*, QEvent*) ()
   from /usr/lib/libQtGui.so.4
mixxxdj/mixxx#4925 0xb79bd4cb in QCoreApplication::notifyInternal(QObject*, QEvent*) ()
   from /usr/lib/libQtCore.so.4
mixxxdj/mixxx#4926 0xb79c0f2c in QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) () from /usr/lib/libQtCore.so.4
mixxxdj/mixxx#4927 0xb79c10ad in QCoreApplication::sendPostedEvents(QObject*, int) ()
   from /usr/lib/libQtCore.so.4
mixxxdj/mixxx#4928 0xb79e957f in ?? () from /usr/lib/libQtCore.so.4
mixxxdj/mixxx#4929 0xb60476d3 in g_main_context_dispatch ()
   from /lib/i386-linux-gnu/libglib-2.0.so.0
mixxxdj/mixxx#4930 0xb6047a70 in ?? () from /lib/i386-linux-gnu/libglib-2.0.so.0
mixxxdj/mixxx#4931 0xb6047b51 in g_main_context_iteration ()
   from /lib/i386-linux-gnu/libglib-2.0.so.0
mixxxdj/mixxx#4932 0xb79e9075 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQtCore.so.4
mixxxdj/mixxx#4933 0xb6fc4ed5 in ?? () from /usr/lib/libQtGui.so.4
mixxxdj/mixxx#4934 0xb79bbae9 in QEventLoop::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQtCore.so.4
mixxxdj/mixxx#4935 0xb79bbf3a in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) ()
   from /usr/lib/libQtCore.so.4
mixxxdj/mixxx#4936 0xb7443723 in QDialog::exec() () from /usr/lib/libQtGui.so.4
mixxxdj/mixxx#4937 0x081479a0 in ErrorDialogHandler::errorDialog (this=0x85dd8c8, 
    pProps=0xae4a3848) at src/errordialoghandler.cpp:166
mixxxdj/mixxx#4938 0x082d3d48 in ErrorDialogHandler::qt_metacall (this=0x85dd8c8, 
    _c=QMetaObject::InvokeMetaMethod, _id=2, _a=0xbfffdf28)
    at lin32_build/moc_errordialoghandler.cc:84
mixxxdj/mixxx#4939 0xb79c27aa in QMetaObject::metacall(QObject*, QMetaObject::Call, int, void**) () from /usr/lib/libQtCore.so.4
mixxxdj/mixxx#4940 0xb79d11bb in QMetaObject::activate(QObject*, QMetaObject const*, int, void**) () from /usr/lib/libQtCore.so.4
mixxxdj/mixxx#4941 0x082d3df6 in ErrorDialogHandler::showErrorDialog (this=0x85dd8c8, 
    _t1=0xae4a3848) at lin32_build/moc_errordialoghandler.cc:97
mixxxdj/mixxx#4942 0x08147646 in ErrorDialogHandler::requestErrorDialog (this=0x85dd8c8, 
    props=0xae4a3848) at src/errordialoghandler.cpp:115
mixxxdj/mixxx#4943 0x081474c1 in ErrorDialogHandler::requestErrorDialog (this=0x85dd8c8, 
    type=DLG_CRITICAL, message=...) at src/errordialoghandler.cpp:98
mixxxdj/mixxx#4944 0x08137351 in MessageHandler (type=QtCriticalMsg, 
    input=0xae41c978 "Errors linking simple shader: \"\" ")
    at src/main.cpp:141
mixxxdj/mixxx#4945 0xb78b7f65 in qt_message_output(QtMsgType, char const*) ()
   from /usr/lib/libQtCore.so.4
mixxxdj/mixxx#4946 0xb6d4dcb0 in ?? () from /usr/lib/libQtOpenGL.so.4
mixxxdj/mixxx#4947 0xb6d4dfe8 in ?? () from /usr/lib/libQtOpenGL.so.4
mixxxdj/mixxx#4948 0xb6d4e0cf in QGLEngineShaderManager::QGLEngineShaderManager(QGLContext*)
    () from /usr/lib/libQtOpenGL.so.4
mixxxdj/mixxx#4949 0xb6d5229d in QGL2PaintEngineEx::begin(QPaintDevice*) ()
   from /usr/lib/libQtOpenGL.so.4
mixxxdj/mixxx#4950 0xb7075852 in QPainter::begin(QPaintDevice*) ()
   from /usr/lib/libQtGui.so.4
mixxxdj/mixxx#4951 0xb7076028 in QPainter::QPainter(QPaintDevice*) ()
   from /usr/lib/libQtGui.so.4
mixxxdj/mixxx#4952 0x08163eec in WSpinny::paintEvent (this=0x95a9878, e=0xbfffe944)
    at src/widget/wspinny.cpp:156
mixxxdj/mixxx#4953 0xb6f64686 in QWidget::event(QEvent*) () from /usr/lib/libQtGui.so.4
mixxxdj/mixxx#4954 0xb6d068f9 in QGLWidget::event(QEvent*) () from /usr/lib/libQtOpenGL.so.4
mixxxdj/mixxx#4955 0xb6f065cc in QApplicationPrivate::notify_helper(QObject*, QEvent*) ()
   from /usr/lib/libQtGui.so.4
mixxxdj/mixxx#4956 0xb6f0d1f9 in QApplication::notify(QObject*, QEvent*) ()
   from /usr/lib/libQtGui.so.4
mixxxdj/mixxx#4957 0xb79bd4cb in QCoreApplication::notifyInternal(QObject*, QEvent*) ()
   from /usr/lib/libQtCore.so.4
mixxxdj/mixxx#4958 0xb6f6d976 in QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) ()
   from /usr/lib/libQtGui.so.4
mixxxdj/mixxx#4959 0xb7141726 in QWidgetPrivate::repaint_sys(QRegion const&) ()
   from /usr/lib/libQtGui.so.4
mixxxdj/mixxx#4960 0xb6f5e11e in QWidgetPrivate::syncBackingStore() ()
   from /usr/lib/libQtGui.so.4
mixxxdj/mixxx#4961 0xb6f64e46 in QWidget::event(QEvent*) () from /usr/lib/libQtGui.so.4
mixxxdj/mixxx#4962 0xb6d068f9 in QGLWidget::event(QEvent*) () from /usr/lib/libQtOpenGL.so.4
mixxxdj/mixxx#4963 0xb6f065cc in QApplicationPrivate::notify_helper(QObject*, QEvent*) ()
   from /usr/lib/libQtGui.so.4
mixxxdj/mixxx#4964 0xb6f0d1f9 in QApplication::notify(QObject*, QEvent*) ()
   from /usr/lib/libQtGui.so.4
mixxxdj/mixxx#4965 0xb79bd4cb in QCoreApplication::notifyInternal(QObject*, QEvent*) ()
   from /usr/lib/libQtCore.so.4
mixxxdj/mixxx#4966 0xb79c0f2c in QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) () from /usr/lib/libQtCore.so.4
mixxxdj/mixxx#4967 0xb79c10ad in QCoreApplication::sendPostedEvents(QObject*, int) ()
   from /usr/lib/libQtCore.so.4
mixxxdj/mixxx#4968 0xb79e957f in ?? () from /usr/lib/libQtCore.so.4
mixxxdj/mixxx#4969 0xb60476d3 in g_main_context_dispatch ()
   from /lib/i386-linux-gnu/libglib-2.0.so.0
mixxxdj/mixxx#4970 0xb6047a70 in ?? () from /lib/i386-linux-gnu/libglib-2.0.so.0
mixxxdj/mixxx#4971 0xb6047b51 in g_main_context_iteration ()
   from /lib/i386-linux-gnu/libglib-2.0.so.0
mixxxdj/mixxx#4972 0xb79e9075 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQtCore.so.4
mixxxdj/mixxx#4973 0xb6fc4ed5 in ?? () from /usr/lib/libQtGui.so.4
mixxxdj/mixxx#4974 0xb79bbae9 in QEventLoop::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQtCore.so.4
mixxxdj/mixxx#4975 0xb79bbf3a in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) ()
   from /usr/lib/libQtCore.so.4
mixxxdj/mixxx#4976 0xb79c116f in QCoreApplication::exec() () from /usr/lib/libQtCore.so.4
mixxxdj/mixxx#4977 0xb6f06667 in QApplication::exec() () from /usr/lib/libQtGui.so.4
mixxxdj/mixxx#4978 0x0813788e in main (argc=1, argv=0xbffff4c4) at src/main.cpp:316
(gdb) 

@mixxxbot
Copy link
Collaborator Author

Commented by: rryan
Date: 2013-04-05T18:53:19Z


Hey Ewan -- this isn't fixed yet so that crash is expected. The problem here is that when Qt writes a qCritical() message they never intended that that could stall execution inside the paint event and go for another round trip through the event loop (via ErrorDialogHandler and a modal QMessageBox) which in this case makes WSpinny's paintEvent re-entrant and multiple painters become active on the spinny.

@mixxxbot
Copy link
Collaborator Author

Commented by: rryan
Date: 2013-04-05T18:53:36Z


(it's super useful to have the backtrace to confirm though -- thanks!)

@mixxxbot
Copy link
Collaborator Author

Commented by: rryan
Date: 2013-04-05T18:54:42Z


Oh Daniel -- I may have misunderstood you re: debuggability. It's true that qCritical's that Qt issues would no longer result in a message box so we would lose the ability for users to easily get us backtraces when Qt does that.

@mixxxbot
Copy link
Collaborator Author

Commented by: daschuer
Date: 2013-04-05T23:30:24Z


Just added the patch from mixxxdj/mixxx#4921 with text "No openGL\nsupport." to lp:mixxx/1.11 revision 3800.

@ewan: please give it a try. If you still have the recursion, please provide the complete mixxx.log file, or at lest the few lines arround WSpinny().
Thank you!

@mixxxbot
Copy link
Collaborator Author

Commented by: rryan
Date: 2013-04-06T00:09:41Z


I added my patch from #⁠15 in lp:mixxx/1.11 r3802.

Daniel -- I don't think printing an error message in the skin is the right approach. In past Mixxx versions we have warned the user via a popup message box when their system doesn't support OpenGL and wouldn't have visuals when they run Mixxx. I think that's a better way.

When you insert it into the skin it might be invisible due to style sheets. The skinner has to account for the QLabel and style it via the style sheet. Also, the font sizes could mean the text is either too hard to read or too large. The artificial newline you put in the string might work for the skins we have but maybe wouldn't look right on a much larger spinny.

(Also it's a new string that won't be translated in time for 1.11.0...)

I think a more skin-integrated solution (for 1.12.x) would be for the spinny to have an inactive or disabled pixmap. If OpenGL was not present, we could swap it out for a static QPixmap of the inactive/disabled pixmap. In addition to this, a warning dialog about missing OpenGL support could warn the user in text that some features like waveforms and spinnies would be missing.

@mixxxbot
Copy link
Collaborator Author

Commented by: daschuer
Date: 2013-04-06T11:58:27Z


Hi RJ,

sorry for committing without a final go.
Let me explain why I was quite satisfied with the current solution:

  • I do not like pop pup boxes that suddenly appear. The user is interrupted in it current use case. In this case he can simply disable spinnies to hide the text. Mixxx will work fine without openGL but without Spinnies
  • The text is actually skinned, set by the background properties which is a QLable as well :-)
  • This does not hurt even if you don't understand the complete message. The significant word openGL is international anyway.
  • The skin designer should not worry about this issue, because he most likely is not able to check the dummy widget.
  • this solution has less dependencies and less effort.
  • the user can already see his openGL status below the waveform properties.
  • not at least this solution was Max's idea which we both agreed

Now, I would wait for feedback from Ewan. But feel free to revert my commit. This is a corner case anyway, which is issued due to a bad driver setup.

Kind regards,

Daniel

@mixxxbot
Copy link
Collaborator Author

Commented by: kain88-de
Date: 2013-04-06T12:49:01Z


I also like the idea of replacing the wspinny pixmap with a error text/pixmap instead of just a popup message.

by the way what is done with the waveforms when qt realises that openGL is not an option, do we fall back to the software renderer?

@mixxxbot
Copy link
Collaborator Author

Commented by: ewanuno
Date: 2013-04-07T01:11:51Z


it's fixed! great work everybody.

the only waveforms that work for me are filtered-software and hsv (which is
a pit of a pink mess at the moment)

no spinnys obviously.

thanks!

On 6 April 2013 14:49, Max Linke wrote:

I also like the idea of replacing the wspinny pixmap with a error
text/pixmap instead of just a popup message.

by the way what is done with the waveforms when qt realises that openGL
is not an option, do we fall back to the software renderer?

--
You received this bug notification because you are subscribed to the bug
report.
https://bugs.launchpad.net/bugs/1160353

Title:
"critical error" on startup with software gl renderer

Status in Mixxx:
In Progress

Bug description:
mixxx 1.11 revision 3779 from bzr

i am running mixxx on avlinux 6.0(based on debian squeeze)
using an nvidia geforce fx 5200 (old card) using the nouveau gpl driver,
(software renderer)

since i am using the software renderer, i suspect that this is not
specific to my graphics card.

i have a laptop with an identical software configuration that does not
suffer from this problem which uses an intel graphics card.

i DONT GET THIS PROBLEM WITH THE CLOSED SOURCE NVIDIA DRIVERS,

on startup i get a dialog box with "critical error" in its title but
no text or buttons.

Debug [Main]: resize QSize(1024, 577)
Debug [Main]: Running Mixxx
Debug [Main]: ControllerManager::getControllerList
Warning [Main]: QGLShader: could not create shader
Warning [Main]: Vertex shader for simpleShaderProg (MainVertexShader &
PositionOnlyVertexShader) failed to compile
Warning [Main]: QGLShader: could not create shader
Warning [Main]: Fragment shader for simpleShaderProg (MainFragmentShader
& ShockingPinkSrcFragmentShader) failed to compile
Warning [Main]: QGLShaderProgram: could not create shader program
Critical [Main]: Errors linking simple shader: ""

To manage notifications about this bug go to:
https://bugs.launchpad.net/mixxx/+bug/1160353/+subscriptions

--
http://www.ewancolsell.com/

@mixxxbot
Copy link
Collaborator Author

Commented by: daschuer
Date: 2013-04-07T12:06:23Z


Hi Ewan, thank you for your feedback!

To answer Max's question from #⁠28. Yes, we fall back to Software waveform in case of openGL absence.

Kind regards, Daniel

@mixxxbot
Copy link
Collaborator Author

Commented by: rryan
Date: 2013-04-07T23:08:14Z


I agree it's not worth arguing about a corner case like this. Thanks for
the fix Daniel :).

I'm very curious whether an actual crash would occur if we didn't delete
the spinny. Ewan -- if I made you a custom binary without Daniel's patch to
delete the invalid spinny could you give ti a try?

On Sun, Apr 7, 2013 at 8:06 AM, Daniel Schürmann <

wrote:

Hi Ewan, thank you for your feedback!

To answer Max's question from #⁠28. Yes, we fall back to Software
waveform in case of openGL absence.

Kind regards, Daniel

--
You received this bug notification because you are a member of Mixxx
Development Team, which is subscribed to Mixxx.
https://bugs.launchpad.net/bugs/1160353

Title:
"critical error" on startup with software gl renderer

To manage notifications about this bug go to:
https://bugs.launchpad.net/mixxx/+bug/1160353/+subscriptions

@mixxxbot
Copy link
Collaborator Author

Commented by: ewanuno
Date: 2013-04-07T23:27:35Z


sure, a patch would be fine too.

On 8 April 2013 01:08, RJ Ryan wrote:

I agree it's not worth arguing about a corner case like this. Thanks for
the fix Daniel :).

I'm very curious whether an actual crash would occur if we didn't delete
the spinny. Ewan -- if I made you a custom binary without Daniel's patch to
delete the invalid spinny could you give ti a try?

On Sun, Apr 7, 2013 at 8:06 AM, Daniel Schürmann <

wrote:

Hi Ewan, thank you for your feedback!

To answer Max's question from #⁠28. Yes, we fall back to Software
waveform in case of openGL absence.

Kind regards, Daniel

--
You received this bug notification because you are a member of Mixxx
Development Team, which is subscribed to Mixxx.
https://bugs.launchpad.net/bugs/1160353

Title:
"critical error" on startup with software gl renderer

To manage notifications about this bug go to:
https://bugs.launchpad.net/mixxx/+bug/1160353/+subscriptions

--
You received this bug notification because you are subscribed to the bug
report.
https://bugs.launchpad.net/bugs/1160353

Title:
"critical error" on startup with software gl renderer

Status in Mixxx:
In Progress

Bug description:
mixxx 1.11 revision 3779 from bzr

i am running mixxx on avlinux 6.0(based on debian squeeze)
using an nvidia geforce fx 5200 (old card) using the nouveau gpl driver,
(software renderer)

since i am using the software renderer, i suspect that this is not
specific to my graphics card.

i have a laptop with an identical software configuration that does not
suffer from this problem which uses an intel graphics card.

i DONT GET THIS PROBLEM WITH THE CLOSED SOURCE NVIDIA DRIVERS,

on startup i get a dialog box with "critical error" in its title but
no text or buttons.

Debug [Main]: resize QSize(1024, 577)
Debug [Main]: Running Mixxx
Debug [Main]: ControllerManager::getControllerList
Warning [Main]: QGLShader: could not create shader
Warning [Main]: Vertex shader for simpleShaderProg (MainVertexShader &
PositionOnlyVertexShader) failed to compile
Warning [Main]: QGLShader: could not create shader
Warning [Main]: Fragment shader for simpleShaderProg (MainFragmentShader
& ShockingPinkSrcFragmentShader) failed to compile
Warning [Main]: QGLShaderProgram: could not create shader program
Critical [Main]: Errors linking simple shader: ""

To manage notifications about this bug go to:
https://bugs.launchpad.net/mixxx/+bug/1160353/+subscriptions

--
http://www.ewancolsell.com/

@mixxxbot
Copy link
Collaborator Author

Commented by: rryan
Date: 2013-04-09T03:18:40Z
Attachments: no_invalid_spinny_check.patch


Great -- thanks Ewan. Please apply this patch and let us know what happens / post a backtrace if you get a crash.

@mixxxbot
Copy link
Collaborator Author

Commented by: ewanuno
Date: 2013-04-09T15:58:52Z


it works fine with the patch applied.

i just noticed though that with and without the patch i get a continuous
stream of the same error message on the console.:

Warning [Main]: QGLShader: could not create shader
Warning [Main]: Warning: "" failed to compile!
Warning [Main]: QGLShader: could not create shader
Warning [Main]: Warning: "" failed to compile!
Warning [Main]: QGLShader: could not create shader
Warning [Main]: Warning: "" failed to compile!
Warning [Main]: QGLShader: could not create shader
Warning [Main]: Warning: "" failed to compile!
Warning [Main]: QGLShader: could not create shader
Warning [Main]: Warning: "" failed to compile!
Warning [Main]: QGLShader: could not create shader
Warning [Main]: Warning: "" failed to compile!
Warning [Main]: QGLShader: could not create shader
Warning [Main]: Warning: "" failed to compile!
Warning [Main]: QGLShader: could not create shader
Warning [Main]: Warning: "" failed to compile!
Warning [Main]: QGLShader: could not create shader
Warning [Main]: Warning: "" failed to compile!
Warning [Main]: QGLShader: could not ............

and so on until i quit mixxx.

On 9 April 2013 05:18, RJ Ryan wrote:

Great -- thanks Ewan. Please apply this patch and let us know what
happens / post a backtrace if you get a crash.

** Patch added: "no_invalid_spinny_check.patch"

https://bugs.launchpad.net/mixxx/+bug/1160353/+attachment/3633204/+files/no_invalid_spinny_check.patch

--
You received this bug notification because you are subscribed to the bug
report.
https://bugs.launchpad.net/bugs/1160353

Title:
"critical error" on startup with software gl renderer

Status in Mixxx:
In Progress

Bug description:
mixxx 1.11 revision 3779 from bzr

i am running mixxx on avlinux 6.0(based on debian squeeze)
using an nvidia geforce fx 5200 (old card) using the nouveau gpl driver,
(software renderer)

since i am using the software renderer, i suspect that this is not
specific to my graphics card.

i have a laptop with an identical software configuration that does not
suffer from this problem which uses an intel graphics card.

i DONT GET THIS PROBLEM WITH THE CLOSED SOURCE NVIDIA DRIVERS,

on startup i get a dialog box with "critical error" in its title but
no text or buttons.

Debug [Main]: resize QSize(1024, 577)
Debug [Main]: Running Mixxx
Debug [Main]: ControllerManager::getControllerList
Warning [Main]: QGLShader: could not create shader
Warning [Main]: Vertex shader for simpleShaderProg (MainVertexShader &
PositionOnlyVertexShader) failed to compile
Warning [Main]: QGLShader: could not create shader
Warning [Main]: Fragment shader for simpleShaderProg (MainFragmentShader
& ShockingPinkSrcFragmentShader) failed to compile
Warning [Main]: QGLShaderProgram: could not create shader program
Critical [Main]: Errors linking simple shader: ""

To manage notifications about this bug go to:
https://bugs.launchpad.net/mixxx/+bug/1160353/+subscriptions

--
http://www.ewancolsell.com/

@mixxxbot
Copy link
Collaborator Author

Commented by: rryan
Date: 2013-04-09T16:19:57Z


Good to know -- glad it doesn't crash but it's probably good that we delete
it if it is invalid so that work is not wasted on trying to render it. What
happens if you choose a non-software GL renderer? Do your waveforms work?

Maybe we should make spinny's work more like the waveforms that have a
holder widget and a software vs. GL implementation so that spinny's could
work when OpenGL is not supported.

On Tue, Apr 9, 2013 at 11:58 AM, ewan colsell wrote:

it works fine with the patch applied.

i just noticed though that with and without the patch i get a continuous
stream of the same error message on the console.:

Warning [Main]: QGLShader: could not create shader
Warning [Main]: Warning: "" failed to compile!
Warning [Main]: QGLShader: could not create shader
Warning [Main]: Warning: "" failed to compile!
Warning [Main]: QGLShader: could not create shader
Warning [Main]: Warning: "" failed to compile!
Warning [Main]: QGLShader: could not create shader
Warning [Main]: Warning: "" failed to compile!
Warning [Main]: QGLShader: could not create shader
Warning [Main]: Warning: "" failed to compile!
Warning [Main]: QGLShader: could not create shader
Warning [Main]: Warning: "" failed to compile!
Warning [Main]: QGLShader: could not create shader
Warning [Main]: Warning: "" failed to compile!
Warning [Main]: QGLShader: could not create shader
Warning [Main]: Warning: "" failed to compile!
Warning [Main]: QGLShader: could not create shader
Warning [Main]: Warning: "" failed to compile!
Warning [Main]: QGLShader: could not ............

and so on until i quit mixxx.

On 9 April 2013 05:18, RJ Ryan wrote:

Great -- thanks Ewan. Please apply this patch and let us know what
happens / post a backtrace if you get a crash.

** Patch added: "no_invalid_spinny_check.patch"

https://bugs.launchpad.net/mixxx/+bug/1160353/+attachment/3633204/+files/no_invalid_spinny_check.patch

--
You received this bug notification because you are subscribed to the bug
report.
https://bugs.launchpad.net/bugs/1160353

Title:
"critical error" on startup with software gl renderer

Status in Mixxx:
In Progress

Bug description:
mixxx 1.11 revision 3779 from bzr

i am running mixxx on avlinux 6.0(based on debian squeeze)
using an nvidia geforce fx 5200 (old card) using the nouveau gpl
driver,
(software renderer)

since i am using the software renderer, i suspect that this is not
specific to my graphics card.

i have a laptop with an identical software configuration that does not
suffer from this problem which uses an intel graphics card.

i DONT GET THIS PROBLEM WITH THE CLOSED SOURCE NVIDIA DRIVERS,

on startup i get a dialog box with "critical error" in its title but
no text or buttons.

Debug [Main]: resize QSize(1024, 577)
Debug [Main]: Running Mixxx
Debug [Main]: ControllerManager::getControllerList
Warning [Main]: QGLShader: could not create shader
Warning [Main]: Vertex shader for simpleShaderProg (MainVertexShader &
PositionOnlyVertexShader) failed to compile
Warning [Main]: QGLShader: could not create shader
Warning [Main]: Fragment shader for simpleShaderProg
(MainFragmentShader
& ShockingPinkSrcFragmentShader) failed to compile
Warning [Main]: QGLShaderProgram: could not create shader program
Critical [Main]: Errors linking simple shader: ""

To manage notifications about this bug go to:
https://bugs.launchpad.net/mixxx/+bug/1160353/+subscriptions

--
http://www.ewancolsell.com/

--
You received this bug notification because you are a member of Mixxx
Development Team, which is subscribed to Mixxx.
https://bugs.launchpad.net/bugs/1160353

Title:
"critical error" on startup with software gl renderer

To manage notifications about this bug go to:
https://bugs.launchpad.net/mixxx/+bug/1160353/+subscriptions

@mixxxbot
Copy link
Collaborator Author

Commented by: rryan
Date: 2013-04-17T03:38:39Z


Marking fixed -- thanks Daniel!

@mixxxbot
Copy link
Collaborator Author

Issue closed with status Fix Released.

@mixxxbot mixxxbot transferred this issue from another repository Aug 24, 2022
@mixxxbot mixxxbot added this to the 1.11.0 milestone Aug 24, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

1 participant