Ubuntu

ktp-contactlist crashed with SIGSEGV in QCoreApplication::removePostedEvents()

Reported by Jeff Cook on 2012-02-23
110
This bug affects 11 people
Affects Status Importance Assigned to Milestone
Telepathy KDE
Fix Released
High
ktp-contact-list (Ubuntu)
High
Unassigned

Bug Description

Nothing just using the application

ProblemType: Crash
DistroRelease: Ubuntu 12.04
Package: kde-telepathy-contact-list 0.3.0-0ubuntu1
ProcVersionSignature: Ubuntu 3.2.0-17.26-generic-pae 3.2.6
Uname: Linux 3.2.0-17-generic-pae i686
NonfreeKernelModules: wl
ApportVersion: 1.92-0ubuntu1
Architecture: i386
Date: Thu Feb 23 10:06:30 2012
ExecutablePath: /usr/bin/ktp-contactlist
InstallationMedia: Kubuntu 12.04 LTS "Precise Pangolin" - Alpha i386 (20120222)
ProcCmdline: /usr/bin/ktp-contactlist -session 1017a149e511c000132996140100000013680043_1329962137_674701
ProcEnviron:
 LANG=en_US.UTF-8
 SHELL=/bin/bash
SegvAnalysis:
 Segfault happened at: 0xb6a3e826 <QCoreApplication::removePostedEvents(QObject*, int)+22>: call 0xb6905287 <__i686.get_pc_thunk.bx>
 PC (0xb6a3e826) ok
 source "0xb6905287" (0xb6905287) ok
 Stack memory exhausted (SP below stack segment)
 SP (0xbf6e8fd0) not located in a known VMA region (needed readable region)!
SegvReason: reading unknown VMA
Signal: 11
SourcePackage: ktp-contact-list
StacktraceTop:
 QCoreApplication::removePostedEvents (receiver=<error reading variable: Cannot access memory at address 0xbf6e8fec>, eventType=20) at kernel/qcoreapplication.cpp:1575
 QWidget::setVisible (this=0x92eae10, visible=true) at kernel/qwidget.cpp:7761
 _start ()
Title: ktp-contactlist crashed with SIGSEGV in QCoreApplication::removePostedEvents()
UpgradeStatus: No upgrade log present (probably fresh install)
UserGroups: adm cdrom dip lpadmin plugdev sambashare sudo

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

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

Jeff Cook (jcook-5xdata) wrote :

StacktraceTop:
 QCoreApplication::removePostedEvents (receiver=Cannot access memory at address 0xbf6e8fec
 QWidget::setVisible (this=0x92eae10, visible=true) at kernel/qwidget.cpp:7761
 ContactViewHoverButton::setVisible (this=0x92eae10, visible=true) at /build/buildd/ktp-contact-list-0.3.0/contact-view-hover-button.cpp:100
 show (this=<optimized out>) at /usr/include/qt4/QtGui/qwidget.h:494
 slotEntered (index=..., this=0x92d2508) at /build/buildd/ktp-contact-list-0.3.0/contact-delegate-overlay.cpp:184

Changed in ktp-contact-list (Ubuntu):
importance: Undecided → Medium
tags: removed: need-i386-retrace
Launchpad Janitor (janitor) wrote :

Status changed to 'Confirmed' because the bug affects multiple users.

Changed in ktp-contact-list (Ubuntu):
status: New → Confirmed
Jonathan Thomas (echidnaman) wrote :

This appears to be an infinite loop within the ContactViewHoverButton's mouse event handling slots.

visibility: private → public
Changed in ktp-contact-list (Ubuntu):
importance: Medium → High
Download full text (10.3 KiB)

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 ...

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

Changed in telepathy-kde:
importance: Unknown → High
status: Unknown → Fix Released
To post a comment you must log in.
This report contains Public information  Edit
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.