Bug 73998 - Juk crashed when I was retagging a bunch of songs and started to play with search
Summary: Juk crashed when I was retagging a bunch of songs and started to play with se...
Status: RESOLVED FIXED
Alias: None
Product: juk
Classification: Applications
Component: general (show other bugs)
Version: unspecified
Platform: unspecified Linux
: NOR crash
Target Milestone: ---
Assignee: Scott Wheeler
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2004-02-02 11:12 UTC by Teemu Rytilahti
Modified: 2004-03-21 05:43 UTC (History)
0 users

See Also:
Latest Commit:
Version Fixed In:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Teemu Rytilahti 2004-02-02 11:12:57 UTC
Version:           1.96 (2.0 Beta 2) (using KDE 3.2.90 (CVS >= 20040117), compiled sources)
Compiler:          gcc version 3.2.3 (Debian)
OS:          Linux (i686) release 2.6.1

Well, the title says all, but here's the backtrace:

[New Thread 1106173568 (LWP 24597)]
0x41b673ee in __waitpid_nocancel () from /lib/tls/libpthread.so.0
#0  0x41b673ee in __waitpid_nocancel () from /lib/tls/libpthread.so.0
#1  0x40ee0b2d in KCrash::defaultCrashHandler(int) ()
   from /home/tpr/kdecvshead/lib/libkdecore.so.4
#2  <signal handler called>
#3  PlaylistItem::dirPath(bool) const (this=0x0, absPath=false)
    at playlistitem.cpp:120
#4  0x0808cc10 in TagEditor::save(QValueList<PlaylistItem*> const&) (
    this=0x8162120, list=@0x81621c8) at tageditor.cpp:433
#5  0x0808d57d in TagEditor::saveChangesPrompt() (this=0x8162120)
    at tageditor.cpp:526
#6  0x0808ad6a in TagEditor::slotSetItems(QValueList<PlaylistItem*> const&) (
    this=0x8162120, list=@0xbfffec60) at tageditor.cpp:61
#7  0x0808da3a in TagEditor::qt_invoke(int, QUObject*) (this=0x8162120, 
    _id=45, _o=0xbfffec00) at tageditor.moc:103
#8  0x4134eabf in QObject::activate_signal(QConnectionList*, QUObject*) (
    this=0x877d598, clist=0x83ad2d0, o=0xbfffec00) at kernel/qobject.cpp:2359
#9  0x0807d2a1 in Playlist::signalSelectionChanged(QValueList<PlaylistItem*> const&) (this=0x877d598, t0=@0x0) at playlist.moc:213
#10 0x08080b4d in Playlist::slotEmitSelected() (this=0x877d598)
    at playlist.h:527
#11 0x0807d873 in Playlist::qt_invoke(int, QUObject*) (this=0x877d598, 
    _id=118, _o=0xbfffedb0) at playlist.moc:324
#12 0x080a4605 in DynamicPlaylist::qt_invoke(int, QUObject*) (this=0x877d598, 
    _id=118, _o=0x0) at dynamicplaylist.moc:90
#13 0x080a4faf in SearchPlaylist::qt_invoke(int, QUObject*) (this=0x0, _id=0, 
    _o=0x0) at searchplaylist.moc:77
#14 0x4134ec18 in QObject::activate_signal(QConnectionList*, QUObject*) (
    this=0x877d598, clist=0x87803c8, o=0xbfffedb0) at kernel/qobject.cpp:2383
#15 0x4134e914 in QObject::activate_signal(int) (this=0x877d598, signal=7)
    at kernel/qobject.cpp:2328
#16 0x4174f980 in QListView::selectionChanged() (this=0x877d598)
    at .moc/debug-shared-mt/moc_qlistview.cpp:297
#17 0x41463eaa in QListView::contentsMouseReleaseEventEx(QMouseEvent*) (
    this=0x877d598, e=0xbffff050) at widgets/qlistview.cpp:4445
#18 0x41463c91 in QListView::contentsMouseReleaseEvent(QMouseEvent*) (
    this=0x877d598, e=0xbffff050) at widgets/qlistview.cpp:4416
#19 0x40c2b173 in KListView::contentsMouseReleaseEvent(QMouseEvent*) ()
    at qcstring.h:65
#20 0x4149ec27 in QScrollView::viewportMouseReleaseEvent(QMouseEvent*) (
    this=0x877d598, e=0xbffff570) at widgets/qscrollview.cpp:1748
#21 0x4149e22a in QScrollView::eventFilter(QObject*, QEvent*) (this=0x877d598, 
    obj=0x877ddb8, e=0xbffff570) at widgets/qscrollview.cpp:1502
#22 0x4146261d in QListView::eventFilter(QObject*, QEvent*) (this=0x877d598, 
    o=0x877ddb8, e=0xbffff570) at widgets/qlistview.cpp:3825
#23 0x08079b94 in Playlist::eventFilter(QObject*, QEvent*) (this=0x877d598, 
    watched=0x877ddb8, e=0xbffff570) at playlist.cpp:677
#24 0x4134bd37 in QObject::activate_filters(QEvent*) (this=0x877ddb8, 
    e=0xbffff570) at kernel/qobject.cpp:902
#25 0x4134bba8 in QObject::event(QEvent*) (this=0x877ddb8, e=0xbffff570)
    at kernel/qobject.cpp:735
#26 0x41391d0c in QWidget::event(QEvent*) (this=0x877ddb8, e=0xbffff570)
    at kernel/qwidget.cpp:4630
#27 0x412ddb57 in QApplication::internalNotify(QObject*, QEvent*) (
    this=0xbffffa30, receiver=0x877ddb8, e=0xbffff570)
    at kernel/qapplication.cpp:2614
#28 0x412dd261 in QApplication::notify(QObject*, QEvent*) (this=0xbffffa30, 
    receiver=0x877ddb8, e=0xbffff570) at kernel/qapplication.cpp:2400
#29 0x40e404cc in KApplication::notify(QObject*, QEvent*) ()
   from /home/tpr/kdecvshead/lib/libkdecore.so.4
#30 0x41266f8f in QApplication::sendSpontaneousEvent(QObject*, QEvent*) (
    receiver=0x877ddb8, event=0xbffff570) at qapplication.h:493
#31 0x4125f348 in QETWidget::translateMouseEvent(_XEvent const*) (
    this=0x877ddb8, event=0xbffff900) at kernel/qapplication_x11.cpp:4224
#32 0x4125cc39 in QApplication::x11ProcessEvent(_XEvent*) (this=0xbffffa30, 
    event=0xbffff900) at kernel/qapplication_x11.cpp:3387
#33 0x41279e96 in QEventLoop::processEvents(unsigned) (this=0x80f4dd0, flags=4)
    at kernel/qeventloop_x11.cpp:192
#34 0x412f4b62 in QEventLoop::enterLoop() (this=0x80f4dd0)
    at kernel/qeventloop.cpp:198
#35 0x412f4a7e in QEventLoop::exec() (this=0x80f4dd0)
    at kernel/qeventloop.cpp:145
#36 0x412ddd29 in QApplication::exec() (this=0xbffffa30)
    at kernel/qapplication.cpp:2737
#37 0x0809a1d2 in main (argc=0, argv=0x0) at main.cpp:91
Comment 1 Scott Wheeler 2004-03-21 05:43:06 UTC
CVS commit by wheeler: 

Check for null here.

CCMAIL:73998-done@bugs.kde.org


  M +3 -2      tageditor.cpp   1.46


--- kdemultimedia/juk/tageditor.cpp  #1.45:1.46
@@ -440,5 +440,6 @@ void TagEditor::save(const PlaylistItemL
             // files we couldn't write to.
             
-            if(item->file().tag() &&
+            if(item &&
+               item->file().tag() &&
                (newFile.isWritable() || (!newFile.exists() && directory.isWritable())) &&
                item->file().fileInfo().isWritable())
@@ -491,5 +492,5 @@ void TagEditor::save(const PlaylistItemL
                 item->slotRefresh();
             }
-            else
+            else if(item)
                 errorFiles.append(item->file().absFilePath());