Summary: | [testcase] crash when mouseHovering panel widgets that were previously on the desktop | ||
---|---|---|---|
Product: | [Plasma] plasma4 | Reporter: | Christophe Marin <christophe> |
Component: | general | Assignee: | Plasma Bugs List <plasma-bugs> |
Status: | RESOLVED FIXED | ||
Severity: | crash | ||
Priority: | NOR | ||
Version: | unspecified | ||
Target Milestone: | --- | ||
Platform: | Compiled Sources | ||
OS: | Linux | ||
Latest Commit: | Version Fixed In: | ||
Attachments: | file #1 |
Description
Christophe Marin
2008-06-24 19:09:35 UTC
Almost forgot the last detail :) After finally being able to restart plasma, the systray icons won't move from the top left corner. Created attachment 25571 [details]
file #1
Will be even better if I don't forget to attach files.
works perfectly here, duplicating your steps exactly as laid out here. Thank you. I'm currently recompiling qt-copy and the main kde modules to check again. Ok so, after recompiling, I'm still able to reproduce this. the .xsession-errors part before this crash : plasma(21064)/libplasma Plasma::AppletHandle::switchContainment: panel Plasma crashed, attempting to automatically recover QObject: Do not delete object, 'unnamed', during its event handler! KCrash: crashing... crashRecursionCounter = 2 KCrash: Application Name = <unknown> path = <unknown> pid = 21064 -- Still trying to find a reason :) "QObject: Do not delete object, 'unnamed', during its event handler!" that looks suspicious and un-good. can you get a backtrace for me, please? I'm trying to gather useful informations but it leads to nothing for the moment... Except my testcase is partially false : Due to the latency brought by Valgrind, I realized that it's not dragging the trash from the desktop containment to the panel that makes plasma crash but mouseHovering the widget after it was dragged. To be totally sure it wasn't a local problem, this time, I deleted both my qt and kde installation and build files and recompiled everything. I'm still able to reproduce the crash : (I cleaned up the gdb output) krop@mokona:~$ gdb --args plasma --nofork ==> Browsing the widgets plasma(20201)/libplasma KCategorizedItemsViewFilterDelegate::KCategorizedItemsViewFilterDelegate: KCategorizedItemsViewFilterDelegate(QObject *parent) plasma(20201)/libplasma Plasma::AppletBrowserWidget::setApplication: QHash(("Folder View", 1)("Task Manager", 1)("System Tray", 1)("Digital Clock", 1)("New Device Notifier", 1)("Pager", 1)("Application Launcher", 1)) plasma(20201)/kdeui (KIconLoader) KIconLoader::loadIcon: No such icon "world" plasma(20201) HddTemp::updateData: "Connection refused" ==> Adding the trash widget plasma(20201)/libplasma PlasmaAppletItemModel::mimeData: GETTING MIME DATA QGraphicsItem::installSceneEventFilter: event filters can only be installed on items in a scene. => Dragging plasma(20201)/libplasma Plasma::Applet::screenRect: screenRect = QPoint(1240,909) plasma(20201)/libplasma Plasma::AppletHandle::mouseMoveEvent: screenRect = QRect(1262,1170 86x78) plasma(20201)/libplasma Plasma::View::Private::updateSceneRect: !!!!!!!!!!!!!!!!! setting the scene rect to QRectF(0,0 1600x1200) associated screen is 0 plasma(20201)/libplasma Plasma::Applet::screenRect: screenRect = QPoint(1240,909) [cut] plasma(20201)/libplasma Plasma::AppletHandle::mouseMoveEvent: screenRect = QRect(1262,1185 86x78) plasma(20201)/libplasma Plasma::AppletHandle::switchContainment: panel Program received signal SIGSEGV, Segmentation fault. [Switching to Thread 0xb49e3740 (LWP 20201)] 0xb657b208 in QGraphicsScenePrivate::filterEvent (this=0x82b7308, item=0x8992008, event=0xbfacaca8) at graphicsview/qgraphicsscene.cpp:1026 1026 if (it.value()->sceneEventFilter(it.key(), event)) (gdb) bt #0 0xb657b208 in QGraphicsScenePrivate::filterEvent (this=0x82b7308, item=0x8992008, event=0xbfacaca8) at graphicsview/qgraphicsscene.cpp:1026 #1 0xb657b28d in QGraphicsScenePrivate::sendEvent (this=0x82b7308, item=0x8992008, event=0xbfacaca8) at graphicsview/qgraphicsscene.cpp:1044 #2 0xb657e4fe in QGraphicsScenePrivate::sendHoverEvent (this=0x82b7308, type=QEvent::GraphicsSceneHoverEnter, item=0x8992008, hoverEvent=0xbfacadf0) at graphicsview/qgraphicsscene.cpp:1093 + regular backtrace The only new element is : 1026 if (it.value()->sceneEventFilter(it.key(), event)) I'm going to retry with valgrind and paste the result somewhere. And the valgrind output is here : http://kde.pastey.net/90047 lines 544 and following are the result of several movements over and off the trash icon in the panel. Forgot to mention : it seems plasma can properly recover after a crash now. I suspect the unrecoverable state occurs when a plasma-appletsrc is found while plasmarc doesn't exist (I'll test that later) > a plasma-appletsrc is found while plasmarc doesn't exist
which actually doesn't happen anymore after some changes i made a week or so ago, explaining why it comes back properly now ;)
Bah, I update my KDE build at least once a day :-) Thanks for the info. SVN commit 824875 by aseigo: simplify this code, remove a bunch of duplication, re-order the calls in what should be the safest ordering and, most importantly for the bug report, remove the scene event filter from the handle immediately CCBUG:164849 M +12 -26 applethandle.cpp WebSVN link: http://websvn.kde.org/?view=rev&revision=824875 Thank you Aaron ! I can't reproduce the crash with this revision. Closing this bug now. /hug aseigo |