Comment 0 for bug 512850

Revision history for this message
ironstorm (ironstorm-gmail) wrote : Loading a track before library scan has complete causes deadlocks

System: Ubuntu Karmic i386 Linux running on an eeePC 901 (1.6Ghz atom).
Build: Mixxx trunk "(bzr r2275; built on: Jan 26 2010 @ 22:52:18) "

Steps to reproduce:
1. start Mixxx, provide it Music directory of large collection (in this case the collection is 14GB)
2. library scanner will begin to run
3. some tracks will start to appear in the library table
4. double-click on any of the scanned tracks as if you were playing it.

Expected result: track loads and starts playing
Actual result: Mixxx deadlocks, no playback, no further scanning occurs, neither main window nor scanning pop-up repaint.

Restarting will resume scanning, the bug can be reproduced again until scanning completes.

Here is the console from just before it deadlocks:
Debug: [LibraryScanner 1]: TrackCollection::importDirectory( "/media/PATRIOT 16G/Sarah McLachlan/Rarities, B-Sides & Other Stuff" )
Debug: [LibraryScanner 1]: created new hash 228048371
Debug: [LibraryScanner 1]: TrackCollection::importDirectory( "/media/PATRIOT 16G/Sarah McLachlan/Bloom_ Remix Album" )
Debug: [LibraryScanner 1]: created new hash 95977875
Debug: [LibraryScanner 1]: TrackCollection::importDirectory( "/media/PATRIOT 16G/Sarah McLachlan/Fumbling Towards Ecstasy" )
Debug: [Main]: TrackDAO::getTrack QThread(0x84017f0, name = "Main") "qt_sql_default_connection"
Debug: [Main]: TrackInfoObject: emitting bpmUpdated signal!
Debug: [Main]: setCuePoints 0
Debug: [Main]: TrackDAO::updateTrackInDatabase QThread(0x84017f0, name = "Main") "qt_sql_default_connection"
Debug: [Main]: Updating track "" in database...
Debug: [LibraryScanner 1]: created new hash 164337075
Debug: [LibraryScanner 1]: TrackCollection::importDirectory( "/media/PATRIOT 16G/Sarah McLachlan/Plastic Compilation Vol. 3" )

Here is the backtrace from GDB:
^C
Program received signal SIGINT, Interrupt.
0x00f19422 in __kernel_vsyscall ()
The program being debugged has been started already.
Start it from the beginning? (y or n) n
Program not restarted.
(gdb) bt
#0 0x00f19422 in __kernel_vsyscall ()
#1 0x00647e15 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib/tls/i686/cmov/libpthread.so.0
#2 0x00adf4d2 in ?? () from /usr/share/qt4/lib/libQtCore.so.4
#3 0x00adaba2 in QMutex::lock() () from /usr/share/qt4/lib/libQtCore.so.4
#4 0x080c8d78 in EngineBuffer::loadTrack (this=0x852f488, pTrack=0x944cee0) at src/engine/enginebuffer.cpp:655
#5 0x081a1f65 in Player::slotLoadTrack (this=0x876d5f8, track=0x944cee0, bStartFromEndPos=false) at src/player.cpp:89
#6 0x0810fc4a in MixxxApp::slotLoadTrackIntoNextAvailablePlayer (this=0x851c058, pTrack=0x944cee0) at src/mixxx.cpp:1239
#7 0x081fa9bd in MixxxApp::qt_metacall (this=0x851c058, _c=QMetaObject::InvokeMetaMethod, _id=13, _a=0xbfffcf28) at linux_build/moc_mixxx.cc:112
#8 0x00be6263 in QMetaObject::activate(QObject*, int, int, void**) () from /usr/share/qt4/lib/libQtCore.so.4
#9 0x00be6ec2 in QMetaObject::activate(QObject*, QMetaObject const*, int, void**) () from /usr/share/qt4/lib/libQtCore.so.4
#10 0x082014cc in Library::loadTrack (this=0xb26196f8, _t1=0x944cee0) at linux_build/library/moc_library.cc:127
#11 0x0816b73c in Library::slotLoadTrack (this=0xb26196f8, pTrack=0x944cee0) at src/library/library.cpp:141
#12 0x082013af in Library::qt_metacall (this=0xb26196f8, _c=QMetaObject::InvokeMetaMethod, _id=7, _a=0xbfffd048) at linux_build/library/moc_library.cc:97
#13 0x00be6263 in QMetaObject::activate(QObject*, int, int, void**) () from /usr/share/qt4/lib/libQtCore.so.4
#14 0x00be6ec2 in QMetaObject::activate(QObject*, QMetaObject const*, int, void**) () from /usr/share/qt4/lib/libQtCore.so.4
#15 0x081fbf62 in WTrackTableView::loadTrack (this=0x925c740, _t1=0x944cee0) at linux_build/moc_wtracktableview.cc:100
#16 0x08134738 in WTrackTableView::slotMouseDoubleClicked (this=0x925c740, index=...) at src/wtracktableview.cpp:174
#17 0x081fbee8 in WTrackTableView::qt_metacall (this=0x925c740, _c=QMetaObject::InvokeMetaMethod, _id=3, _a=0xbfffd178) at linux_build/moc_wtracktableview.cc:84
#18 0x00be6263 in QMetaObject::activate(QObject*, int, int, void**) () from /usr/share/qt4/lib/libQtCore.so.4
#19 0x00be6ec2 in QMetaObject::activate(QObject*, QMetaObject const*, int, void**) () from /usr/share/qt4/lib/libQtCore.so.4
#20 0x02e51003 in QAbstractItemView::doubleClicked(QModelIndex const&) () from /usr/share/qt4/lib/libQtGui.so.4
#21 0x02e54287 in QAbstractItemView::mouseDoubleClickEvent(QMouseEvent*) () from /usr/share/qt4/lib/libQtGui.so.4
#22 0x0295fe47 in QWidget::event(QEvent*) () from /usr/share/qt4/lib/libQtGui.so.4
#23 0x02d0f633 in QFrame::event(QEvent*) () from /usr/share/qt4/lib/libQtGui.so.4
#24 0x02dae494 in QAbstractScrollArea::viewportEvent(QEvent*) () from /usr/share/qt4/lib/libQtGui.so.4
#25 0x02e62087 in QAbstractItemView::viewportEvent(QEvent*) () from /usr/share/qt4/lib/libQtGui.so.4
#26 0x02db0a95 in ?? () from /usr/share/qt4/lib/libQtGui.so.4
#27 0x00bcf83a in QCoreApplicationPrivate::sendThroughObjectEventFilters(QObject*, QEvent*) () from /usr/share/qt4/lib/libQtCore.so.4
#28 0x0290af2c in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /usr/share/qt4/lib/libQtGui.so.4
#29 0x02913033 in QApplication::notify(QObject*, QEvent*) () from /usr/share/qt4/lib/libQtGui.so.4
#30 0x00bd06cb in QCoreApplication::notifyInternal(QObject*, QEvent*) () from /usr/share/qt4/lib/libQtCore.so.4
#31 0x02911f6e in QApplicationPrivate::sendMouseEvent(QWidget*, QMouseEvent*, QWidget*, QWidget*, QWidget**, QPointer<QWidget>&) ()
   from /usr/share/qt4/lib/libQtGui.so.4
#32 0x029807c0 in ?? () from /usr/share/qt4/lib/libQtGui.so.4
#33 0x0297fc4b in QApplication::x11ProcessEvent(_XEvent*) () from /usr/share/qt4/lib/libQtGui.so.4
#34 0x029ac502 in ?? () from /usr/share/qt4/lib/libQtGui.so.4
---Type <return> to continue, or q <return> to quit---
#35 0x013e6e88 in g_main_context_dispatch () from /lib/libglib-2.0.so.0
#36 0x013ea730 in ?? () from /lib/libglib-2.0.so.0
#37 0x013ea863 in g_main_context_iteration () from /lib/libglib-2.0.so.0
#38 0x00bfb02c in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/share/qt4/lib/libQtCore.so.4
#39 0x029abbe5 in ?? () from /usr/share/qt4/lib/libQtGui.so.4
#40 0x00bcec79 in QEventLoop::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/share/qt4/lib/libQtCore.so.4
#41 0x00bcf0ca in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/share/qt4/lib/libQtCore.so.4
#42 0x00bd153f in QCoreApplication::exec() () from /usr/share/qt4/lib/libQtCore.so.4
#43 0x0290add7 in QApplication::exec() () from /usr/share/qt4/lib/libQtGui.so.4
#44 0x080fcca7 in main (argc=3, argv=0xbffff444) at src/main.cpp:313