waveform thread goes unresponsive, gets caught in loop
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
Mixxx |
Fix Released
|
Critical
|
RJ Skerry-Ryan | ||
1.6 |
Fix Released
|
Undecided
|
Unassigned | ||
1.7 |
Invalid
|
Undecided
|
Unassigned |
Bug Description
Occasionally, the waveform thread in mixxx 1.6.0 goes autistic and stops rendering waveforms for newly loaded tracks. Tracks loaded after this point are not displayed in the main waveform view window, and that thread's CPU usage goes to 100%. I am seeing this on linux x86-64. It is unpredictable, it occurs anywhere from 30min to 4+ hours after program start.
In the following dump, thread 18 (LWP 8270) is the offending thread:
Program received signal SIGTSTP, Stopped (user).
[Switching to Thread 0x7fc338e1e750 (LWP 8212)]
0x00007fc33280b6b6 in poll () from /lib/libc.so.6
(gdb) thread apply all bt
Thread 24 (Thread 0x454ac950 (LWP 8279)):
#0 0x00007fc33280b6b6 in poll () from /lib/libc.so.6
#1 0x00007fc333f3482b in PaAlsaStream_
from /usr/lib/
#2 0x00007fc333f3607f in CallbackThreadFunc () from /usr/lib/
#3 0x00007fc333d13017 in start_thread () from /lib/libpthread
#4 0x00007fc332813fdd in clone () from /lib/libc.so.6
#5 0x0000000000000000 in ?? ()
Thread 23 (Thread 0x44cab950 (LWP 8277)):
#0 0x00007fc333d16d89 in pthread_
from /lib/libpthread
#1 0x00007fc334f551d0 in QWaitCondition:
from /usr/lib/
#2 0x00000000005a28e2 in VinylControlXwa
at src/vinylcontro
#3 0x00007fc334f5474f in QThreadPrivate:
from /usr/lib/
#4 0x00007fc333d13017 in start_thread () from /lib/libpthread
#5 0x00007fc332813fdd in clone () from /lib/libc.so.6
#6 0x0000000000000000 in ?? ()
---Type <return> to continue, or q <return> to quit---
Thread 22 (Thread 0x444aa950 (LWP 8276)):
#0 0x00007fc333d16d89 in pthread_
from /lib/libpthread
#1 0x00007fc334f551d0 in QWaitCondition:
from /usr/lib/
#2 0x00000000005a28e2 in VinylControlXwa
at src/vinylcontro
#3 0x00007fc334f5474f in QThreadPrivate:
from /usr/lib/
#4 0x00007fc333d13017 in start_thread () from /lib/libpthread
#5 0x00007fc332813fdd in clone () from /lib/libc.so.6
#6 0x0000000000000000 in ?? ()
Thread 20 (Thread 0x43ca9950 (LWP 8272)):
#0 0x00007fc33280b6b6 in poll () from /lib/libc.so.6
#1 0x0000000000556910 in MidiObjectALSAS
at src/midiobjecta
#2 0x00007fc334f5474f in QThreadPrivate:
from /usr/lib/
#3 0x00007fc333d13017 in start_thread () from /lib/libpthread
#4 0x00007fc332813fdd in clone () from /lib/libc.so.6
#5 0x0000000000000000 in ?? ()
Thread 19 (Thread 0x434a8950 (LWP 8271)):
#0 0x00007fc333d16d89 in pthread_
from /lib/libpthread
#1 0x00007fc334f551d0 in QWaitCondition:
from /usr/lib/
#2 0x0000000000513694 in BpmDetector::run (this=0x27311e0)
at src/bpmdetector
#3 0x00007fc334f5474f in QThreadPrivate:
from /usr/lib/
#4 0x00007fc333d13017 in start_thread () from /lib/libpthread
#5 0x00007fc332813fdd in clone () from /lib/libc.so.6
#6 0x0000000000000000 in ?? ()
Thread 18 (Thread 0x42ca7950 (LWP 8270)):
#0 0x000000000050fd98 in WaveSummary:
this=<value optimized out>, pTrackInfoObjec
pSoundSourc
#1 0x0000000000510dde in WaveSummary::run (this=0x33d7190)
at src/wavesummary
#2 0x00007fc334f5474f in QThreadPrivate:
from /usr/lib/
#3 0x00007fc333d13017 in start_thread () from /lib/libpthread
#4 0x00007fc332813fdd in clone () from /lib/libc.so.6
#5 0x0000000000000000 in ?? ()
Thread 17 (Thread 0x424a6950 (LWP 8268)):
#0 0x00007fc33280d732 in select () from /lib/libc.so.6
#1 0x00007fc334fde48a in QProcessManager
from /usr/lib/
#2 0x00007fc334f5474f in QThreadPrivate:
from /usr/lib/
#3 0x00007fc333d13017 in start_thread () from /lib/libpthread
#4 0x00007fc332813fdd in clone () from /lib/libc.so.6
#5 0x0000000000000000 in ?? ()
Thread 4 (Thread 0x41ca5950 (LWP 8215)):
#0 0x00007fc333d16d89 in pthread_
from /lib/libpthread
#1 0x00007fc334f551d0 in QWaitCondition:
from /usr/lib/
#2 0x000000000054d889 in EngineSideChain
at src/enginesidec
#3 0x00007fc334f5474f in QThreadPrivate:
from /usr/lib/
#4 0x00007fc333d13017 in start_thread () from /lib/libpthread
#5 0x00007fc332813fdd in clone () from /lib/libc.so.6
#6 0x0000000000000000 in ?? ()
Thread 3 (Thread 0x414a4950 (LWP 8214)):
#0 0x00007fc333d16d89 in pthread_
from /lib/libpthread
#1 0x00007fc334f551d0 in QWaitCondition:
from /usr/lib/
#2 0x00000000004d5fc3 in Reader::run (this=0x26bc230) at src/reader.cpp:250
#3 0x00007fc334f5474f in QThreadPrivate:
from /usr/lib/
#4 0x00007fc333d13017 in start_thread () from /lib/libpthread
#5 0x00007fc332813fdd in clone () from /lib/libc.so.6
#6 0x0000000000000000 in ?? ()
Thread 2 (Thread 0x40ca3950 (LWP 8213)):
#0 0x00007fc333d16d89 in pthread_
from /lib/libpthread
#1 0x00007fc334f551d0 in QWaitCondition:
from /usr/lib/
#2 0x00000000004d5fc3 in Reader::run (this=0x26942e0) at src/reader.cpp:250
#3 0x00007fc334f5474f in QThreadPrivate:
from /usr/lib/
#4 0x00007fc333d13017 in start_thread () from /lib/libpthread
#5 0x00007fc332813fdd in clone () from /lib/libc.so.6
#6 0x0000000000000000 in ?? ()
Thread 1 (Thread 0x7fc338e1e750 (LWP 8212)):
#0 0x00007fc33280b6b6 in poll () from /lib/libc.so.6
#1 0x00007fc334649b05 in g_main_
from /usr/lib/
#2 0x00007fc334649e07 in g_main_
from /usr/lib/
#3 0x00007fc335017999 in QEventDispatche
from /usr/lib/
#4 0x00007fc336ecc28c in QGuiEventDispat
from /usr/lib/
#5 0x00007fc334ff792e in QEventLoop:
from /usr/lib/
#6 0x00007fc334ff7a9d in QEventLoop::exec () from /usr/lib/
#7 0x00007fc334ffa29d in QCoreApplicatio
from /usr/lib/
#8 0x0000000000495e89 in main (argc=1, argv=0x7fff40f6
at src/main.cpp:220
(gdb)
[Switching to thread 18 (Thread 0x42ca7950 (LWP 8270))]
#0 0x000000000050fd98 in WaveSummary:
pTrackInfoO
at src/wavesummary
226 while(filePos < numSamples && (j+2) < numDownsamples) {
(gdb) print filePos
$1 = 20694528
(gdb) print numSamples
$2 = 20696832
(gdb) print j
$3 = 188132
(gdb)
I've single-stepped through this and diagnosed it as best I can (not knowing more about mixxx's internals or C++ in general).
There's a commented out debugging message about this case (src/soundsourc
Changed in mixxx: | |
milestone: | none → 1.6.2 |
Changed in mixxx: | |
status: | Confirmed → Fix Released |
Changed in mixxx: | |
milestone: | 1.7.0-moving → none |
Thanks for the thorough bug report Mark. Patches are most definitely welcome for this, otherwise someone will try to fix this before 1.6.1 (no date for it yet, but not likely before the middle of September).