Version: (using Devel) Installed from: Compiled sources Compiler: gcc version 4.1.2 20070214 OS: Linux Steps to reproduce: 1) Open add widgets dialog 2) Add a widget (I used the analog clock) 3) Move mouse over minus sign 4) Click three times fast on left mouse button to add a widget (first two clicks) and remove it before it gets completely drawn (third mouse click) 5) See plasma (kdelibs r772899, kdebase r772956, no compositing) crash with the following backtrace: Application: Plasma Workspace (plasma), signal SIGSEGV [?1034hUsing host libthread_db library "/lib/libthread_db.so.1". [Thread debugging using libthread_db enabled] [New Thread 0xb625f6e0 (LWP 10601)] [New Thread 0xb4afdb90 (LWP 10602)] [KCrash handler] #5 0xb6fe206a in QGraphicsItem::transform (this=0x82f5090) at graphicsview/qgraphicsitem.cpp:1684 #6 0xb6fe8f2f in QGraphicsItem::setTransform (this=0x82f5090, matrix=@0xbfc383e0, combine=false) at graphicsview/qgraphicsitem.cpp:1860 #7 0xb6fe9697 in QGraphicsItem::resetTransform (this=0x82f5090) at graphicsview/qgraphicsitem.cpp:1907 #8 0xb4b0444b in DefaultAnimator::appear (this=0x81332a0, progress=0.83333333333333337, item=0x82f5090) at /var/tmp/portage/kde-base/kdebase-9999.4/work/kdebase-9999.4/workspace/plasma/animators/default/defaultAnimator.cpp:73 #9 0xb7e85775 in Plasma::Phase::Private::performAnimation (this=0x81269d8, amount=0.83333333333333337, state=0x830eac0) at /var/tmp/portage/kde-base/kdebase-9999.4/work/kdebase-9999.4/workspace/libs/plasma/phase.cpp:127 #10 0xb7e80e05 in Plasma::Phase::timerEvent (this=0x8132988, event=0xbfc38c08) at /var/tmp/portage/kde-base/kdebase-9999.4/work/kdebase-9999.4/workspace/libs/plasma/phase.cpp:463 #11 0xb73d9269 in QObject::event (this=0x8132988, e=0xb4b06ce8) at kernel/qobject.cpp:1086 #12 0xb6a68e8a in QApplicationPrivate::notify_helper (this=0x8078708, receiver=0x8132988, e=0xbfc38c08) at kernel/qapplication.cpp:3556 #13 0xb6a6a77a in QApplication::notify (this=0x8057118, receiver=0x8132988, e=0xbfc38c08) at kernel/qapplication.cpp:3115 #14 0xb7984763 in KApplication::notify (this=0x8057118, receiver=0x8132988, event=0xbfc38c08) at /var/tmp/portage/kde-base/kdelibs-9999.4/work/kdelibs-9999.4/kdeui/kernel/kapplication.cpp:311 #15 0xb73c7d7b in QCoreApplication::notifyInternal (this=0x8057118, receiver=0x8132988, event=0xbfc38c08) at kernel/qcoreapplication.cpp:530 #16 0xb73f0efb in QTimerInfoList::activateTimers (this=0x8078e44) at kernel/qcoreapplication.h:200 #17 0xb73f0fd1 in QEventDispatcherUNIX::activateTimers (this=0x8078108) at kernel/qeventdispatcher_unix.cpp:828 #18 0xb73f19ab in QEventDispatcherUNIX::processEvents (this=0x8078108, flags=@0xbfc38d88) at kernel/qeventdispatcher_unix.cpp:890 #19 0xb6af2cce in QEventDispatcherX11::processEvents (this=0x8078108, flags=@0xbfc38db4) at kernel/qeventdispatcher_x11.cpp:145 #20 0xb73c7191 in QEventLoop::processEvents (this=0xbfc38e20, flags=@0xbfc38de8) at kernel/qeventloop.cpp:140 #21 0xb73c729a in QEventLoop::exec (this=0xbfc38e20, flags=@0xbfc38e28) at kernel/qeventloop.cpp:186 #22 0xb73c9626 in QCoreApplication::exec () at kernel/qcoreapplication.cpp:759 #23 0xb6a68487 in QApplication::exec () at kernel/qapplication.cpp:3053 #24 0xb7f45d54 in kdemain (argc=1, argv=0xbfc39024) at /var/tmp/portage/kde-base/kdebase-9999.4/work/kdebase-9999.4/workspace/plasma/plasma/main.cpp:54 #25 0x080487e2 in main (argc=-1263517712, argv=0xb4b040b0) at /var/tmp/portage/kde-base/kdebase-9999.4/work/kdebase_build/workspace/plasma/plasma/plasma-qgv_dummy.cpp:3 #26 0xb64f1fdc in __libc_start_main (main=0x80487c0 <main>, argc=1, ubp_av=0xbfc39024, init=0x8048810 <__libc_csu_init>, fini=0x8048800 <__libc_csu_fini>, rtld_fini=0xb7f60100 <_dl_fini>, stack_end=0xbfc3901c) at libc-start.c:229 #27 0x08048731 in _start () #0 0xffffe410 in __kernel_vsyscall ()
Created attachment 23529 [details] Video showing how to crash plasma on bug #157647
*** Bug 157476 has been marked as a duplicate of this bug. ***
*** Bug 157437 has been marked as a duplicate of this bug. ***
Just for the record; imho this crash is solved with 4.0.2 as described at http://bugs.kde.org/show_bug.cgi?id=157437#c13 but probably better to keep it open till we are 100% sure there. Now if we take all the "marked duplicate" roundtrip of this case into account, there stays one thing that may not fixed yet what is; bug #157158 - see here also http://bugs.kde.org/show_bug.cgi?id=157437#c7 which contains a "wild guess" ;)
changed summary to have also the "applet" keyword in, what should probably make it easier to discover this report on searching. re my comment #4 above; what I don't get is, how the phase-animation / QTimer is related there. Well, probably still another bug :-/
and one more spam-comment related to my comment #4 and comment #5 above; thinking again about it, it would be even logical, that the bool Containment::sceneEventFilter(QGraphicsItem *watched, QEvent *event) { ... Applet *applet = qgraphicsitem_cast<Applet*>(watched); Q_ASSERT(applet!=0); ... } asserts and later leads to a crash since maybe (another wild guess) that event got called at a time where the applet is already destroyed but the animation isn't finished or something like this?!
SVN commit 774360 by aseigo: watch for object destruction. right now we only do this if the QGrahpicsItem itself is a QObject. however, the structs now hold onto a QObject* so this opens the door to attaching an animation to the lifespan of an arbitrary QObject. could be quite useful in future. BUG:157647 M +36 -19 phase.cpp M +1 -1 phase.h WebSVN link: http://websvn.kde.org/?view=rev&revision=774360
Yay, 4.1/4.0.2 will rock, thank you very much :)