4.3 branch plasma crash in AbstractTaskItem::basicPreferredSize

David Faure faure at kde.org
Sat Aug 8 00:28:19 CEST 2009


On Friday 07 August 2009, Marco Martin wrote:
> On Friday 07 August 2009, David Faure wrote:
> > Plasma crashes rather often for me.
> > I finally got a bt of the crash. Is this enough info for anyone to fix it?

And now I got another backtrace, no null pointer this time
 (am I the only one opening and closing windows in kde 4.3???).
I wonder if the auto-restarting of plasma makes most people ignore such
crashes, or if I activated an option (e.g. task grouping) that most people didn't.

#0  0x00007f21de30b2de in QGraphicsItem::parentItem (this=0x4197120) at graphicsview/qgraphicsitem.cpp:938
#1  0x00007f21de3542e0 in QGraphicsLayoutPrivate::addChildLayoutItem (this=0x2c46340, layoutItem=0x4190620) at graphicsview/qgraphicslayout_p.cpp:162
#2  0x00007f21de37367b in QGraphicsGridLayout::addItem (this=0x2c462e0, item=0x4190620, row=0, column=0, rowSpan=1, columnSpan=1, alignment={i = -362538464}) at graphicsview/qgraphicsgridlayout.cpp:158
#3  0x00007f21c58cd8c4 in TaskItemLayout::layoutItems (this=0x2c462e0) at /d/kde/src/4/kdebase/workspace/plasma/applets/tasks/taskitemlayout.cpp:370
#4  0x00007f21c58d8ea5 in TaskGroupItem::constraintsChanged (this=0x2c45110, constraints={i = -362538176}) at /d/kde/src/4/kdebase/workspace/plasma/applets/tasks/taskgroupitem.cpp:726
#5  0x00007f21c58dbf4c in TaskGroupItem::qt_metacall (this=0x2c45110, _c=QMetaObject::InvokeMetaMethod, _id=11, _a=0x7fffea641cb0) at /d/kde/build/4/kdebase/workspace/plasma/applets/tasks/taskgroupitem.moc:110
#6  0x00007f21dd5a2614 in QMetaObject::activate (sender=0x27b4890, from_signal_index=36, to_signal_index=36, argv=0x7fffea641cb0) at kernel/qobject.cpp:3109
#7  0x00007f21dd5a3a11 in QMetaObject::activate (sender=0x27b4890, m=0x7f21c5ae7f60, local_signal_index=0, argv=0x7fffea641cb0) at kernel/qobject.cpp:3186
#8  0x00007f21c58c7599 in Tasks::constraintsChanged (this=0x27b4890, _t1={i = -362537728}) at /d/kde/build/4/kdebase/workspace/plasma/applets/tasks/tasks.moc:95
#9  0x00007f21c58c8ee3 in Tasks::constraintsEvent (this=0x27b4890, constraints={i = -362537344}) at /d/kde/src/4/kdebase/workspace/plasma/applets/tasks/tasks.cpp:169
#10 0x00007f21e1bb4433 in Plasma::Applet::flushPendingConstraintsEvents (this=0x27b4890) at /d/kde/src/4/kdelibs/plasma/applet.cpp:1163
#11 0x00007f21e1bb458b in Plasma::Applet::timerEvent (this=0x27b4890, event=0x7fffea642860) at /d/kde/src/4/kdelibs/plasma/applet.cpp:2110

(gdb) p *this
$3 = {_vptr.QGraphicsItem = 0x30a2340, d_ptr = 0x1}
Ouch. Probably already deleted.

(gdb) up
#1  0x00007f21de3542e0 in QGraphicsLayoutPrivate::addChildLayoutItem (this=0x2c46340, layoutItem=0x4190620) at graphicsview/qgraphicslayout_p.cpp:162
(gdb) p item
$9 = (class QGraphicsItem *) 0x4197120

Comes from "if (QGraphicsItem *item = layoutItem->graphicsItem()) {"

(gdb) p layoutItem
$11 = (class QGraphicsLayoutItem *) 0x4190620
(gdb) p *layoutItem.d_ptr
warning: can't find linker symbol for virtual table for `QGraphicsLayoutItemPrivate' value
$8 = {_vptr.QGraphicsLayoutItemPrivate = 0x7f21dca5db40, sizePolicy = {data = 3701857088}, parent = 0x2c462e0, userSizeHints = {{wd = 3.3979969529082241e-316, ht = -1}, {wd = 0, ht = 0}, {wd = 1.8733483140837378e-316, ht = 0}, {wd = 0, ht = 0}}, cachedSizeHints = {{wd = 0, ht = 4.9406564584124654e-324}, {wd = 0, ht = 0}, {wd = 0, ht = 0}, {wd = 4.9406564584124654e-324, ht = 6.9062189363508992e-310}}, cachedConstraint = {wd = 6.9062189363508992e-310, ht = -1}, sizeHintCacheDirty = 0, isLayout = 0, ownedByLayout = 0, q_ptr = 0x6, geom = {xp = 6.7903865310888714e-313, yp = 4.9406564584124654e-324, w = 0, h = 0}, graphicsItem = 0x4197120}

The value of q_ptr in there indicates that layoutItem, too, is already deleted.

But the value of layoutItem comes from m_itemPositions in TaskItemLayout::layoutItems,
dunno where to go from there. But obviously that list contains dangling pointers.
I could run plasma in valgrind all day, but, hmm. Not on the laptop ;)

Qt-4.5.2

-- 
David Faure, faure at kde.org, sponsored by Qt Software @ Nokia to work on KDE,
Konqueror (http://www.konqueror.org), and KOffice (http://www.koffice.org).


More information about the Plasma-devel mailing list