Bug 165660 - Juk crashed on exit
Summary: Juk crashed on exit
Status: RESOLVED FIXED
Alias: None
Product: juk
Classification: Applications
Component: general (other bugs)
Version First Reported In: unspecified
Platform: Compiled Sources Linux
: NOR crash
Target Milestone: ---
Assignee: Michael Pyne
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2008-07-03 21:04 UTC by Shrikant Khare
Modified: 2008-07-10 01:35 UTC (History)
0 users

See Also:
Latest Commit:
Version Fixed/Implemented In:
Sentry Crash Report:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Shrikant Khare 2008-07-03 21:04:32 UTC
Version:           3.1 Using KDE: 4.00.85 (KDE 4.0.85 (KDE 4.1 >= 20080703)) (using Devel)
Installed from:    Compiled sources
Compiler:          gcc (SUSE Linux) 4.3.1 20080507 openSUSE 11.0 gcc-4_3-branch revision 135036] 
OS:                Linux

I have compiled KDE4 from svn trunk (rev: 827748).

Juk had finished playing the playlist (for some time I think) and crashed when I quit (Using the system tray icon). There were around 200 songs in the collection list.

I have not been able to reproduce the crash. Here is the backtrace:

Application: JuK (juk), signal SIGSEGV
[?1034h[Thread debugging using libthread_db enabled]
[New Thread 0x7fa39011c720 (LWP 4095)]
[New Thread 0x539c2950 (LWP 5275)]
[New Thread 0x521bf950 (LWP 5274)]
[New Thread 0x519be950 (LWP 5273)]
[New Thread 0x501bb950 (LWP 5272)]
[New Thread 0x4f9ba950 (LWP 5271)]
[New Thread 0x4f1b9950 (LWP 4801)]
[New Thread 0x4e9b8950 (LWP 4800)]
[New Thread 0x4e1b7950 (LWP 4451)]
[New Thread 0x4d9b6950 (LWP 4449)]
[New Thread 0x4d1b5950 (LWP 4185)]
[New Thread 0x4c9b4950 (LWP 4184)]
[New Thread 0x4c1b3950 (LWP 4170)]
[New Thread 0x4b9b2950 (LWP 4169)]
[New Thread 0x4b1b1950 (LWP 4164)]
[New Thread 0x4a9b0950 (LWP 4163)]
[New Thread 0x4a1af950 (LWP 4158)]
[New Thread 0x499ae950 (LWP 4157)]
[New Thread 0x491ad950 (LWP 4152)]
[New Thread 0x489ac950 (LWP 4151)]
[New Thread 0x481ab950 (LWP 4146)]
[New Thread 0x479aa950 (LWP 4145)]
[New Thread 0x451a5950 (LWP 4140)]
[New Thread 0x449a4950 (LWP 4139)]
[New Thread 0x471a9950 (LWP 4134)]
[New Thread 0x469a8950 (LWP 4133)]
[New Thread 0x441a3950 (LWP 4128)]
[New Thread 0x439a2950 (LWP 4127)]
[New Thread 0x461a7950 (LWP 4122)]
[New Thread 0x459a6950 (LWP 4121)]
[New Thread 0x41996950 (LWP 4116)]
[New Thread 0x431a1950 (LWP 4102)]
[New Thread 0x429a0950 (LWP 4101)]
[New Thread 0x41195950 (LWP 4100)]
[New Thread 0x40994950 (LWP 4099)]
[New Thread 0x4219f950 (LWP 4096)]
[KCrash handler]
#5  0x00000000004ab354 in ~Playlist (this=0xeec520)
    at /home/khare/kde/src/trunk/KDE/kdemultimedia/juk/playlist.cpp:428
#6  0x000000000045ef89 in ~FolderPlaylist (this=0xeec520)
    at /home/khare/kde/src/trunk/KDE/kdemultimedia/juk/folderplaylist.cpp:36
#7  0x00007fa38bbd1231 in QObjectPrivate::deleteChildren ()
   from /usr/lib64/libQtCore.so.4
#8  0x00007fa388ea4f68 in QWidget::~QWidget () from /usr/lib64/libQtGui.so.4
#9  0x00007fa38e2ce2bb in Q3WidgetStack::~Q3WidgetStack ()
   from /usr/lib64/libQt3Support.so.4
#10 0x00007fa38bbd1231 in QObjectPrivate::deleteChildren ()
   from /usr/lib64/libQtCore.so.4
#11 0x00007fa388ea5418 in QWidget::~QWidget () from /usr/lib64/libQtGui.so.4
#12 0x00007fa38bbd1231 in QObjectPrivate::deleteChildren ()
   from /usr/lib64/libQtCore.so.4
#13 0x00007fa388ea4f68 in QWidget::~QWidget () from /usr/lib64/libQtGui.so.4
#14 0x00007fa3891af3e8 in QSplitter::~QSplitter ()
   from /usr/lib64/libQtGui.so.4
#15 0x00007fa38bbd1231 in QObjectPrivate::deleteChildren ()
   from /usr/lib64/libQtCore.so.4
#16 0x00007fa388ea4f68 in QWidget::~QWidget () from /usr/lib64/libQtGui.so.4
#17 0x00007fa3891af138 in QSplitter::~QSplitter ()
   from /usr/lib64/libQtGui.so.4
#18 0x00000000004d15b9 in ~PlaylistSplitter (this=0x871290)
    at /home/khare/kde/src/trunk/KDE/kdemultimedia/juk/playlistsplitter.cpp:72
#19 0x0000000000484e44 in JuK::slotAboutToQuit (this=0x816df0)
    at /home/khare/kde/src/trunk/KDE/kdemultimedia/juk/juk.cpp:492
#20 0x000000000048636f in JuK::qt_metacall (this=0x816df0, 
    _c=QMetaObject::InvokeMetaMethod, _id=1, _a=0x7fff98163800)
    at /home/khare/kde/build/trunk/KDE/kdemultimedia/juk/juk.moc:80
#21 0x00007fa38bbd64e0 in QMetaObject::activate ()
   from /usr/lib64/libQtCore.so.4
#22 0x00007fa38bbc5a44 in QCoreApplication::exec ()
   from /usr/lib64/libQtCore.so.4
#23 0x0000000000490f34 in main (argc=5, argv=0x7fff98163fd8)
    at /home/khare/kde/src/trunk/KDE/kdemultimedia/juk/main.cpp:100
#0  0x00007fa386c2f261 in nanosleep () from /lib64/libc.so.6

Hope this helps...
Comment 1 Shrikant Khare 2008-07-05 22:18:31 UTC
Crashed on exit again........

There were 3 playlists (Playlists from folder). Then I deleted a folder (On the drive using dolphin) from one of the playlists and clicked the reload button on the right-click menu to update that playlist. Nothing changed ?? Maybe I have to create the playlist again.

I then emptied the Collection List and then clicked the Reload button on the right-click menu. Again Nothing happened ??

So I exited the application at which point it crashed. The backtrace is identical.....I think......

Application: JuK (juk), signal SIGSEGV
[?1034h[Thread debugging using libthread_db enabled]
[New Thread 0x7ff2d7c70720 (LWP 5676)]
[New Thread 0x4500d950 (LWP 5783)]
[New Thread 0x4480c950 (LWP 5782)]
[New Thread 0x4400b950 (LWP 5781)]
[New Thread 0x4380a950 (LWP 5780)]
[New Thread 0x43009950 (LWP 5683)]
[New Thread 0x40d0c950 (LWP 5682)]
[New Thread 0x42808950 (LWP 5681)]
[New Thread 0x42007950 (LWP 5680)]
[New Thread 0x41806950 (LWP 5677)]
[KCrash handler]
#5  0x00000000004ab354 in ~Playlist (this=0x87add0)
    at /home/khare/kde/src/trunk/KDE/kdemultimedia/juk/playlist.cpp:428
#6  0x000000000045ef89 in ~FolderPlaylist (this=0x87add0)
    at /home/khare/kde/src/trunk/KDE/kdemultimedia/juk/folderplaylist.cpp:36
#7  0x00007ff2d3726231 in QObjectPrivate::deleteChildren ()
   from /usr/lib64/libQtCore.so.4
#8  0x00007ff2d09f9f68 in QWidget::~QWidget () from /usr/lib64/libQtGui.so.4
#9  0x00007ff2d5e242bb in Q3WidgetStack::~Q3WidgetStack ()
   from /usr/lib64/libQt3Support.so.4
#10 0x00007ff2d3726231 in QObjectPrivate::deleteChildren ()
   from /usr/lib64/libQtCore.so.4
#11 0x00007ff2d09fa418 in QWidget::~QWidget () from /usr/lib64/libQtGui.so.4
#12 0x00007ff2d3726231 in QObjectPrivate::deleteChildren ()
   from /usr/lib64/libQtCore.so.4
#13 0x00007ff2d09f9f68 in QWidget::~QWidget () from /usr/lib64/libQtGui.so.4
#14 0x00007ff2d0d043e8 in QSplitter::~QSplitter ()
   from /usr/lib64/libQtGui.so.4
#15 0x00007ff2d3726231 in QObjectPrivate::deleteChildren ()
   from /usr/lib64/libQtCore.so.4
#16 0x00007ff2d09f9f68 in QWidget::~QWidget () from /usr/lib64/libQtGui.so.4
#17 0x00007ff2d0d04138 in QSplitter::~QSplitter ()
   from /usr/lib64/libQtGui.so.4
#18 0x00000000004d15b9 in ~PlaylistSplitter (this=0x871360)
    at /home/khare/kde/src/trunk/KDE/kdemultimedia/juk/playlistsplitter.cpp:72
#19 0x0000000000484e44 in JuK::slotAboutToQuit (this=0x80c0c0)
    at /home/khare/kde/src/trunk/KDE/kdemultimedia/juk/juk.cpp:492
#20 0x000000000048636f in JuK::qt_metacall (this=0x80c0c0, 
    _c=QMetaObject::InvokeMetaMethod, _id=1, _a=0x7fffdfcbc150)
    at /home/khare/kde/build/trunk/KDE/kdemultimedia/juk/juk.moc:80
#21 0x00007ff2d372b4e0 in QMetaObject::activate ()
   from /usr/lib64/libQtCore.so.4
#22 0x00007ff2d371aa44 in QCoreApplication::exec ()
   from /usr/lib64/libQtCore.so.4
#23 0x0000000000490f34 in main (argc=5, argv=0x7fffdfcbc928)
    at /home/khare/kde/src/trunk/KDE/kdemultimedia/juk/main.cpp:100
#0  0x00007ff2ce784261 in nanosleep () from /lib64/libc.so.6
Comment 2 Michael Pyne 2008-07-09 04:17:33 UTC
This patch to playlist.cpp should fix the crash.  The code is not actually required now anyways as the two ways I can see to remove a playlist are by the "Remove" option on the context menu for selected playlists and by exiting, and we don't want to worry about selecting a different playlist in that case.  The "Remove" action already handles selecting a different playlist as well.

I don't know if this will be able to make it into KDE 4.1 as it is being frozen for tagging and urgent bug fixes only but if you want to test it and see if it works I can make a request for it.

Index: playlist.cpp
===================================================================
--- playlist.cpp        (revision 829753)
+++ playlist.cpp        (working copy)
@@ -422,11 +422,6 @@

     /* delete m_toolTip; */

-    // Select a different playlist if we're the selected one
-
-    if(isVisible() && this != CollectionList::instance())
-        m_collection->raise(CollectionList::instance());
-
     if(!m_shuttingDown)
         m_collection->removePlaylist(this);
 }
Comment 3 Michael Pyne 2008-07-10 01:26:57 UTC
SVN commit 830196 by mpyne:

Fix bug 165660 (JuK crashes on exit sometimes) in trunk (KDE 4.2).

This crash is due to the CollectionList sometimes being deleted before other playlists.
Normally a playlist will select the CollectionList if it is being deleted so that there is a
valid playlist selected.  This could only happen during shutdown however as the is no UI for
removing the Collection List.

CCBUG:165660


 M  +0 -5      playlist.cpp  


WebSVN link: http://websvn.kde.org/?view=rev&revision=830196
Comment 4 Michael Pyne 2008-07-10 01:35:35 UTC
SVN commit 830198 by mpyne:

Backport crash fix for bug 165660 (JuK crashes sometimes on exit) to 4.1.

Backport done in accordance with the RC1 tagging announcement which says that the only changes
to 4.1 should go into final now.

This fixes a known crash and is not dangerous.  The code removed is intended to prevent a
deleted playlist from remaining selected and causing crashes later.  However the only way to
remove a playlist which can be selected is to do so from the PlaylistBox::remove() function,
which handles this case already in a better fashion.  Leaving the code in risks crashes on JuK
shutdown if the playlist is removed after the CollectionList is deleted.

BUG:165660


 M  +0 -5      playlist.cpp  


WebSVN link: http://websvn.kde.org/?view=rev&revision=830198