Bug 200123 - konversation crashed while selecting a different tab
Summary: konversation crashed while selecting a different tab
Status: RESOLVED FIXED
Alias: None
Product: konversation
Classification: Applications
Component: general (show other bugs)
Version: unspecified
Platform: Unlisted Binaries Linux
: NOR crash
Target Milestone: ---
Assignee: Konversation Developers
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2009-07-14 04:30 UTC by Shawn Starr
Modified: 2010-07-01 16:20 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 Shawn Starr 2009-07-14 04:30:50 UTC
Application that crashed: konversation
Version of the application: 1.2-alpha4+ #3419
KDE Version: 4.3.60 (KDE 4.3.60 (KDE 4.4 >= 20090706))
Qt Version: 4.5.2
Operating System: Linux 2.6.29.5-191.fc11.x86_64 x86_64
Distribution: "Fedora release 11 (Leonidas)"

What I was doing when the application crashed:
I had konversation running for a while today and it crashed when I selected a different tab. I didn't do anything unusual though to trigger this.

 -- Backtrace:
Application: Konversation (konversation), signal: Segmentation fault
[Current thread is 1 (Thread 0x7f65a1e6c820 (LWP 2556))]

Thread 7 (Thread 0x7f65972b8910 (LWP 2610)):
#0  pthread_cond_wait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:261
#1  0x0000003807e5ad7b in QWaitConditionPrivate::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  0x0000003809881dac in QHostInfoAgent::run (this=0x1c3e720) at kernel/qhostinfo.cpp:260
#4  0x0000003807e59cd5 in QThreadPrivate::start (arg=0x1c3e720) at thread/qthread_unix.cpp:188
#5  0x0000003d8660686a in start_thread (arg=<value optimized out>) at pthread_create.c:297
#6  0x0000003d85ede25d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:112
#7  0x0000000000000000 in ?? ()

Thread 6 (Thread 0x7f6593636910 (LWP 3220)):
#0  pthread_cond_timedwait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S:220
#1  0x00007f6594ae25c1 in ?? () from /usr/lib64/libxine.so.1
#2  0x0000003d8660686a in start_thread (arg=<value optimized out>) at pthread_create.c:297
#3  0x0000003d85ede25d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:112
#4  0x0000000000000000 in ?? ()

Thread 5 (Thread 0x7f6592c35910 (LWP 3221)):
#0  0xffffffffff60012f in ?? ()
#1  0x00007f6592c34c40 in ?? ()
#2  0x00007fffcf7ff782 in ?? ()
Backtrace stopped: previous frame identical to this frame (corrupt stack?)

Thread 4 (Thread 0x7f659202b910 (LWP 3224)):
#0  pthread_cond_wait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:261
#1  0x00007f6594af3493 in ?? () from /usr/lib64/libxine.so.1
#2  0x0000003d8660686a in start_thread (arg=<value optimized out>) at pthread_create.c:297
#3  0x0000003d85ede25d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:112
#4  0x0000000000000000 in ?? ()

Thread 3 (Thread 0x7f659162a910 (LWP 3225)):
#0  0x0000003d85ed6fa2 in select () from /lib64/libc.so.6
#1  0x00007f6594b0aa85 in xine_usec_sleep () from /usr/lib64/libxine.so.1
#2  0x00007f6594af0289 in ?? () from /usr/lib64/libxine.so.1
#3  0x0000003d8660686a in start_thread (arg=<value optimized out>) at pthread_create.c:297
#4  0x0000003d85ede25d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:112
#5  0x0000000000000000 in ?? ()

Thread 2 (Thread 0x7f658dc39910 (LWP 3229)):
#0  pthread_cond_wait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:261
#1  0x00007f6594af3493 in ?? () from /usr/lib64/libxine.so.1
#2  0x0000003d8660686a in start_thread (arg=<value optimized out>) at pthread_create.c:297
#3  0x0000003d85ede25d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:112
#4  0x0000000000000000 in ?? ()

Thread 1 (Thread 0x7f65a1e6c820 (LWP 2556)):
[KCrash Handler]
#5  QTreeWidgetItem::parent (this=<value optimized out>) at itemviews/qtreewidget.h:183
#6  QTreeModel::index (this=<value optimized out>) at itemviews/qtreewidget.cpp:235
#7  0x00000038092d64e3 in QTreeModel::parent (this=0x207c220, child=<value optimized out>) at itemviews/qtreewidget.cpp:298
#8  0x000000380929a93f in QModelIndex::parent (this=<value optimized out>) at ../../src/corelib/kernel/qabstractitemmodel.h:369
#9  QTreeView::indexRowSizeHint (this=<value optimized out>) at itemviews/qtreeview.cpp:2764
#10 0x000000380929b0ce in QTreeViewPrivate::itemHeight (this=0x2077670, item=36) at itemviews/qtreeview.cpp:3207
#11 0x000000380929b327 in QTreeViewPrivate::updateScrollBars (this=0x2077670) at itemviews/qtreeview.cpp:3459
#12 0x000000380929b774 in QTreeView::updateGeometries (this=0x2077500) at itemviews/qtreeview.cpp:2693
#13 0x0000003808ddd684 in QWidget::event (this=0x2077500, event=0x7fffcf6b22a0) at kernel/qwidget.cpp:7695
#14 0x00000038091379c6 in QFrame::event (this=0x2077500, e=0x7fffcf6b22a0) at widgets/qframe.cpp:559
#15 0x000000380926a06b in QAbstractItemView::viewportEvent (this=0x2077500, event=0x7fffcf6b22a0) at itemviews/qabstractitemview.cpp:1476
#16 0x00000038092a0370 in QTreeView::viewportEvent (this=0x2077500, event=0x7fffcf6b22a0) at itemviews/qtreeview.cpp:1266
#17 0x0000003807f3f007 in QCoreApplicationPrivate::sendThroughObjectEventFilters (this=<value optimized out>, receiver=0x205f7e0, event=0x7fffcf6b22a0) at kernel/qcoreapplication.cpp:726
#18 0x0000003808d8edfc in QApplicationPrivate::notify_helper (this=0x1761b40, receiver=0x205f7e0, e=0x7fffcf6b22a0) at kernel/qapplication.cpp:4052
#19 0x0000003808d95e5e in QApplication::notify (this=0x7fffcf6b5490, receiver=0x205f7e0, e=0x7fffcf6b22a0) at kernel/qapplication.cpp:4021
#20 0x00007f65a4229353 in KApplication::notify (this=0x7fffcf6b5490, receiver=0x205f7e0, event=0x7fffcf6b22a0) at /root/kdelibs/kdeui/kernel/kapplication.cpp:302
#21 0x0000003807f3fcbc in QCoreApplication::notifyInternal (this=0x7fffcf6b5490, receiver=0x205f7e0, event=0x7fffcf6b22a0) at kernel/qcoreapplication.cpp:610
#22 0x0000003808ddc5db in QCoreApplication::sendEvent (event=<value optimized out>, receiver=<value optimized out>, receiver=<value optimized out>, event=<value optimized out>)
    at ../../src/corelib/kernel/qcoreapplication.h:213
#23 QWidgetPrivate::sendPendingMoveAndResizeEvents (event=<value optimized out>, receiver=<value optimized out>, receiver=<value optimized out>, event=<value optimized out>)
    at kernel/qwidget.cpp:6646
#24 0x0000003808de2813 in QWidgetPrivate::show_helper (this=0x7fffcf6b1550) at kernel/qwidget.cpp:6697
#25 0x0000003808de3a5a in QWidget::setVisible (this=0x205f7e0, visible=<value optimized out>) at kernel/qwidget.cpp:6975
#26 0x0000003808de2ca6 in QWidget::show (this=<value optimized out>) at ../../src/gui/kernel/qwidget.h:473
#27 QWidgetPrivate::showChildren (this=<value optimized out>) at kernel/qwidget.cpp:7063
#28 0x0000003808de282f in QWidgetPrivate::show_helper (this=0x2077670) at kernel/qwidget.cpp:6703
#29 0x0000003808de3a5a in QWidget::setVisible (this=0x2077500, visible=<value optimized out>) at kernel/qwidget.cpp:6975
#30 0x0000003808de2ca6 in QWidget::show (this=<value optimized out>) at ../../src/gui/kernel/qwidget.h:473
#31 QWidgetPrivate::showChildren (this=<value optimized out>) at kernel/qwidget.cpp:7063
#32 0x0000003808de282f in QWidgetPrivate::show_helper (this=0x20767d0) at kernel/qwidget.cpp:6703
#33 0x0000003808de2c11 in QWidgetPrivate::showChildren (this=<value optimized out>, spontaneous=false) at kernel/qwidget.cpp:7061
#34 0x0000003808de282f in QWidgetPrivate::show_helper (this=0x2057870) at kernel/qwidget.cpp:6703
#35 0x0000003808de3a5a in QWidget::setVisible (this=0x20569b0, visible=<value optimized out>) at kernel/qwidget.cpp:6975
#36 0x0000003808de2ca6 in QWidget::show (this=<value optimized out>) at ../../src/gui/kernel/qwidget.h:473
#37 QWidgetPrivate::showChildren (this=<value optimized out>) at kernel/qwidget.cpp:7063
#38 0x0000003808de282f in QWidgetPrivate::show_helper (this=0x204bb10) at kernel/qwidget.cpp:6703
#39 0x0000003808de3a5a in QWidget::setVisible (this=0x2041080, visible=<value optimized out>) at kernel/qwidget.cpp:6975
#40 0x0000003808de2ca6 in QWidget::show (this=<value optimized out>) at ../../src/gui/kernel/qwidget.h:473
#41 QWidgetPrivate::showChildren (this=<value optimized out>) at kernel/qwidget.cpp:7063
#42 0x0000003808de282f in QWidgetPrivate::show_helper (this=0x20431f0) at kernel/qwidget.cpp:6703
#43 0x0000003808de3a5a in QWidget::setVisible (this=0x2042f80, visible=<value optimized out>) at kernel/qwidget.cpp:6975
#44 0x0000003808dc7ced in QWidget::show (this=<value optimized out>) at ../../src/gui/kernel/qwidget.h:473
#45 QStackedLayout::setCurrentIndex (this=<value optimized out>) at kernel/qstackedlayout.cpp:313
#46 0x00000038091ab8f3 in QTabWidgetPrivate::_q_showTab (this=0x194bb10, index=3) at widgets/qtabwidget.cpp:723
#47 0x00000038091abbb0 in QTabWidget::qt_metacall (this=0x175c340, _c=QMetaObject::InvokeMetaMethod, _id=<value optimized out>, _a=0x7fffcf6b2d00) at .moc/release-shared/moc_qtabwidget.cpp:136
#48 0x00007f65a43477e5 in KTabWidget::qt_metacall (this=0x175c340, _c=QMetaObject::InvokeMetaMethod, _id=36, _a=0x7fffcf6b2d00) at /root/kdelibs-dev/kdeui/ktabwidget.moc:124
#49 0x0000003807f54fdc in QMetaObject::activate (sender=0x194dc60, from_signal_index=<value optimized out>, to_signal_index=<value optimized out>, argv=0x0) at kernel/qobject.cpp:3113
#50 0x000000380919ec5e in QTabBar::currentChanged (this=0x7fffcf6b1550, _t1=3) at .moc/release-shared/moc_qtabbar.cpp:201
#51 0x00000038091a545e in QTabBar::mousePressEvent (this=0x194dc60, event=0x7fffcf6b35a0) at widgets/qtabbar.cpp:1707
#52 0x00007f65a43439e2 in KTabBar::mousePressEvent (this=0x194dc60, event=0x7fffcf6b35a0) at /root/kdelibs/kdeui/widgets/ktabbar.cpp:123
#53 0x0000003808ddd856 in QWidget::event (this=0x194dc60, event=0x7fffcf6b35a0) at kernel/qwidget.cpp:7545
#54 0x00000038091a54fa in QTabBar::event (this=0x194dc60, event=0x7fffcf6b35a0) at widgets/qtabbar.cpp:1453
#55 0x0000003808d8ee2c in QApplicationPrivate::notify_helper (this=0x1761b40, receiver=0x194dc60, e=0x7fffcf6b35a0) at kernel/qapplication.cpp:4056
#56 0x0000003808d96551 in QApplication::notify (this=<value optimized out>, receiver=0x194dc60, e=0x7fffcf6b35a0) at kernel/qapplication.cpp:3758
#57 0x00007f65a4229353 in KApplication::notify (this=0x7fffcf6b5490, receiver=0x194dc60, event=0x7fffcf6b35a0) at /root/kdelibs/kdeui/kernel/kapplication.cpp:302
#58 0x0000003807f3fcbc in QCoreApplication::notifyInternal (this=0x7fffcf6b5490, receiver=0x194dc60, event=0x7fffcf6b35a0) at kernel/qcoreapplication.cpp:610
#59 0x0000003808d95810 in QCoreApplication::sendSpontaneousEvent (event=<value optimized out>, receiver=<value optimized out>) at ../../src/corelib/kernel/qcoreapplication.h:216
#60 QApplicationPrivate::sendMouseEvent (event=<value optimized out>, receiver=<value optimized out>) at kernel/qapplication.cpp:2924
#61 0x0000003808dfb61e in QETWidget::translateMouseEvent (this=0x1947be0, event=<value optimized out>) at kernel/qapplication_x11.cpp:4409
#62 0x0000003808dfa6b9 in QApplication::x11ProcessEvent (this=<value optimized out>, event=0x7fffcf6b50d0) at kernel/qapplication_x11.cpp:3550
#63 0x0000003808e223bc in x11EventSourceDispatch (s=<value optimized out>, callback=<value optimized out>, user_data=<value optimized out>) at kernel/qguieventdispatcher_glib.cpp:146
#64 0x0000003d87637afe in g_main_dispatch (context=<value optimized out>) at gmain.c:1814
#65 IA__g_main_context_dispatch (context=<value optimized out>) at gmain.c:2367
#66 0x0000003d8763b1d8 in g_main_context_iterate (context=0x176a0a0, block=<value optimized out>, dispatch=<value optimized out>, self=<value optimized out>) at gmain.c:2445
#67 0x0000003d8763b300 in IA__g_main_context_iteration (context=0x176a0a0, may_block=1) at gmain.c:2508
#68 0x0000003807f683b6 in QEventDispatcherGlib::processEvents (this=0x1734bd0, flags=<value optimized out>) at kernel/qeventdispatcher_glib.cpp:327
#69 0x0000003808e21b6e in QGuiEventDispatcherGlib::processEvents (this=0x7fffcf6b1550, flags=<value optimized out>) at kernel/qguieventdispatcher_glib.cpp:202
#70 0x0000003807f3e5f2 in QEventLoop::processEvents (this=<value optimized out>, flags={i = 36}) at kernel/qeventloop.cpp:149
#71 0x0000003807f3e9c4 in QEventLoop::exec (this=0x7fffcf6b5400, flags={i = 0}) at kernel/qeventloop.cpp:201
#72 0x0000003807f40b79 in QCoreApplication::exec () at kernel/qcoreapplication.cpp:888
#73 0x0000000000462ca0 in main (argc=5, argv=0x7fffcf6b6148) at /root/extragear/network/konversation/src/main.cpp:100

Reported using DrKonqi
Comment 1 Modestas Vainius 2009-07-14 20:54:33 UTC
SVN commit 996715 by modax:

executeDelayedItemsLayout() on the nicknameListView after deleting the nick. 
This should ensure QTreeWidget internals do not keep deleted QTreeWidgetItem
pointers around.

This commit should solve the bug #200123. If you ever experience it again
and/or the backtrace somewhat matches, please reopen the bug.

BUG:200123


 M  +1 -1      commit.h  
 M  +2 -0      irc/channel.cpp  


WebSVN link: http://websvn.kde.org/?view=rev&revision=996715
Comment 2 Modestas Vainius 2010-07-01 16:20:36 UTC
commit f3968507fc6815154ea6ac8a58555899ca7b58ab
Author: Modestas Vainius <modestas@vainius.eu>
Date:   Tue Jul 14 18:54:31 2009 +0000

    executeDelayedItemsLayout() on the nicknameListView after deleting the nick.
    This should ensure QTreeWidget internals do not keep deleted QTreeWidgetItem
    pointers around.
    
    This commit should solve the bug #200123. If you ever experience it again
    and/or the backtrace somewhat matches, please reopen the bug.
    
    BUG:200123
    
    svn path=/trunk/extragear/network/konversation/; revision=996715

diff --git a/src/commit.h b/src/commit.h
index b14462f..acf95b2 100644
--- a/src/commit.h
+++ b/src/commit.h
@@ -1,4 +1,4 @@
 // This COMMIT number is added to version string to be used as "patch level"
 #ifndef COMMIT
-#define COMMIT 3419
+#define COMMIT 3420
 #endif
diff --git a/src/irc/channel.cpp b/src/irc/channel.cpp
index 1c72eae..04ffeab 100644
--- a/src/irc/channel.cpp
+++ b/src/irc/channel.cpp
@@ -1461,6 +1461,8 @@ void Channel::removeNick(ChannelNickPtr channelNick, const QString &reason, bool
         {
             nicknameList.removeOne(nick);
             delete nick;
+            // Execute this otherwise it may crash trying to access deleted nick
+            nicknameListView->executeDelayedItemsLayout();
         }
         else
         {