|Summary:||Amarok crashes on iPod ejection [@ Playlists::PlaylistProvider::playlistAdded]|
|Component:||Collections/iPod iPhone||Assignee:||Amarok Developers <amarok-bugs-dist>|
|Version:||2.5.90 (2.6 beta)|
|Latest Commit:||http://commits.kde.org/amarok/aa913a59a047205ed15a7f37f9f11d56785b6ff3||Version Fixed In:||2.6|
|Attachments:||KCrash log with the patch applied|
Description madcatx 2012-06-04 17:39:42 UTC
Comment 1 madcatx 2012-06-04 18:03:48 UTC
Ultrawhoops! I compiled Amarok on another machine where I can install all the debugging symbols and I forgot to apply the "crash on eject" patch (see bug 300958). The patch doesn't have any apparent effect on this crash, I just wanted to make sure I didn't report any bogus info. I attached another crash log which I get with the patch applied. I'm sorry about this...
Comment 2 madcatx 2012-06-04 18:04:59 UTC
Created attachment 71582 [details] KCrash log with the patch applied
Comment 3 Myriam Schweingruber 2012-06-05 11:52:06 UTC
(In reply to comment #2) > Created attachment 71582 [details] > KCrash log with the patch applied Please always paste backtraces inline, else those are not searchable. Thread 9 (Thread 0x7f1120934700 (LWP 2439)): [KCrash Handler] #6 isSignalConnected (signal_index=3, this=0x0) at kernel/qobject_p.h:229 #7 QMetaObject::activate (sender=0x2dc07d0, m=<optimized out>, local_signal_index=1, argv=0x7f1120933b50) at kernel/qobject.cpp:3456 #8 0x00007f1164852a59 in Playlists::PlaylistProvider::playlistAdded (this=0x2dc07d0, _t1=...) at /home/los/Downloads/amarok-2.5.90/build/src/core/PlaylistProvider.moc:110 #9 0x00007f112c35c294 in IpodPlaylistProvider::parseItdbPlaylists (this=0x2dc07d0, staleTracks=..., knownPaths=...) at /home/los/Downloads/amarok-2.5.90/src/core-impl/collections/ipodcollection/IpodPlaylistProvider.cpp:237 #10 0x00007f112c3695c3 in IpodParseTracksJob::run (this=0x2da2d80) at /home/los/Downloads/amarok-2.5.90/src/core-impl/collections/ipodcollection/jobs/IpodParseTracksJob.cpp:73 #11 0x00007f115f75e05b in ThreadWeaver::JobRunHelper::runTheJob (this=0x7f1120933da0, th=0x2cd56d0, job=0x2da2d80) at ../../../threadweaver/Weaver/Job.cpp:106 #12 0x00007f115f75e1cc in ThreadWeaver::Job::execute (this=0x2da2d80, th=0x2cd56d0) at ../../../threadweaver/Weaver/Job.cpp:135 #13 0x00007f115f75d81f in ThreadWeaver::ThreadRunHelper::run (this=0x7f1120933e20, parent=0x2cf2750, th=0x2cd56d0) at ../../../threadweaver/Weaver/Thread.cpp:95 #14 0x00007f115f75d8db in ThreadWeaver::Thread::run (this=0x2cd56d0) at ../../../threadweaver/Weaver/Thread.cpp:142 #15 0x00007f1162310fcb in QThreadPrivate::start (arg=0x2cd56d0) at thread/qthread_unix.cpp:298 #16 0x00007f115e1c8e9a in start_thread (arg=0x7f1120934700) at pthread_create.c:308 #17 0x00007f1161ab44bd in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:112 #18 0x0000000000000000 in ?? ()
Comment 4 Matěj Laitl 2012-06-05 12:53:10 UTC
Git commit aa913a59a047205ed15a7f37f9f11d56785b6ff3 by Matěj Laitl. Committed on 05/06/2012 at 14:37. Pushed by laitl into branch 'master'. IpodCollection: finally safe solution for crash on early eject We now (asynchronously) wait for the job that parses iPod tracks and playlists before destroying IpodCollection. Other change is that we factor playlists parsing into IpodParseTracksJob, it really belongs there. (previously it was just called from that thread and it made false impression that the method is only called from the main thread) FIXED-IN: 2.6 M +3 -0 ChangeLog M +23 -10 src/core-impl/collections/ipodcollection/IpodCollection.cpp M +8 -0 src/core-impl/collections/ipodcollection/IpodCollection.h M +1 -3 src/core-impl/collections/ipodcollection/IpodPlaylist.cpp M +0 -79 src/core-impl/collections/ipodcollection/IpodPlaylistProvider.cpp M +1 -13 src/core-impl/collections/ipodcollection/IpodPlaylistProvider.h M +91 -12 src/core-impl/collections/ipodcollection/jobs/IpodParseTracksJob.cpp M +26 -5 src/core-impl/collections/ipodcollection/jobs/IpodParseTracksJob.h http://commits.kde.org/amarok/aa913a59a047205ed15a7f37f9f11d56785b6ff3
Comment 5 madcatx 2012-06-05 15:22:00 UTC
Applied and tested. Works perfectly on Ubuntu 12.04, but I'm still having some issues on Arch Linux. Those have very likely nothing to do with Amarok, I'll have to look into that a bit more...