Bug 293886 - Contact list crash while wheeling as a foul on top of a contact 'Start a duscution' mini icon
Summary: Contact list crash while wheeling as a foul on top of a contact 'Start a dusc...
Status: RESOLVED FIXED
Alias: None
Product: telepathy
Classification: Frameworks and Libraries
Component: contactlist (show other bugs)
Version: 0.3.0
Platform: Ubuntu Linux
: NOR crash
Target Milestone: 0.4.0
Assignee: Telepathy Bugs
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2012-02-12 10:54 UTC by Filipe Azevedo
Modified: 2012-07-06 12:47 UTC (History)
1 user (show)

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 Filipe Azevedo 2012-02-12 10:54:15 UTC
Version:           0.3 (using KDE 4.8.0) 
OS:                Linux

Contact list crash while wheeling as a foul on top of a contact 'Start a duscution' mini icon

Reproducible: Always

Steps to Reproduce:
- Open contact list
- Hover a contact list so the 'Open a discution' icon appear
- Hover the 'Start a discution' icon and don't move while wheeling your mouse as a foul.
- Contact list silently crash without drkonqi

Actual Results:  
Silent crash

Expected Results:  
Don't crash
Comment 1 David Edmundson 2012-02-12 11:00:15 UTC
Took me many many attempts to make this happen, captured output in gdb.

Program received signal SIGSEGV, Segmentation fault.
0x00007ffff6366ee2 in QCoreApplication::removePostedEvents(QObject*, int) () from /usr/lib/x86_64-linux-gnu/libQtCore.so.4
(gdb) br
Breakpoint 1 at 0x7ffff6366ee2
(gdb) bt
#0  0x00007ffff6366ee2 in QCoreApplication::removePostedEvents(QObject*, int) () from /usr/lib/x86_64-linux-gnu/libQtCore.so.4
#1  0x00007ffff501daea in QWidget::setVisible(bool) () from /usr/lib/x86_64-linux-gnu/libQtGui.so.4
#2  0x00000000004299bb in ContactViewHoverButton::setVisible (this=0x81e2c0, visible=true)
    at /home/david/telepathy/ktp-contact-list/contact-view-hover-button.cpp:100
#3  0x000000000042ce9e in QWidget::show (this=0x81e2c0) at /usr/include/qt4/QtGui/qwidget.h:487
#4  0x000000000042bd5b in AbstractWidgetDelegateOverlay::slotEntered (this=0x81f510, index=...)
    at /home/david/telepathy/ktp-contact-list/contact-delegate-overlay.cpp:184
#5  0x000000000042c17d in HoverButtonDelegateOverlay::slotEntered (this=0x81f510, index=...)
    at /home/david/telepathy/ktp-contact-list/contact-delegate-overlay.cpp:304
#6  0x000000000042ce51 in HoverButtonDelegateOverlay::qt_metacall (this=0x81f510, _c=QMetaObject::InvokeMetaMethod, _id=0, _a=0x7fffff7ff730)
    at /home/david/telepathy/ktp-contact-list/build/contact-delegate-overlay.moc:239
#7  0x000000000042acd4 in StartChannelContactOverlay::qt_metacall (this=0x81f510, _c=QMetaObject::InvokeMetaMethod, _id=14, _a=0x7fffff7ff730)
    at /home/david/telepathy/ktp-contact-list/build/contact-overlays.moc:73
#8  0x000000000042ae78 in TextChannelContactOverlay::qt_metacall (this=0x81f510, _c=QMetaObject::InvokeMetaMethod, _id=14, _a=0x7fffff7ff730)
    at /home/david/telepathy/ktp-contact-list/build/contact-overlays.moc:138
#9  0x00007ffff6376eba in QMetaObject::activate(QObject*, QMetaObject const*, int, void**) () from /usr/lib/x86_64-linux-gnu/libQtCore.so.4
#10 0x00007ffff54d77f5 in QAbstractItemView::entered(QModelIndex const&) () from /usr/lib/x86_64-linux-gnu/libQtGui.so.4
#11 0x00007ffff54d7958 in ?? () from /usr/lib/x86_64-linux-gnu/libQtGui.so.4
#12 0x00007ffff54db93c in QAbstractItemView::mouseMoveEvent(QMouseEvent*) () from /usr/lib/x86_64-linux-gnu/libQtGui.so.4
#13 0x000000000041ee74 in ContactListWidget::mouseMoveEvent (this=0x86f1c0, event=0x7fffff800520)
    at /home/david/telepathy/ktp-contact-list/contact-list-widget.cpp:575
#14 0x00007ffff5019d1e in QWidget::event(QEvent*) () from /usr/lib/x86_64-linux-gnu/libQtGui.so.4
#15 0x00007ffff53c25b6 in QFrame::event(QEvent*) () from /usr/lib/x86_64-linux-gnu/libQtGui.so.4
#16 0x00007ffff54d325b in QAbstractItemView::viewportEvent(QEvent*) () from /usr/lib/x86_64-linux-gnu/libQtGui.so.4
Comment 2 Martin Klapetek 2012-05-04 15:08:32 UTC
I managed to get a slightly longer gdb output, looks like it's stucked in some inner recursive event-loop.

(gdb) bt
#0  QWidget::event (this=0x84c440, event=0x7fffff7ffc00) at kernel/qwidget.cpp:8347
#1  0x00007ffff504d3c6 in QFrame::event (this=0x84c440, e=0x7fffff7ffc00) at widgets/qframe.cpp:557
#2  0x00007ffff51618ab in QAbstractItemView::viewportEvent (this=0x84c440, event=0x7fffff7ffc00) at itemviews/qabstractitemview.cpp:1644
#3  0x00007ffff51a94c5 in QTreeView::viewportEvent (this=0x84c440, event=0x7fffff7ffc00) at itemviews/qtreeview.cpp:1257
#4  0x00007ffff6009028 in QCoreApplicationPrivate::sendThroughObjectEventFilters (this=<optimized out>, receiver=0x84c5f0, event=0x7fffff7ffc00)
    at kernel/qcoreapplication.cpp:986
#5  0x00007ffff4c3c85f in notify_helper (e=0x7fffff7ffc00, receiver=0x84c5f0, this=0x6af250) at kernel/qapplication.cpp:4555
#6  QApplicationPrivate::notify_helper (this=0x6af250, receiver=0x84c5f0, e=0x7fffff7ffc00) at kernel/qapplication.cpp:4531
#7  0x00007ffff4c420bf in QApplication::notify (this=<optimized out>, receiver=0x84c5f0, e=0x7fffff7ffc00) at kernel/qapplication.cpp:4102
#8  0x00007ffff6c8cb46 in KApplication::notify(QObject*, QEvent*) () from /usr/lib/libkdeui.so.5
#9  0x00007ffff6008e9c in QCoreApplication::notifyInternal (this=0x7fffffffdd90, receiver=0x84c5f0, event=0x7fffff7ffc00) at kernel/qcoreapplication.cpp:876
#10 0x00007ffff4c3d862 in sendEvent (event=<optimized out>, receiver=<optimized out>) at ../../include/QtCore/../../src/corelib/kernel/qcoreapplication.h:231
#11 QApplicationPrivate::sendMouseEvent (receiver=0x84c5f0, event=0x7fffff7ffc00, alienWidget=0x84c5f0, nativeWidget=0x7fe120, buttonDown=0x0, 
    lastMouseReceiver=..., spontaneous=true) at kernel/qapplication.cpp:3170
#12 0x00007ffff4c3dcfa in QApplicationPrivate::sendSyntheticEnterLeave (this=<optimized out>, widget=0x819570) at kernel/qapplication.cpp:3254
#13 0x00007ffff4c8dff3 in QWidgetPrivate::hide_helper (this=0x8217c0) at kernel/qwidget.cpp:7635
#14 0x00007ffff4c8fd08 in QWidget::setVisible (this=0x819570, visible=<optimized out>) at kernel/qwidget.cpp:7801
#15 0x000000000042ec27 in ContactViewHoverButton::setVisible (this=0x819570, visible=false)
    at /home/mck182/Work/Telepathy/ktp-contact-list/contact-view-hover-button.cpp:100
#16 0x0000000000425bce in QWidget::hide (this=0x819570) at /usr/include/qt4/QtGui/qwidget.h:498
#17 0x0000000000431041 in AbstractWidgetDelegateOverlay::hide (this=0x814440)
    at /home/mck182/Work/Telepathy/ktp-contact-list/contact-delegate-overlay.cpp:164
#18 0x00000000004310b3 in AbstractWidgetDelegateOverlay::slotEntered (this=0x814440, index=...)
    at /home/mck182/Work/Telepathy/ktp-contact-list/contact-delegate-overlay.cpp:180
#19 0x0000000000431531 in HoverButtonDelegateOverlay::slotEntered (this=0x814440, index=...)
    at /home/mck182/Work/Telepathy/ktp-contact-list/contact-delegate-overlay.cpp:304
#20 0x0000000000432274 in HoverButtonDelegateOverlay::qt_static_metacall (_o=0x814440, _c=QMetaObject::InvokeMetaMethod, _id=0, _a=0x7fffff7fff90)
    at /home/mck182/Work/Telepathy/ktp-contact-list/build/contact-delegate-overlay.moc:244
#21 0x00007ffff601d281 in QMetaObject::activate (sender=0x84c440, m=<optimized out>, local_signal_index=<optimized out>, argv=0x7fffff7fff90)
    at kernel/qobject.cpp:3547
#22 0x00007ffff5163135 in QAbstractItemView::entered (this=<optimized out>, _t1=...) at .moc/release-shared/moc_qabstractitemview.cpp:369
#23 0x00007ffff5163298 in QAbstractItemViewPrivate::checkMouseMove (this=0x83db20, index=...) at itemviews/qabstractitemview.cpp:172
#24 0x00007ffff516ae0c in QAbstractItemView::mouseMoveEvent (this=0x84c440, event=0x7fffff800f60) at itemviews/qabstractitemview.cpp:1744
#25 0x0000000000423f98 in ContactListWidget::mouseMoveEvent (this=0x84c440, event=0x7fffff800f60)
    at /home/mck182/Work/Telepathy/ktp-contact-list/contact-list-widget.cpp:587
#26 0x00007ffff4c8d178 in QWidget::event (this=0x84c440, event=0x7fffff800f60) at kernel/qwidget.cpp:8347
#27 0x00007ffff504d3c6 in QFrame::event (this=0x84c440, e=0x7fffff800f60) at widgets/qframe.cpp:557
#28 0x00007ffff51618ab in QAbstractItemView::viewportEvent (this=0x84c440, event=0x7fffff800f60) at itemviews/qabstractitemview.cpp:1644
#29 0x00007ffff51a94c5 in QTreeView::viewportEvent (this=0x84c440, event=0x7fffff800f60) at itemviews/qtreeview.cpp:1257
#30 0x00007ffff6009028 in QCoreApplicationPrivate::sendThroughObjectEventFilters (this=<optimized out>, receiver=0x84c5f0, event=0x7fffff800f60)
    at kernel/qcoreapplication.cpp:986
#31 0x00007ffff4c3c85f in notify_helper (e=0x7fffff800f60, receiver=0x84c5f0, this=0x6af250) at kernel/qapplication.cpp:4555
#32 QApplicationPrivate::notify_helper (this=0x6af250, receiver=0x84c5f0, e=0x7fffff800f60) at kernel/qapplication.cpp:4531
#33 0x00007ffff4c420bf in QApplication::notify (this=<optimized out>, receiver=0x84c5f0, e=0x7fffff800f60) at kernel/qapplication.cpp:4102
#34 0x00007ffff6c8cb46 in KApplication::notify(QObject*, QEvent*) () from /usr/lib/libkdeui.so.5
#35 0x00007ffff6008e9c in QCoreApplication::notifyInternal (this=0x7fffffffdd90, receiver=0x84c5f0, event=0x7fffff800f60) at kernel/qcoreapplication.cpp:876
#36 0x00007ffff4c3d862 in sendEvent (event=<optimized out>, receiver=<optimized out>) at ../../include/QtCore/../../src/corelib/kernel/qcoreapplication.h:231
#37 QApplicationPrivate::sendMouseEvent (receiver=0x84c5f0, event=0x7fffff800f60, alienWidget=0x84c5f0, nativeWidget=0x7fe120, buttonDown=0x0, 
    lastMouseReceiver=..., spontaneous=true) at kernel/qapplication.cpp:3170
#38 0x00007ffff4c3dcfa in QApplicationPrivate::sendSyntheticEnterLeave (this=<optimized out>, widget=0x819570) at kernel/qapplication.cpp:3254
#39 0x00007ffff4c8dff3 in QWidgetPrivate::hide_helper (this=0x8217c0) at kernel/qwidget.cpp:7635
#40 0x00007ffff4c8fd08 in QWidget::setVisible (this=0x819570, visible=<optimized out>) at kernel/qwidget.cpp:7801
#41 0x000000000042ec27 in ContactViewHoverButton::setVisible (this=0x819570, visible=false)
    at /home/mck182/Work/Telepathy/ktp-contact-list/contact-view-hover-button.cpp:100
#42 0x0000000000425bce in QWidget::hide (this=0x819570) at /usr/include/qt4/QtGui/qwidget.h:498
#43 0x0000000000431041 in AbstractWidgetDelegateOverlay::hide (this=0x814440)
    at /home/mck182/Work/Telepathy/ktp-contact-list/contact-delegate-overlay.cpp:164
#44 0x00000000004310b3 in AbstractWidgetDelegateOverlay::slotEntered (this=0x814440, index=...)
    at /home/mck182/Work/Telepathy/ktp-contact-list/contact-delegate-overlay.cpp:180
#45 0x0000000000431531 in HoverButtonDelegateOverlay::slotEntered (this=0x814440, index=...)
    at /home/mck182/Work/Telepathy/ktp-contact-list/contact-delegate-overlay.cpp:304
#46 0x0000000000432274 in HoverButtonDelegateOverlay::qt_static_metacall (_o=0x814440, _c=QMetaObject::InvokeMetaMethod, _id=0, _a=0x7fffff8012f0)
    at /home/mck182/Work/Telepathy/ktp-contact-list/build/contact-delegate-overlay.moc:244
#47 0x00007ffff601d281 in QMetaObject::activate (sender=0x84c440, m=<optimized out>, local_signal_index=<optimized out>, argv=0x7fffff8012f0)
    at kernel/qobject.cpp:3547
#48 0x00007ffff5163135 in QAbstractItemView::entered (this=<optimized out>, _t1=...) at .moc/release-shared/moc_qabstractitemview.cpp:369
#49 0x00007ffff5163298 in QAbstractItemViewPrivate::checkMouseMove (this=0x83db20, index=...) at itemviews/qabstractitemview.cpp:172
#50 0x00007ffff516ae0c in QAbstractItemView::mouseMoveEvent (this=0x84c440, event=0x7fffff8022c0) at itemviews/qabstractitemview.cpp:1744
#51 0x0000000000423f98 in ContactListWidget::mouseMoveEvent (this=0x84c440, event=0x7fffff8022c0)
    at /home/mck182/Work/Telepathy/ktp-contact-list/contact-list-widget.cpp:587
#52 0x00007ffff4c8d178 in QWidget::event (this=0x84c440, event=0x7fffff8022c0) at kernel/qwidget.cpp:8347
#53 0x00007ffff504d3c6 in QFrame::event (this=0x84c440, e=0x7fffff8022c0) at widgets/qframe.cpp:557
#54 0x00007ffff51618ab in QAbstractItemView::viewportEvent (this=0x84c440, event=0x7fffff8022c0) at itemviews/qabstractitemview.cpp:1644
#55 0x00007ffff51a94c5 in QTreeView::viewportEvent (this=0x84c440, event=0x7fffff8022c0) at itemviews/qtreeview.cpp:1257
#56 0x00007ffff6009028 in QCoreApplicationPrivate::sendThroughObjectEventFilters (this=<optimized out>, receiver=0x84c5f0, event=0x7fffff8022c0)
    at kernel/qcoreapplication.cpp:986
#57 0x00007ffff4c3c85f in notify_helper (e=0x7fffff8022c0, receiver=0x84c5f0, this=0x6af250) at kernel/qapplication.cpp:4555
#58 QApplicationPrivate::notify_helper (this=0x6af250, receiver=0x84c5f0, e=0x7fffff8022c0) at kernel/qapplication.cpp:4531
#59 0x00007ffff4c420bf in QApplication::notify (this=<optimized out>, receiver=0x84c5f0, e=0x7fffff8022c0) at kernel/qapplication.cpp:4102
#60 0x00007ffff6c8cb46 in KApplication::notify(QObject*, QEvent*) () from /usr/lib/libkdeui.so.5
#61 0x00007ffff6008e9c in QCoreApplication::notifyInternal (this=0x7fffffffdd90, receiver=0x84c5f0, event=0x7fffff8022c0) at kernel/qcoreapplication.cpp:876
#62 0x00007ffff4c3d862 in sendEvent (event=<optimized out>, receiver=<optimized out>) at ../../include/QtCore/../../src/corelib/kernel/qcoreapplication.h:231
#63 QApplicationPrivate::sendMouseEvent (receiver=0x84c5f0, event=0x7fffff8022c0, alienWidget=0x84c5f0, nativeWidget=0x7fe120, buttonDown=0x0, 
    lastMouseReceiver=..., spontaneous=true) at kernel/qapplication.cpp:3170
#64 0x00007ffff4c3dcfa in QApplicationPrivate::sendSyntheticEnterLeave (this=<optimized out>, widget=0x819570) at kernel/qapplication.cpp:3254
#65 0x00007ffff4c8dff3 in QWidgetPrivate::hide_helper (this=0x8217c0) at kernel/qwidget.cpp:7635
#66 0x00007ffff4c8fd08 in QWidget::setVisible (this=0x819570, visible=<optimized out>) at kernel/qwidget.cpp:7801
#67 0x000000000042ec27 in ContactViewHoverButton::setVisible (this=0x819570, visible=false)
    at /home/mck182/Work/Telepathy/ktp-contact-list/contact-view-hover-button.cpp:100
#68 0x0000000000425bce in QWidget::hide (this=0x819570) at /usr/include/qt4/QtGui/qwidget.h:498
#69 0x0000000000431041 in AbstractWidgetDelegateOverlay::hide (this=0x814440)
    at /home/mck182/Work/Telepathy/ktp-contact-list/contact-delegate-overlay.cpp:164
#70 0x00000000004310b3 in AbstractWidgetDelegateOverlay::slotEntered (this=0x814440, index=...)
    at /home/mck182/Work/Telepathy/ktp-contact-list/contact-delegate-overlay.cpp:180
#71 0x0000000000431531 in HoverButtonDelegateOverlay::slotEntered (this=0x814440, index=...)
    at /home/mck182/Work/Telepathy/ktp-contact-list/contact-delegate-overlay.cpp:304
Comment 3 Martin Klapetek 2012-05-12 13:55:02 UTC
Git commit 8348dda8de679adc91ff3ea63a34b0221d0e7978 by Martin Klapetek.
Committed on 12/05/2012 at 15:50.
Pushed by mklapetek into branch 'master'.

Make the delegate overlays code signicitantly simpler, fixes crash in the process

The overlays were in several classes, all deriving one from another. This commit merges several of the classes into one and removes unused and/or useless methods, thus simplifying the code and making it more readable, effective and easier to maintain.

Reviewed-by: David Edmundson
REVIEW: 104887

M  +82   -190  contact-delegate-overlay.cpp
M  +40   -125  contact-delegate-overlay.h
M  +4    -1    contact-delegate.cpp
M  +2    -14   contact-list-widget.cpp
M  +11   -11   contact-overlays.cpp
M  +7    -8    contact-overlays.h
M  +3    -3    contact-view-hover-button.cpp
M  +5    -11   contact-view-hover-button.h

http://commits.kde.org/telepathy-contact-list/8348dda8de679adc91ff3ea63a34b0221d0e7978