Bug 222438

Summary: [PATCH] collection update crash short before finished
Product: [Applications] amarok Reporter: Ulf Bartholomäus <ub1x>
Component: Collections/LocalAssignee: Amarok Developers <amarok-bugs-dist>
Status: RESOLVED FIXED    
Severity: crash CC: dkaznadzey, kelly, kwbolte, mannequinZOD, mitchell, ra.be.baerlin
Priority: NOR    
Version: 2.2.2   
Target Milestone: 2.3.0   
Platform: openSUSE   
OS: Linux   
Latest Commit: Version Fixed In: 2.3.0
Sentry Crash Report:
Attachments: Patch ScanResultProcessor destructor to avoid double frees of QStringList
New crash information added by DrKonqi

Description Ulf Bartholomäus 2010-01-12 21:16:26 UTC
Application that crashed: amarok
Version of the application: 2.2.2
KDE Version: 4.3.4 (KDE 4.3.4) "release 2"
Qt Version: 4.5.3
Operating System: Linux 2.6.31.8-0.1-desktop x86_64
Distribution: "openSUSE 11.2 (x86_64)"

What I was doing when the application crashed:
So as in [Bug 215731] "Collection browser shows wrong cover" described, a full rescan is started in the amaroK settings dialog. The rescan starts (on the NFS-Mounted path) and send to a local MySQL database. No other tasks ar running, playlist is empty (works with 2.2.1 version fine - but crashes with 2.2.2 Version (from yesterday and today - from openSUSE 11.2 repository). The crash is coming short befor rescan is finished (1 time with version from yesterday - 2 times with version from today).

 -- Backtrace:
Application: Amarok (amarok), signal: Segmentation fault
[Current thread is 1 (Thread 0x7fcb946f4750 (LWP 12613))]

Thread 15 (Thread 0x7fcb7b713910 (LWP 12645)):
#0  0x00007fcb9131d2cd in pthread_cond_timedwait@@GLIBC_2.3.2 () from /lib64/libpthread.so.0
#1  0x00007fcb81662621 in metronom_sync_loop () from /usr/lib64/libxine.so.1
#2  0x00007fcb9131865d in start_thread () from /lib64/libpthread.so.0
#3  0x00007fcb9185714d in clone () from /lib64/libc.so.6
#4  0x0000000000000000 in ?? ()

Thread 14 (Thread 0x7fcb79bd9910 (LWP 12657)):
#0  0x00007fcb9184e033 in poll () from /lib64/libc.so.6
#1  0x00007fcb8ae5958c in ?? () from /usr/lib64/libglib-2.0.so.0
#2  0x00007fcb8ae598d0 in g_main_context_iteration () from /usr/lib64/libglib-2.0.so.0
#3  0x00007fcb92d013f6 in QEventDispatcherGlib::processEvents (this=0x84f0e0, flags=<value optimized out>) at kernel/qeventdispatcher_glib.cpp:409
#4  0x00007fcb92cd7712 in QEventLoop::processEvents (this=<value optimized out>, flags=) at kernel/qeventloop.cpp:149
#5  0x00007fcb92cd7ae4 in QEventLoop::exec (this=0x7fcb79bd9000, flags=) at kernel/qeventloop.cpp:201
#6  0x00007fcb92bf071b in QThread::exec (this=<value optimized out>) at thread/qthread.cpp:487
#7  0x00007fcb818be394 in Phonon::MediaSource::type() const () from /usr/lib64/kde4/plugins/phonon_backend/phonon_xine.so
#8  0x00007fcb92bf3485 in QThreadPrivate::start (arg=0x75d570) at thread/qthread_unix.cpp:188
#9  0x00007fcb9131865d in start_thread () from /lib64/libpthread.so.0
#10 0x00007fcb9185714d in clone () from /lib64/libc.so.6
#11 0x0000000000000000 in ?? ()

Thread 13 (Thread 0x7fcb791ce910 (LWP 12664)):
#0  0x00007fcb9184e033 in poll () from /lib64/libc.so.6
#1  0x00007fcb791d4c4e in ao_alsa_handle_event_thread () from /usr/lib64/xine/plugins/1.27/xineplug_ao_out_alsa.so
#2  0x00007fcb9131865d in start_thread () from /lib64/libpthread.so.0
#3  0x00007fcb9185714d in clone () from /lib64/libc.so.6
#4  0x0000000000000000 in ?? ()

Thread 12 (Thread 0x7fcb789cd910 (LWP 12665)):
#0  0x00007fcb9131d049 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/libpthread.so.0
#1  0x00007fcb81673673 in ao_loop () from /usr/lib64/libxine.so.1
#2  0x00007fcb9131865d in start_thread () from /lib64/libpthread.so.0
#3  0x00007fcb9185714d in clone () from /lib64/libc.so.6
#4  0x0000000000000000 in ?? ()

Thread 11 (Thread 0x7fcb77bb5910 (LWP 12666)):
#0  0x00007fcb9131d049 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/libpthread.so.0
#1  0x00007fcb81673673 in ao_loop () from /usr/lib64/libxine.so.1
#2  0x00007fcb9131865d in start_thread () from /lib64/libpthread.so.0
#3  0x00007fcb9185714d in clone () from /lib64/libc.so.6
#4  0x0000000000000000 in ?? ()

Thread 10 (Thread 0x7fcb773b4910 (LWP 12667)):
#0  0x00007fcb9131d049 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/libpthread.so.0
#1  0x00007fcb81673673 in ao_loop () from /usr/lib64/libxine.so.1
#2  0x00007fcb9131865d in start_thread () from /lib64/libpthread.so.0
#3  0x00007fcb9185714d in clone () from /lib64/libc.so.6
#4  0x0000000000000000 in ?? ()

Thread 9 (Thread 0x7fcb76bb3910 (LWP 12668)):
#0  0x00007fcb9131d049 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/libpthread.so.0
#1  0x00007fcb81673673 in ao_loop () from /usr/lib64/libxine.so.1
#2  0x00007fcb9131865d in start_thread () from /lib64/libpthread.so.0
#3  0x00007fcb9185714d in clone () from /lib64/libc.so.6
#4  0x0000000000000000 in ?? ()

Thread 8 (Thread 0x7fcb6b232910 (LWP 12818)):
#0  0x00007fcb9186431e in ?? () from /lib64/libc.so.6
#1  0x00007fcb917ff599 in ?? () from /lib64/libc.so.6
#2  0x00007fcb917fd961 in free () from /lib64/libc.so.6
#3  0x00007fcb92c35b8c in QString::free (d=0xec6ce40) at tools/qstring.cpp:955
#4  0x00007fcb75e6a469 in QString::number(double, char, int) () at tools/qstring.cpp:5802
#5  0x00007fcb75e902f1 in QString::number(double, char, int) () at tools/qstring.cpp:5802
#6  0x00007fcb75e8713d in QString::number(double, char, int) () at tools/qstring.cpp:5802
#7  0x00007fcb8f269eed in ?? () from /usr/lib64/libthreadweaver.so.4
#8  0x00007fcb8f26a1ee in ThreadWeaver::Job::execute(ThreadWeaver::Thread*) () from /usr/lib64/libthreadweaver.so.4
#9  0x00007fcb8f2691bf in ?? () from /usr/lib64/libthreadweaver.so.4
#10 0x00007fcb8f269648 in ThreadWeaver::Thread::run() () from /usr/lib64/libthreadweaver.so.4
#11 0x00007fcb92bf3485 in QThreadPrivate::start (arg=0x14faa60) at thread/qthread_unix.cpp:188
#12 0x00007fcb9131865d in start_thread () from /lib64/libpthread.so.0
#13 0x00007fcb9185714d in clone () from /lib64/libc.so.6
#14 0x0000000000000000 in ?? ()

Thread 7 (Thread 0x7fcb6aa31910 (LWP 12822)):
#0  0x00007fcb9131d049 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/libpthread.so.0
#1  0x00007fcb92bf453b in wait (time=<value optimized out>, this=<value optimized out>) at thread/qwaitcondition_unix.cpp:87
#2  QWaitCondition::wait (time=<value optimized out>, this=<value optimized out>) at thread/qwaitcondition_unix.cpp:159
#3  0x00007fcb8f268ab6 in ?? () from /usr/lib64/libthreadweaver.so.4
#4  0x00007fcb8f26abeb in ?? () from /usr/lib64/libthreadweaver.so.4
#5  0x00007fcb8f2691ef in ?? () from /usr/lib64/libthreadweaver.so.4
#6  0x00007fcb8f269648 in ThreadWeaver::Thread::run() () from /usr/lib64/libthreadweaver.so.4
#7  0x00007fcb92bf3485 in QThreadPrivate::start (arg=0x14f9080) at thread/qthread_unix.cpp:188
#8  0x00007fcb9131865d in start_thread () from /lib64/libpthread.so.0
#9  0x00007fcb9185714d in clone () from /lib64/libc.so.6
#10 0x0000000000000000 in ?? ()

Thread 6 (Thread 0x7fcb6a230910 (LWP 12823)):
#0  0x00007fcb9131d049 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/libpthread.so.0
#1  0x00007fcb92bf453b in wait (time=<value optimized out>, this=<value optimized out>) at thread/qwaitcondition_unix.cpp:87
#2  QWaitCondition::wait (time=<value optimized out>, this=<value optimized out>) at thread/qwaitcondition_unix.cpp:159
#3  0x00007fcb8f268ab6 in ?? () from /usr/lib64/libthreadweaver.so.4
#4  0x00007fcb8f26abeb in ?? () from /usr/lib64/libthreadweaver.so.4
#5  0x00007fcb8f2691ef in ?? () from /usr/lib64/libthreadweaver.so.4
#6  0x00007fcb8f269648 in ThreadWeaver::Thread::run() () from /usr/lib64/libthreadweaver.so.4
#7  0x00007fcb92bf3485 in QThreadPrivate::start (arg=0x14f9d00) at thread/qthread_unix.cpp:188
#8  0x00007fcb9131865d in start_thread () from /lib64/libpthread.so.0
#9  0x00007fcb9185714d in clone () from /lib64/libc.so.6
#10 0x0000000000000000 in ?? ()

Thread 5 (Thread 0x7fcb680c4910 (LWP 12895)):
#0  0x00007fcb9131d049 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/libpthread.so.0
#1  0x00007fcb92bf453b in wait (time=<value optimized out>, this=<value optimized out>) at thread/qwaitcondition_unix.cpp:87
#2  QWaitCondition::wait (time=<value optimized out>, this=<value optimized out>) at thread/qwaitcondition_unix.cpp:159
#3  0x00007fcb8f268ab6 in ?? () from /usr/lib64/libthreadweaver.so.4
#4  0x00007fcb8f26abeb in ?? () from /usr/lib64/libthreadweaver.so.4
#5  0x00007fcb8f2691ef in ?? () from /usr/lib64/libthreadweaver.so.4
#6  0x00007fcb8f269648 in ThreadWeaver::Thread::run() () from /usr/lib64/libthreadweaver.so.4
#7  0x00007fcb92bf3485 in QThreadPrivate::start (arg=0x11a9fe0) at thread/qthread_unix.cpp:188
#8  0x00007fcb9131865d in start_thread () from /lib64/libpthread.so.0
#9  0x00007fcb9185714d in clone () from /lib64/libc.so.6
#10 0x0000000000000000 in ?? ()

Thread 4 (Thread 0x7fcb56827910 (LWP 13314)):
#0  0x00007fcb9186431e in ?? () from /lib64/libc.so.6
#1  0x00007fcb917ff599 in ?? () from /lib64/libc.so.6
#2  0x00007fcb917fd961 in free () from /lib64/libc.so.6
#3  0x00007fcb8ae55703 in ?? () from /usr/lib64/libglib-2.0.so.0
#4  0x00007fcb92d01e42 in QEventDispatcherGlib::~QEventDispatcherGlib (this=0xa4e3df0, __in_chrg=<value optimized out>) at kernel/qeventdispatcher_glib.cpp:361
#5  0x00007fcb92bf363c in QThreadPrivate::finish (arg=<value optimized out>) at thread/qthread_unix.cpp:212
#6  0x00007fcb92bf348d in ~__pthread_cleanup_class (this=<value optimized out>, __in_chrg=<value optimized out>) at /usr/include/pthread.h:535
#7  QThreadPrivate::start (this=<value optimized out>, __in_chrg=<value optimized out>) at thread/qthread_unix.cpp:190
#8  0x00007fcb9131865d in start_thread () from /lib64/libpthread.so.0
#9  0x00007fcb9185714d in clone () from /lib64/libc.so.6
#10 0x0000000000000000 in ?? ()

Thread 3 (Thread 0x7fcb64cb3910 (LWP 23780)):
#0  0x00007fcb9131d049 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/libpthread.so.0
#1  0x00007fcb92bf453b in wait (time=<value optimized out>, this=<value optimized out>) at thread/qwaitcondition_unix.cpp:87
#2  QWaitCondition::wait (time=<value optimized out>, this=<value optimized out>) at thread/qwaitcondition_unix.cpp:159
#3  0x00007fcb9263cf4e in ?? () from /usr/lib64/libQtGui.so.4
#4  0x00007fcb92bf3485 in QThreadPrivate::start (arg=0x2939720) at thread/qthread_unix.cpp:188
#5  0x00007fcb9131865d in start_thread () from /lib64/libpthread.so.0
#6  0x00007fcb9185714d in clone () from /lib64/libc.so.6
#7  0x0000000000000000 in ?? ()

Thread 2 (Thread 0x7fcb553ad910 (LWP 23781)):
#0  0x00007fcb9186431e in ?? () from /lib64/libc.so.6
#1  0x00007fcb917ff599 in ?? () from /lib64/libc.so.6
#2  0x00007fcb917fd961 in free () from /lib64/libc.so.6
#3  0x00007fcb92d017b1 in socketNotifierSourceCheck (source=<value optimized out>) at kernel/qeventdispatcher_glib.cpp:92
#4  0x00007fcb8ae58cba in g_main_context_check () from /usr/lib64/libglib-2.0.so.0
#5  0x00007fcb8ae594a0 in ?? () from /usr/lib64/libglib-2.0.so.0
#6  0x00007fcb8ae598d0 in g_main_context_iteration () from /usr/lib64/libglib-2.0.so.0
#7  0x00007fcb92d013a3 in QEventDispatcherGlib::processEvents (this=0x7d5420, flags=<value optimized out>) at kernel/qeventdispatcher_glib.cpp:407
#8  0x00007fcb92cd7712 in QEventLoop::processEvents (this=<value optimized out>, flags=) at kernel/qeventloop.cpp:149
#9  0x00007fcb92cd7ae4 in QEventLoop::exec (this=0x7fcb553ad010, flags=) at kernel/qeventloop.cpp:201
#10 0x00007fcb92bf071b in QThread::exec (this=<value optimized out>) at thread/qthread.cpp:487
#11 0x00007fcb92cbad48 in QInotifyFileSystemWatcherEngine::run (this=0xe8b8cc0) at io/qfilesystemwatcher_inotify.cpp:214
#12 0x00007fcb92bf3485 in QThreadPrivate::start (arg=0xe8b8cc0) at thread/qthread_unix.cpp:188
#13 0x00007fcb9131865d in start_thread () from /lib64/libpthread.so.0
#14 0x00007fcb9185714d in clone () from /lib64/libc.so.6
#15 0x0000000000000000 in ?? ()

Thread 1 (Thread 0x7fcb946f4750 (LWP 12613)):
[KCrash Handler]
#5  0x00007fcb917f8f8d in ?? () from /lib64/libc.so.6
#6  0x00007fcb917fb3e4 in ?? () from /lib64/libc.so.6
#7  0x00007fcb917fda59 in malloc () from /lib64/libc.so.6
#8  0x00007fcb92bf65ed in QByteArray::resize (this=0x7fffafe36210, size=2944) at tools/qbytearray.cpp:1336
#9  0x00007fcb92c35249 in QString::toUtf8 (this=0x7fffafe36470) at tools/qstring.cpp:3376
#10 0x00007fcb75ed9b86 in QString::number(double, char, int) () at tools/qstring.cpp:5802
#11 0x00007fcb75edb11e in ?? () from /usr/lib64/kde4/amarok_collection-mysqlservercollection.so
#12 0x00007fcb75ec600c in QString::number(double, char, int) () at tools/qstring.cpp:5802
#13 0x00007fcb75ea7f95 in QString::number(double, char, int) () at tools/qstring.cpp:5802
#14 0x00007fcb75ea87e2 in QString::number(double, char, int) () at tools/qstring.cpp:5802
#15 0x00007fcb92ce82d9 in QObject::event (this=0x105cd90, e=0x24fdcf0) at kernel/qobject.cpp:1111
#16 0x00007fcb921a42ac in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /usr/lib64/libQtGui.so.4
#17 0x00007fcb921ab57e in QApplication::notify(QObject*, QEvent*) () from /usr/lib64/libQtGui.so.4
#18 0x00007fcb939bce4a in App::notify(QObject*, QEvent*) () from /usr/lib64/libamaroklib.so.1
#19 0x00007fcb92cd8ddc in QCoreApplication::notifyInternal (this=0x7fffafe37050, receiver=0x105cd90, event=0x24fdcf0) at kernel/qcoreapplication.cpp:610
#20 0x00007fcb92cd99ea in sendEvent (event=<value optimized out>, receiver=<value optimized out>) at kernel/qcoreapplication.h:213
#21 QCoreApplicationPrivate::sendPostedEvents (event=<value optimized out>, receiver=<value optimized out>) at kernel/qcoreapplication.cpp:1247
#22 0x00007fcb92d01803 in sendPostedEvents () at kernel/qcoreapplication.h:218
#23 postEventSourceDispatch () at kernel/qeventdispatcher_glib.cpp:276
#24 0x00007fcb8ae55dde in g_main_context_dispatch () from /usr/lib64/libglib-2.0.so.0
#25 0x00007fcb8ae597a8 in ?? () from /usr/lib64/libglib-2.0.so.0
#26 0x00007fcb8ae598d0 in g_main_context_iteration () from /usr/lib64/libglib-2.0.so.0
#27 0x00007fcb92d013a3 in QEventDispatcherGlib::processEvents (this=0x61feb0, flags=<value optimized out>) at kernel/qeventdispatcher_glib.cpp:407
#28 0x00007fcb9223731e in ?? () from /usr/lib64/libQtGui.so.4
#29 0x00007fcb92cd7712 in QEventLoop::processEvents (this=<value optimized out>, flags=) at kernel/qeventloop.cpp:149
#30 0x00007fcb92cd7ae4 in QEventLoop::exec (this=0x7fffafe36fe0, flags=) at kernel/qeventloop.cpp:201
#31 0x00007fcb92cd9c99 in QCoreApplication::exec () at kernel/qcoreapplication.cpp:888
#32 0x000000000040a264 in _start ()

Reported using DrKonqi
Comment 1 Myriam Schweingruber 2010-01-13 00:07:30 UTC
Sorry, but your backtrace is not useful, as you are lacking debugging symbols. If you can reproduce this bug, please check here on how to get a valid backtrace:

http://techbase.kde.org/Development/Tutorials/Debugging/How_to_create_useful_crash_reports
Comment 2 Ulf Bartholomäus 2010-01-13 22:46:00 UTC
I generate a new bug report after "zypper in amarok-debuginfo", but I see no different information in the file. 

Install information:
Retrieving package amarok-debuginfo-2.2.2-53.1.x86_64 (1/1), 34.2 MiB (156.0 MiB unpacked)
Retrieving: amarok-debuginfo-2.2.2-53.1.x86_64.rpm [done (92.2 KiB/s)]
Retrieving package amarok-debuginfo-2.2.2-53.1.x86_64 (2/1), 34.2 MiB (156.0 MiB unpacked)
Installing: amarok-debuginfo-2.2.2-53.1 [done]

Which debug information you need? I wouldn't install all debug packages (GlibC / Qt).
Comment 3 Myriam Schweingruber 2010-01-14 11:06:05 UTC
To get a valid backtrace for Amarok and it's dependecies I have the debugging packages for Amarok, Phonon, libqt, kdelibs and libglib installed. This should be enough.
The crash can be in any of those.
Comment 4 Myriam Schweingruber 2010-01-14 11:36:50 UTC
And BTW, you should also get the latest glibc version, there should be a recent one available. See also bug 196207
Comment 5 Ulf Bartholomäus 2010-01-16 11:18:33 UTC
Backtrace with debugging packages for Amarok, Phonon, libqt, kdelibs and libglib installed (I test 6 crashes - every crash is at 97%):

Application: Amarok (amarok), signal: Segmentation fault
[Current thread is 1 (Thread 0x7f71649dc750 (LWP 12471))]

Thread 15 (Thread 0x7f714ef40910 (LWP 12476)):
#0  0x00007f71616052cd in pthread_cond_timedwait@@GLIBC_2.3.2 () from /lib64/libpthread.so.0
#1  0x00007f7154e8f621 in metronom_sync_loop () from /usr/lib64/libxine.so.1
#2  0x00007f716160065d in start_thread () from /lib64/libpthread.so.0
#3  0x00007f7161b3f14d in clone () from /lib64/libc.so.6
#4  0x0000000000000000 in ?? ()

Thread 14 (Thread 0x7f714d406910 (LWP 12477)):
#0  0x00007fff2cfff82c in clock_gettime ()
#1  0x00007f715b3cd308 in clock_gettime () from /lib64/librt.so.1
#2  0x00007f7162feb09d in QTimerInfoList::getTime (this=<value optimized out>, t=...) at kernel/qeventdispatcher_unix.cpp:339
#3  0x00007f7162feb291 in QTimerInfoList::updateCurrentTime (this=0x1) at kernel/qeventdispatcher_unix.cpp:297
#4  0x00007f7162feb435 in QTimerInfoList::timerWait (this=0x1, tm=...) at kernel/qeventdispatcher_unix.cpp:420
#5  0x00007f7162fe958d in timerSourcePrepareHelper (src=<value optimized out>, timeout=0x7f714d405e6c) at kernel/qeventdispatcher_glib.cpp:136
#6  0x00007f715b140fca in IA__g_main_context_prepare (context=0x835ef0, priority=<value optimized out>) at gmain.c:2280
#7  0x00007f715b1413a1 in g_main_context_iterate (context=0x835ef0, block=<value optimized out>, dispatch=<value optimized out>, self=<value optimized out>) at gmain.c:2571
#8  0x00007f715b1418d0 in IA__g_main_context_iteration (context=0x835ef0, may_block=1) at gmain.c:2654
#9  0x00007f7162fe93f6 in QEventDispatcherGlib::processEvents (this=0x813dd0, flags=<value optimized out>) at kernel/qeventdispatcher_glib.cpp:409
#10 0x00007f7162fbf712 in QEventLoop::processEvents (this=<value optimized out>, flags=) at kernel/qeventloop.cpp:149
#11 0x00007f7162fbfae4 in QEventLoop::exec (this=0x7f714d406000, flags=) at kernel/qeventloop.cpp:201
#12 0x00007f7162ed871b in QThread::exec (this=<value optimized out>) at thread/qthread.cpp:487
#13 0x00007f71550eb394 in Phonon::Xine::XineThread::run (this=0x892e10) at /usr/src/debug/phonon-4.3.80/xine/xinethread.cpp:143
#14 0x00007f7162edb485 in QThreadPrivate::start (arg=0x892e10) at thread/qthread_unix.cpp:188
#15 0x00007f716160065d in start_thread () from /lib64/libpthread.so.0
#16 0x00007f7161b3f14d in clone () from /lib64/libc.so.6
#17 0x0000000000000000 in ?? ()

Thread 13 (Thread 0x7f714c9fb910 (LWP 12484)):
#0  0x00007f7161b36033 in poll () from /lib64/libc.so.6
#1  0x00007f714ca01c4e in ao_alsa_handle_event_thread () from /usr/lib64/xine/plugins/1.27/xineplug_ao_out_alsa.so
#2  0x00007f716160065d in start_thread () from /lib64/libpthread.so.0
#3  0x00007f7161b3f14d in clone () from /lib64/libc.so.6
#4  0x0000000000000000 in ?? ()

Thread 12 (Thread 0x7f714c1fa910 (LWP 12485)):
#0  0x00007f7161605049 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/libpthread.so.0
#1  0x00007f7154ea0673 in ao_loop () from /usr/lib64/libxine.so.1
#2  0x00007f716160065d in start_thread () from /lib64/libpthread.so.0
#3  0x00007f7161b3f14d in clone () from /lib64/libc.so.6
#4  0x0000000000000000 in ?? ()

Thread 11 (Thread 0x7f714b3e2910 (LWP 12486)):
#0  0x00007f7161605049 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/libpthread.so.0
#1  0x00007f7154ea0673 in ao_loop () from /usr/lib64/libxine.so.1
#2  0x00007f716160065d in start_thread () from /lib64/libpthread.so.0
#3  0x00007f7161b3f14d in clone () from /lib64/libc.so.6
#4  0x0000000000000000 in ?? ()

Thread 10 (Thread 0x7f714abe1910 (LWP 12487)):
#0  0x00007f7161605049 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/libpthread.so.0
#1  0x00007f7154ea0673 in ao_loop () from /usr/lib64/libxine.so.1
#2  0x00007f716160065d in start_thread () from /lib64/libpthread.so.0
#3  0x00007f7161b3f14d in clone () from /lib64/libc.so.6
#4  0x0000000000000000 in ?? ()

Thread 9 (Thread 0x7f714a3e0910 (LWP 12488)):
#0  0x00007f7161605049 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/libpthread.so.0
#1  0x00007f7154ea0673 in ao_loop () from /usr/lib64/libxine.so.1
#2  0x00007f716160065d in start_thread () from /lib64/libpthread.so.0
#3  0x00007f7161b3f14d in clone () from /lib64/libc.so.6
#4  0x0000000000000000 in ?? ()

Thread 8 (Thread 0x7f713f578910 (LWP 12525)):
#0  0x00007f7161605049 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/libpthread.so.0
#1  0x00007f7162edc53b in wait (time=<value optimized out>, this=<value optimized out>) at thread/qwaitcondition_unix.cpp:87
#2  QWaitCondition::wait (time=<value optimized out>, this=<value optimized out>) at thread/qwaitcondition_unix.cpp:159
#3  0x00007f715f550ab6 in ?? () from /usr/lib64/libthreadweaver.so.4
#4  0x00007f715f552beb in ?? () from /usr/lib64/libthreadweaver.so.4
#5  0x00007f715f552c04 in ?? () from /usr/lib64/libthreadweaver.so.4
#6  0x00007f715f552c04 in ?? () from /usr/lib64/libthreadweaver.so.4
#7  0x00007f715f5511ef in ?? () from /usr/lib64/libthreadweaver.so.4
#8  0x00007f715f551648 in ThreadWeaver::Thread::run() () from /usr/lib64/libthreadweaver.so.4
#9  0x00007f7162edb485 in QThreadPrivate::start (arg=0x153ad30) at thread/qthread_unix.cpp:188
#10 0x00007f716160065d in start_thread () from /lib64/libpthread.so.0
#11 0x00007f7161b3f14d in clone () from /lib64/libc.so.6
#12 0x0000000000000000 in ?? ()

Thread 7 (Thread 0x7f713ed77910 (LWP 12526)):
[KCrash Handler]
#5  0x00007f7161ae0f8d in ?? () from /lib64/libc.so.6
#6  0x00007f7161ae25d8 in ?? () from /lib64/libc.so.6
#7  0x00007f7161ae596c in free () from /lib64/libc.so.6
#8  0x00007f71496bd2f1 in ~QList (this=<value optimized out>, __in_chrg=<value optimized out>) at /usr/include/QtCore/qlist.h:534
#9  ~QStringList (this=<value optimized out>, __in_chrg=<value optimized out>) at /usr/include/QtCore/qstringlist.h:67
#10 ScanResultProcessor::~ScanResultProcessor (this=<value optimized out>, __in_chrg=<value optimized out>) at /usr/src/debug/amarok-2.2.2/src/collection/sqlcollection/ScanResultProcessor.cpp:69
#11 0x00007f71496b413d in XmlParseJob::run (this=0xbe762a0) at /usr/src/debug/amarok-2.2.2/src/collection/sqlcollection/ScanManager.cpp:855
#12 0x00007f715f551eed in ?? () from /usr/lib64/libthreadweaver.so.4
#13 0x00007f715f5521ee in ThreadWeaver::Job::execute(ThreadWeaver::Thread*) () from /usr/lib64/libthreadweaver.so.4
#14 0x00007f715f5511bf in ?? () from /usr/lib64/libthreadweaver.so.4
#15 0x00007f715f551648 in ThreadWeaver::Thread::run() () from /usr/lib64/libthreadweaver.so.4
#16 0x00007f7162edb485 in QThreadPrivate::start (arg=0x14e3d20) at thread/qthread_unix.cpp:188
#17 0x00007f716160065d in start_thread () from /lib64/libpthread.so.0
#18 0x00007f7161b3f14d in clone () from /lib64/libc.so.6
#19 0x0000000000000000 in ?? ()

Thread 6 (Thread 0x7f713e576910 (LWP 12530)):
#0  0x00007f7161b4c31e in ?? () from /lib64/libc.so.6
#1  0x00007f7161ae7599 in ?? () from /lib64/libc.so.6
#2  0x00007f7161ae5961 in free () from /lib64/libc.so.6
#3  0x00007f7149706bb4 in ~QByteArray (this=<value optimized out>, __in_chrg=<value optimized out>) at /usr/include/QtCore/qbytearray.h:375
#4  MySqlCollection::query (this=<value optimized out>, __in_chrg=<value optimized out>) at /usr/src/debug/amarok-2.2.2/src/collection/mysql-shared/MySqlCollection.cpp:121
#5  0x00007f714970811e in MySqlServerCollection::query (this=0xf222d0, query=...) at /usr/src/debug/amarok-2.2.2/src/collection/mysqlservercollection/MySqlServerCollection.cpp:147
#6  0x00007f71496e697a in SqlQueryMakerInternal::run (this=0x7f7124001ad0) at /usr/src/debug/amarok-2.2.2/src/collection/sqlcollection/SqlQueryMakerInternal.cpp:46
#7  0x00007f71496e3eed in SqlWorkerThread::run (this=0x7f71240036c0) at /usr/src/debug/amarok-2.2.2/src/collection/sqlcollection/SqlQueryMaker.cpp:66
#8  0x00007f715f551eed in ?? () from /usr/lib64/libthreadweaver.so.4
#9  0x00007f715f5521ee in ThreadWeaver::Job::execute(ThreadWeaver::Thread*) () from /usr/lib64/libthreadweaver.so.4
#10 0x00007f715f5511bf in ?? () from /usr/lib64/libthreadweaver.so.4
#11 0x00007f715f551648 in ThreadWeaver::Thread::run() () from /usr/lib64/libthreadweaver.so.4
#12 0x00007f7162edb485 in QThreadPrivate::start (arg=0x155c8d0) at thread/qthread_unix.cpp:188
#13 0x00007f716160065d in start_thread () from /lib64/libpthread.so.0
#14 0x00007f7161b3f14d in clone () from /lib64/libc.so.6
#15 0x0000000000000000 in ?? ()

Thread 5 (Thread 0x7f713557c910 (LWP 12604)):
#0  0x00007f7161b4c31e in ?? () from /lib64/libc.so.6
#1  0x00007f7161ae7599 in ?? () from /lib64/libc.so.6
#2  0x00007f7161ae5961 in free () from /lib64/libc.so.6
#3  0x00007f715b13d703 in g_source_unref_internal (source=0x8c28470, context=0x8c26ee0, have_lock=0) at gmain.c:1339
#4  0x00007f7162fe9e42 in QEventDispatcherGlib::~QEventDispatcherGlib (this=0x8c26e00, __in_chrg=<value optimized out>) at kernel/qeventdispatcher_glib.cpp:361
#5  0x00007f7162edb63c in QThreadPrivate::finish (arg=<value optimized out>) at thread/qthread_unix.cpp:212
#6  0x00007f7162edb48d in ~__pthread_cleanup_class (this=<value optimized out>, __in_chrg=<value optimized out>) at /usr/include/pthread.h:535
#7  QThreadPrivate::start (this=<value optimized out>, __in_chrg=<value optimized out>) at thread/qthread_unix.cpp:190
#8  0x00007f716160065d in start_thread () from /lib64/libpthread.so.0
#9  0x00007f7161b3f14d in clone () from /lib64/libc.so.6
#10 0x0000000000000000 in ?? ()

Thread 4 (Thread 0x7f713d81d910 (LWP 12825)):
#0  0x00007f7161605049 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/libpthread.so.0
#1  0x00007f7162edc53b in wait (time=<value optimized out>, this=<value optimized out>) at thread/qwaitcondition_unix.cpp:87
#2  QWaitCondition::wait (time=<value optimized out>, this=<value optimized out>) at thread/qwaitcondition_unix.cpp:159
#3  0x00007f7162924f4e in QFileInfoGatherer::run (this=<value optimized out>) at dialogs/qfileinfogatherer.cpp:207
#4  0x00007f7162edb485 in QThreadPrivate::start (arg=0xbe46dc0) at thread/qthread_unix.cpp:188
#5  0x00007f716160065d in start_thread () from /lib64/libpthread.so.0
#6  0x00007f7161b3f14d in clone () from /lib64/libc.so.6
#7  0x0000000000000000 in ?? ()

Thread 3 (Thread 0x7f7129a2c910 (LWP 12826)):
#0  0x00007f7161b4c31e in ?? () from /lib64/libc.so.6
#1  0x00007f7161ae7599 in ?? () from /lib64/libc.so.6
#2  0x00007f7161ae5961 in free () from /lib64/libc.so.6
#3  0x00007f7162fe97b1 in socketNotifierSourceCheck (source=<value optimized out>) at kernel/qeventdispatcher_glib.cpp:92
#4  0x00007f715b140cba in IA__g_main_context_check (context=0xbe4c0b0, max_priority=2147483647, fds=<value optimized out>, n_fds=-1) at gmain.c:2469
#5  0x00007f715b1414a0 in g_main_context_iterate (context=0xbe4c0b0, block=<value optimized out>, dispatch=<value optimized out>, self=<value optimized out>) at gmain.c:2588
#6  0x00007f715b1418d0 in IA__g_main_context_iteration (context=0xbe4c0b0, may_block=1) at gmain.c:2654
#7  0x00007f7162fe93a3 in QEventDispatcherGlib::processEvents (this=0xbe4bad0, flags=<value optimized out>) at kernel/qeventdispatcher_glib.cpp:407
#8  0x00007f7162fbf712 in QEventLoop::processEvents (this=<value optimized out>, flags=) at kernel/qeventloop.cpp:149
#9  0x00007f7162fbfae4 in QEventLoop::exec (this=0x7f7129a2c010, flags=) at kernel/qeventloop.cpp:201
#10 0x00007f7162ed871b in QThread::exec (this=<value optimized out>) at thread/qthread.cpp:487
#11 0x00007f7162fa2d48 in QInotifyFileSystemWatcherEngine::run (this=0xbe48440) at io/qfilesystemwatcher_inotify.cpp:214
#12 0x00007f7162edb485 in QThreadPrivate::start (arg=0xbe48440) at thread/qthread_unix.cpp:188
#13 0x00007f716160065d in start_thread () from /lib64/libpthread.so.0
#14 0x00007f7161b3f14d in clone () from /lib64/libc.so.6
#15 0x0000000000000000 in ?? ()

Thread 2 (Thread 0x7f71235ca910 (LWP 12945)):
#0  0x00007f7161605049 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/libpthread.so.0
#1  0x00007f7162edacd3 in QMutexPrivate::wait (this=0xfe61e0, timeout=-1) at thread/qmutex_unix.cpp:80
#2  0x00007f7162ed6895 in QMutex::lock (this=0xf22338) at thread/qmutex.cpp:169
#3  0x00007f7149708134 in relock (this=<value optimized out>) at /usr/include/QtCore/qmutex.h:120
#4  QMutexLocker (this=<value optimized out>) at /usr/include/QtCore/qmutex.h:102
#5  MySqlServerCollection::query (this=<value optimized out>) at /usr/src/debug/amarok-2.2.2/src/collection/mysqlservercollection/MySqlServerCollection.cpp:120
#6  0x00007f71496e697a in SqlQueryMakerInternal::run (this=0x7f71240025b0) at /usr/src/debug/amarok-2.2.2/src/collection/sqlcollection/SqlQueryMakerInternal.cpp:46
#7  0x00007f71496e3eed in SqlWorkerThread::run (this=0x7f7124001910) at /usr/src/debug/amarok-2.2.2/src/collection/sqlcollection/SqlQueryMaker.cpp:66
#8  0x00007f715f551eed in ?? () from /usr/lib64/libthreadweaver.so.4
#9  0x00007f715f5521ee in ThreadWeaver::Job::execute(ThreadWeaver::Thread*) () from /usr/lib64/libthreadweaver.so.4
#10 0x00007f715f5511bf in ?? () from /usr/lib64/libthreadweaver.so.4
#11 0x00007f715f551648 in ThreadWeaver::Thread::run() () from /usr/lib64/libthreadweaver.so.4
#12 0x00007f7162edb485 in QThreadPrivate::start (arg=0xbe3e6a0) at thread/qthread_unix.cpp:188
#13 0x00007f716160065d in start_thread () from /lib64/libpthread.so.0
#14 0x00007f7161b3f14d in clone () from /lib64/libc.so.6
#15 0x0000000000000000 in ?? ()

Thread 1 (Thread 0x7f71649dc750 (LWP 12471)):
#0  0x00007f7161b4c31e in ?? () from /lib64/libc.so.6
#1  0x00007f7161ae7599 in ?? () from /lib64/libc.so.6
#2  0x00007f7161ae5961 in free () from /lib64/libc.so.6
#3  0x00007f7162fe97b1 in socketNotifierSourceCheck (source=<value optimized out>) at kernel/qeventdispatcher_glib.cpp:92
#4  0x00007f715b140cba in IA__g_main_context_check (context=0x75dd60, max_priority=2147483647, fds=<value optimized out>, n_fds=-1) at gmain.c:2469
#5  0x00007f715b1414a0 in g_main_context_iterate (context=0x75dd60, block=<value optimized out>, dispatch=<value optimized out>, self=<value optimized out>) at gmain.c:2588
#6  0x00007f715b1418d0 in IA__g_main_context_iteration (context=0x75dd60, may_block=1) at gmain.c:2654
#7  0x00007f7162fe93a3 in QEventDispatcherGlib::processEvents (this=0x61feb0, flags=<value optimized out>) at kernel/qeventdispatcher_glib.cpp:407
#8  0x00007f716251f31e in QGuiEventDispatcherGlib::processEvents (this=0x7f7161dc4e60, flags=<value optimized out>) at kernel/qguieventdispatcher_glib.cpp:202
#9  0x00007f7162fbf712 in QEventLoop::processEvents (this=<value optimized out>, flags=) at kernel/qeventloop.cpp:149
#10 0x00007f7162fbfae4 in QEventLoop::exec (this=0x7fff2cee0f80, flags=) at kernel/qeventloop.cpp:201
#11 0x00007f7162fc1c99 in QCoreApplication::exec () at kernel/qcoreapplication.cpp:888
#12 0x000000000040a264 in main (argc=<value optimized out>, argv=<value optimized out>) at /usr/src/debug/amarok-2.2.2/src/main.cpp:235
Comment 6 Myriam Schweingruber 2010-01-16 12:31:03 UTC
This is a duplicate then, you should try to get a patched Amarok version from your distribution.

*** This bug has been marked as a duplicate of bug 220532 ***
Comment 7 Ulf Bartholomäus 2010-01-17 20:33:34 UTC
Reopened - Reason see Comment from Jeff
https://bugs.kde.org/show_bug.cgi?id=220532#c62
Comment 8 Myriam Schweingruber 2010-01-27 22:43:08 UTC
Confirmed by duplicate bug 224520
Comment 9 Myriam Schweingruber 2010-01-27 22:43:31 UTC
*** Bug 224520 has been marked as a duplicate of this bug. ***
Comment 10 Myriam Schweingruber 2010-02-01 10:24:44 UTC
*** Bug 225065 has been marked as a duplicate of this bug. ***
Comment 11 Myriam Schweingruber 2010-02-07 03:59:19 UTC
*** Bug 225781 has been marked as a duplicate of this bug. ***
Comment 12 kelly 2010-02-07 10:56:39 UTC
Created attachment 40577 [details]
Patch ScanResultProcessor destructor to avoid double frees of QStringList

The destructor iterates through QLinkedLists of QStringLists deleting the QStringLists.  Since QLinkedLists may contain duplicates (and do for a fact on my machine) a reliable way to prevent double frees is to collect the QStringLists in a set (which guarantees uniqueness) and then iterating through the set to delete the QStringLists.

This patch fixes my problem which was initially bug 225781.  Before putting this patch together I tried a patch that was supposed to fix the problem but didn't.
Comment 13 Mikko C. 2010-02-07 11:00:48 UTC
(In reply to comment #12)
> Created an attachment (id=40577) [details]
> Patch ScanResultProcessor destructor to avoid double frees of QStringList
> 

Does this patch applies to git master?
Comment 14 kelly 2010-02-07 11:03:39 UTC
On 02/07/2010 03:00 AM, Mikko C. wrote:
> https://bugs.kde.org/show_bug.cgi?id=222438
>
>
> Mikko C.<mikko.cal@gmail.com>  changed:
>
>             What    |Removed                     |Added
> ----------------------------------------------------------------------------
>                   CC|                            |mitchell@kde.org
>
>
>
>
> --- Comment #13 from Mikko C.<mikko cal gmail com>   2010-02-07 11:00:48 ---
> (In reply to comment #12)
>    
>> Created an attachment (id=40577)
>>      
>   -->  (http://bugs.kde.org/attachment.cgi?id=40577) [details]
>    
>> Patch ScanResultProcessor destructor to avoid double frees of QStringList
>>
>>      
> Does this patch applies to git master?
>
>    

It applies to 2.2.2.  It'd probably have to be manually applied to git 
master.
Comment 15 Mikko C. 2010-02-07 11:11:38 UTC
(In reply to comment #14)
> 
> It applies to 2.2.2.  It'd probably have to be manually applied to git 
> master.

One reason you should submit patch against git master is because the problem might be already fixed :P

Indeed it seems it's using QSet already in git master:


ScanResultProcessor::~ScanResultProcessor()
{
    //everything has a URL, so enough to just delete from here
    QSet<QStringList*> currSet; //prevent double deletes
    foreach( QStringList *list, m_urlsHashByUid )
    {
        if( list )
        {
            if( !currSet.contains( list ) )
            {
                delete list;
                currSet.insert( list );
            }
        }
        else
            debug() << "GAAH! Tried to double-delete a value in m_urlsHashByUid";
    }
Comment 16 Myriam Schweingruber 2010-02-07 12:56:20 UTC
Please make a merge request on http://gitorious.org/amarok/amarok, so the developers can have a look at that patch.
And as Mikko already stated, all patched should only be made for the Git version, we do not backport patches and the code has already evolved much further since the last release.
Comment 17 Jeff Mitchell 2010-02-07 13:10:03 UTC
Well and more importantly try the git version and see if it's fixed for you before bothering with adapting a patch to it.
Comment 18 Mikko C. 2010-02-12 15:37:10 UTC
*** Bug 226552 has been marked as a duplicate of this bug. ***
Comment 19 Sven Krohlas 2010-03-17 23:48:28 UTC
Is this fixed in 2.3.0?
Comment 20 Jeff Mitchell 2010-03-18 14:09:24 UTC
Probably.
Comment 21 kelly 2010-03-18 16:34:49 UTC
On 03/17/2010 04:48 PM, Sven Krohlas wrote:
> https://bugs.kde.org/show_bug.cgi?id=222438
>
>
>
>
>
> --- Comment #19 from Sven Krohlas<sven asbest-online de>   2010-03-17 23:48:28 ---
> Is this fixed in 2.3.0?
>
>    
It seems to be.  I don't have a problem with 2.3.0.
Comment 22 Kai Bolte 2010-03-18 17:38:26 UTC
(In reply to comment #21)
> > Is this fixed in 2.3.0?
> It seems to be.  I don't have a problem with 2.3.0.

The same here, these problems are gone on my system.
Comment 23 Denis Kaznadzey 2010-06-08 01:45:35 UTC
Created attachment 47802 [details]
New crash information added by DrKonqi

Full collection rescan after first time start of Amarok on fresh system (just installed Fedora 13) crashes immediately.
Second time - collection rescan crashes again after some amount of job is done.
Collection is stored in a folder on nfs-mounted drive.
Comment 24 Jeff Mitchell 2010-06-09 04:14:57 UTC
Denis,

Your crash is different from the ones up above. (It's also a crash in Qt). Please open up a new bug, and CC me on it. Also, when you open up the bug, please tell what happens when you run "amarokcollectionscanner" on the directories with the affected files. I'd like to make sure that it's not actually a problem with the scanner (usually corrupted tags) that's just showing up at a random spot.