Bug 161915 - removing a widget from panel plus afterwards calling "Add Widgets" causes plasma to crash and locks X
Summary: removing a widget from panel plus afterwards calling "Add Widgets" causes pla...
Status: RESOLVED WORKSFORME
Alias: None
Product: plasma4
Classification: Plasma
Component: general (show other bugs)
Version: unspecified
Platform: Compiled Sources Linux
: NOR crash
Target Milestone: ---
Assignee: Plasma Bugs List
URL:
Keywords:
: 161167 (view as bug list)
Depends on:
Blocks:
 
Reported: 2008-05-10 19:40 UTC by Janet
Modified: 2008-10-05 19:46 UTC (History)
2 users (show)

See Also:
Latest Commit:
Version Fixed In:


Attachments
Backtrace of the crash. (3.95 KB, application/octet-stream)
2008-05-17 00:58 UTC, Raúl
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Janet 2008-05-10 19:40:05 UTC
Version:           4.0.71 (using Devel)
Installed from:    Compiled sources
OS:                Linux

Because I wanted to reorder the widgets in the panel I removed the pager widget. Afterwards I called "Add Widgets". Result: Plasma crashed with "A Fatal Error" and reloaded with the settings it had before the crash i.e. pager was there again. So I tried again: removed pager, called "Add Widgets". Result: Plasma crashed and didn't recover (overall grey desktop with nothing on it) so I had to do a Ctrl-Alt-Backspace to restart the X server. I repeated this a few times, it's always the same. Removing a widget from the panel (pager, show desktop,...) and calling "Add Widgets" first time crashes and restores Plasma, second time crashes Plasma and locks X.
Comment 1 Eike Hein 2008-05-10 19:43:03 UTC
This was previously reported by mail on panel-devel as well. Here's a backtrace from Sebastian Kuegler:

Application: Plasma Workspace (plasma), signal SIGSEGV
[Thread debugging using libthread_db enabled]
[New Thread 0xb573b720 (LWP 30139)]
[New Thread 0xb3020b90 (LWP 30141)]
[New Thread 0xb3e08b90 (LWP 30140)]
[KCrash handler]
#6  0xb6499c05 in QGraphicsLayoutItem::sizePolicy (this=0x821b718)
    at graphicsview/qgraphicslayoutitem.cpp:332
#7  0xb64a7463 in QGridLayoutItem::sizePolicy (this=0x82b5c48, 
    orientation=Qt::Horizontal) at graphicsview/qgridlayoutengine.cpp:531
#8  0xb64a7fd6 in QGridLayoutItem::stretchFactor (this=0x82b5c48, 
    orientation=Qt::Horizontal) at graphicsview/qgridlayoutengine.cpp:512
#9  0xb64a876b in QGridLayoutEngine::fillRowData (this=0x816be64, 
    rowData=0x816bec8, styleInfo=@0xbf8ca05c, orientation=Qt::Horizontal)
    at graphicsview/qgridlayoutengine.cpp:1265
#10 0xb64aa508 in QGridLayoutEngine::ensureColumnAndRowData (this=0x816be64, 
    styleInfo=@0xbf8ca05c) at graphicsview/qgridlayoutengine.cpp:1417
#11 0xb64aa6a2 in QGridLayoutEngine::ensureGeometries (this=0x816be64, 
    styleInfo=@0xbf8ca05c, size=@0xbf8c9fb8)
    at graphicsview/qgridlayoutengine.cpp:1432
#12 0xb64aab2d in QGridLayoutEngine::setGeometries (this=0x816be64, 
    styleInfo=@0xbf8ca05c, contentsGeometry=@0xbf8ca038)
    at graphicsview/qgridlayoutengine.cpp:961
#13 0xb649bc9e in QGraphicsLinearLayout::setGeometry (this=0x8280230, 
    rect=@0xbf8ca0d8) at graphicsview/qgraphicslinearlayout.cpp:489
#14 0xb64988b5 in QGraphicsLayout::activate (this=0x8280230)
    at graphicsview/qgraphicslayout.cpp:251
#15 0xb6498977 in QGraphicsLayout::widgetEvent (this=0x8280230, e=0x83dac30)
    at graphicsview/qgraphicslayout.cpp:314
#16 0xb649cd46 in QGraphicsWidget::event (this=0x817a168, event=0x83dac30)
    at graphicsview/qgraphicswidget.cpp:1153
#17 0xb5eb290d in QApplicationPrivate::notify_helper (this=0x807a7f0, 
    receiver=0x817a168, e=0x83dac30) at kernel/qapplication.cpp:3766
#18 0xb5eb2bf3 in QApplication::notify (this=0x807c770, receiver=0x817a168, 
    e=0x83dac30) at kernel/qapplication.cpp:3360
#19 0xb79ea8f1 in KApplication::notify (this=0x807c770, receiver=0x817a168, 
    event=0x83dac30)
    at /data/kdedev/kde/src/kdelibs/kdeui/kernel/kapplication.cpp:311
#20 0xb6b5363a in QCoreApplication::notifyInternal (this=0x807c770, 
    receiver=0x817a168, event=0x83dac30) at kernel/qcoreapplication.cpp:583
#21 0xb709520b in QCoreApplication::sendEvent (receiver=0x817a168, 
    event=0x83dac30)
    at ../../../../include/QtCore/../../src/corelib/kernel/qcoreapplication.h:215
#22 0xb6b53b52 in QCoreApplicationPrivate::sendPostedEvents (receiver=0x0, 
    event_type=0, data=0x804aec0) at kernel/qcoreapplication.cpp:1195
#23 0xb6b53d03 in QCoreApplication::sendPostedEvents (receiver=0x0, 
    event_type=0) at kernel/qcoreapplication.cpp:1091
#24 0xb6b84552 in QCoreApplication::sendPostedEvents ()
    at ../../include/QtCore/../../src/corelib/kernel/qcoreapplication.h:220
#25 0xb6b83763 in postEventSourceDispatch (s=0x807c940)
    at kernel/qeventdispatcher_glib.cpp:211
#26 0xb5875bf8 in g_main_context_dispatch () from /usr/lib/libglib-2.0.so.0
#27 0xb5878e5e in ?? () from /usr/lib/libglib-2.0.so.0
#28 0x0807c8b8 in ?? ()
#29 0x00000000 in ?? ()
#0  0xffffe410 in __kernel_vsyscall ()
Comment 2 Raúl 2008-05-17 00:57:06 UTC
I also got a very similar BT on debian experimental (4.0.72). In my case what I did was just trying to change K menu to "traditional style". Right click on K button, "Change to classic style".

I'm attaching my backtrace yet almost the same.
Comment 3 Raúl 2008-05-17 00:58:11 UTC
Created attachment 24798 [details]
Backtrace of the crash.
Comment 4 Raúl 2008-05-17 01:03:12 UTC
Sorry, I'm sleepy, but isn't it this a dupe of http://bugs.kde.org/show_bug.cgi?id=161167

One more note, plasma doesn't crash so badly here. Same usability as before the crash, svn rev 802997.

Regards,
Comment 5 Sebastian Sauer 2008-06-04 03:52:10 UTC
*** Bug 161167 has been marked as a duplicate of this bug. ***
Comment 6 Aaron J. Seigo 2008-06-18 00:06:58 UTC
using trunk/
Comment 7 Sebastian Kratzert 2008-10-05 00:47:59 UTC
I can confirm this crash. Simply add a clock widget to the desktop, drag it somewhere and close it afterwards. This crashes for me everytimes.
gdb gives me a batrace like the above. valgrind gives this:

==9425== Invalid read of size 4
==9425==    at 0x50F6E99: QGraphicsLayoutItem::sizePolicy() const (qgraphicslayoutitem.cpp:327)
==9425==    by 0x51031B6: QGridLayoutItem::sizePolicy(Qt::Orientation) const (qgridlayoutengine.cpp:525)
==9425==    by 0x51035FE: QGridLayoutItem::stretchFactor(Qt::Orientation) const (qgridlayoutengine.cpp:506)
==9425==    by 0x5104E30: QGridLayoutEngine::fillRowData(QGridLayoutRowData*, QLayoutStyleInfo const&, Qt::Orientation) const (qgridlayoutengine.cpp:1259)
==9425==    by 0x510617E: QGridLayoutEngine::ensureColumnAndRowData(QLayoutStyleInfo const&) const (qgridlayoutengine.cpp:1411)
==9425==    by 0x5106305: QGridLayoutEngine::ensureGeometries(QLayoutStyleInfo const&, QSizeF const&) const (qgridlayoutengine.cpp:1426)
==9425==    by 0x51068FB: QGridLayoutEngine::setGeometries(QLayoutStyleInfo const&, QRectF const&) (qgridlayoutengine.cpp:955)
==9425==    by 0x510DBBE: QGraphicsGridLayout::setGeometry(QRectF const&) (qgraphicsgridlayout.cpp:578)
==9425==    by 0x50F59C3: QGraphicsLayout::activate() (qgraphicslayout.cpp:247)
==9425==    by 0x50F5A4B: QGraphicsLayout::widgetEvent(QEvent*) (qgraphicslayout.cpp:310)
==9425==    by 0x50FAF12: QGraphicsWidget::event(QEvent*) (qgraphicswidget.cpp:1163)
==9425==    by 0x4B3AB9B: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:3804)
==9425==  Address 0x6e7fa44 is 20 bytes inside a block of size 28 free'd
==9425==    at 0x402371A: operator delete(void*) (in /usr/lib/valgrind/x86-linux/vgpreload_memcheck.so)
==9425==    by 0x413DE44: Plasma::Extender::~Extender() (extender.cpp:63)
==9425==    by 0x40F7DF3: Plasma::AppletPrivate::~AppletPrivate() (applet.cpp:1647)
==9425==    by 0x40FB914: Plasma::Applet::~Applet() (applet.cpp:150)
==9425==    by 0x414FF17: Plasma::PopupApplet::~PopupApplet() (popupapplet.cpp:58)
==9425==    by 0xA389E5D: ClockApplet::~ClockApplet() (clockapplet.cpp:76)
==9425==    by 0xA37B7B0: Clock::~Clock() (clock.cpp:68)
==9425==    by 0x58C00FB: qDeleteInEventHandler(QObject*) (qobject.cpp:3665)
==9425==    by 0x58C1AFA: QObject::event(QEvent*) (qobject.cpp:1139)
==9425==    by 0x50FAF56: QGraphicsWidget::event(QEvent*) (qgraphicswidget.cpp:1239)
==9425==    by 0x4B3AB9B: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:3804)
==9425==    by 0x4B429FD: QApplication::notify(QObject*, QEvent*) (qapplication.cpp:3394)
==9425==
==9425== Invalid read of size 4
==9425==    at 0x50F6E9C: QGraphicsLayoutItem::sizePolicy() const (qgraphicslayoutitem.cpp:327)
==9425==    by 0x51031B6: QGridLayoutItem::sizePolicy(Qt::Orientation) const (qgridlayoutengine.cpp:525)
==9425==    by 0x51035FE: QGridLayoutItem::stretchFactor(Qt::Orientation) const (qgridlayoutengine.cpp:506)
==9425==    by 0x5104E30: QGridLayoutEngine::fillRowData(QGridLayoutRowData*, QLayoutStyleInfo const&, Qt::Orientation) const (qgridlayoutengine.cpp:1259)
==9425==    by 0x510617E: QGridLayoutEngine::ensureColumnAndRowData(QLayoutStyleInfo const&) const (qgridlayoutengine.cpp:1411)
==9425==    by 0x5106305: QGridLayoutEngine::ensureGeometries(QLayoutStyleInfo const&, QSizeF const&) const (qgridlayoutengine.cpp:1426)
==9425==    by 0x51068FB: QGridLayoutEngine::setGeometries(QLayoutStyleInfo const&, QRectF const&) (qgridlayoutengine.cpp:955)
==9425==    by 0x510DBBE: QGraphicsGridLayout::setGeometry(QRectF const&) (qgraphicsgridlayout.cpp:578)
==9425==    by 0x50F59C3: QGraphicsLayout::activate() (qgraphicslayout.cpp:247)
==9425==    by 0x50F5A4B: QGraphicsLayout::widgetEvent(QEvent*) (qgraphicslayout.cpp:310)
==9425==    by 0x50FAF12: QGraphicsWidget::event(QEvent*) (qgraphicswidget.cpp:1163)
==9425==    by 0x4B3AB9B: QApplicationPrivate::notify_helper(QObject*, QEvent*) (qapplication.cpp:3804)
==9425==  Address 0xffffffff is not stack'd, malloc'd or (recently) free'd
Comment 8 Sebastian Kratzert 2008-10-05 00:53:52 UTC
Forgot to mention... I used trunk from revision for the backtrace 867674.
My Qt ist libqt4-x11-4.4.2+20081003-1.1 from http://download.opensuse.org/repositories/KDE:/Qt44/openSUSE_11.0/
Comment 9 Sebastian Kratzert 2008-10-05 19:46:15 UTC
Never mind! The crash disappeared after updating my qt4 to:
4.4.2+20081004-1.1

So it seemed to be a problem in Qt.