Bug 186599 - plasma crashes when drag&drop menu button
Summary: plasma crashes when drag&drop menu button
Status: RESOLVED FIXED
Alias: None
Product: plasma4
Classification: Plasma
Component: widget-kickoff (show other bugs)
Version: unspecified
Platform: Mandriva RPMs Unspecified
: NOR crash
Target Milestone: ---
Assignee: Plasma Bugs List
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2009-03-09 00:48 UTC by Nicolas L.
Modified: 2009-06-23 01:24 UTC (History)
5 users (show)

See Also:
Latest Commit:
Version Fixed In:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Nicolas L. 2009-03-09 00:48:02 UTC
Version:            (using KDE 4.2.1)
Installed from:    Mandriva RPMs

Plasma crash if i drag 'n drop the menu icon out of the tasbar

Thread 1 (Thread 0xb3b02910 (LWP 29054)):
[KCrash Handler]
#6  0xffffe424 in __kernel_vsyscall ()
#7  0xb7dc8c00 in raise () from /lib/i686/libc.so.6
#8  0xb7dca668 in abort () from /lib/i686/libc.so.6
#9  0xa6c08083 in ?? () from /usr/lib/libbtcore.so.9
#10 0xb668df6b in qt_message_output (msgType=QtFatalMsg, 
    buf=0x96ba978 "ASSERT: \"! d->switcher\" in file /home/neoclust/rpm/BUILD/kdebase-workspace-4.2.1/plasma/applets/kickoff/simpleapplet/simpleapplet.cpp, line 332") at global/qglobal.cpp:1971
#11 0xb668e0cc in qFatal (msg=0x6 <Address 0x6 out of bounds>) at global/qglobal.cpp:2201
#12 0xb668e1c5 in qt_assert (assertion=0xa84cf51a "! d->switcher", file=0xa84d0604 "/home/neoclust/rpm/BUILD/kdebase-workspace-4.2.1/plasma/applets/kickoff/simpleapplet/simpleapplet.cpp", line=332)
    at global/qglobal.cpp:1777
#13 0xa84c8966 in ?? () from /usr/lib/kde4/plasma_applet_simplelauncher.so
#14 0xb7c3696a in Plasma::Containment::addApplet (this=0x8e30a08, applet=0x8fa8d68, pos=@0xbffa0868, delayInit=false) at /usr/src/debug/kdelibs-4.2.1/plasma/containment.cpp:757
#15 0xb7f2d289 in ?? () from /usr/lib/libkdeinit4_plasma.so
#16 0xb6a8b4c1 in QWidget::event (this=0x9945880, event=0xbffa0dc8) at kernel/qwidget.cpp:7501
#17 0xb6a3227c in QApplicationPrivate::notify_helper (this=0x8d44bd0, receiver=0x9945880, e=0xbffa0dc8) at kernel/qapplication.cpp:4084
#18 0xb6a3b502 in QApplication::notify (this=0x8d4afd0, receiver=0x9945880, e=0xbffa0dc8) at kernel/qapplication.cpp:3786
#19 0xb76fb620 in KApplication::notify (this=0x8d4afd0, receiver=0x9945880, event=0xbffa0dc8) at /usr/src/debug/kdelibs-4.2.1/kdeui/kernel/kapplication.cpp:307
#20 0xb679267e in QCoreApplication::notifyInternal (this=0x8d4afd0, receiver=0x9945880, event=0xbffa0dc8) at kernel/qcoreapplication.cpp:602
#21 0xb6a3a331 in QApplicationPrivate::sendMouseEvent (receiver=0x9945880, event=0xbffa0dc8, alienWidget=0x0, nativeWidget=0x94317d8, buttonDown=0xb72fd100, lastMouseReceiver=@0xb72fd104)
    at ../../src/corelib/kernel/qcoreapplication.h:216
#22 0xb6aadb7d in QETWidget::translateMouseEvent (this=0x94317d8, event=0xbffa13dc) at kernel/qapplication_x11.cpp:4425
#23 0xb6aad06c in QApplication::x11ProcessEvent (this=0x8d4afd0, event=0xbffa13dc) at kernel/qapplication_x11.cpp:3421
#24 0xb6ad7004 in x11EventSourceDispatch (s=0x8d46508, callback=0, user_data=0x0) at kernel/qguieventdispatcher_glib.cpp:146
#25 0xb4de2c8a in g_main_context_dispatch () from /usr/lib/libglib-2.0.so.0
#26 0xb4de62f4 in ?? () from /usr/lib/libglib-2.0.so.0
#27 0xb4de647f in g_main_context_iteration () from /usr/lib/libglib-2.0.so.0
#28 0xb67bf51a in QEventDispatcherGlib::processEvents (this=0x8d49d28, flags={i = -1074129528}) at kernel/qeventdispatcher_glib.cpp:323
#29 0xb6ad675a in QGuiEventDispatcherGlib::processEvents (this=0x8d49d28, flags={i = -1074129480}) at kernel/qguieventdispatcher_glib.cpp:202
#30 0xb6790c43 in QEventLoop::processEvents (this=0xbffa1630, flags={i = -1074129416}) at kernel/qeventloop.cpp:149
#31 0xb6791091 in QEventLoop::exec (this=0xbffa1630, flags={i = -1074129352}) at kernel/qeventloop.cpp:200
#32 0xb67935f6 in QCoreApplication::exec () at kernel/qcoreapplication.cpp:880
#33 0xb6a320e4 in QApplication::exec () at kernel/qapplication.cpp:3553
#34 0xb7f1de21 in kdemain () from /usr/lib/libkdeinit4_plasma.so
#35 0x0804856f in _start ()
Comment 1 Sebastian Sauer 2009-03-10 23:36:28 UTC
hmmmm... the backtrace says;

#12 0xb668e1c5 in qt_assert (assertion=0xa84cf51a "! d->switcher",
file=0xa84d0604
"/home/neoclust/rpm/BUILD/kdebase-workspace-4.2.1/plasma/applets/kickoff/simpleapplet/simpleapplet.cpp",
line=332)

but
1. there is no Q_ASSERT at line 332 in http://websvn.kde.org/*checkout*/tags/KDE/4.2.1/kdebase/workspace/plasma/applets/kickoff/simpleapplet/simpleapplet.cpp (neither at 4.2.0 or trunk).
2. there is a Q_ASSERT(! d->switcher) at line 253 but if this one asserts, then the Applet::init() method got called more then one time...
Comment 2 Nicolas L. 2009-03-10 23:43:50 UTC
happy to read you :)

in fact our assert is a little after the "normal one" because we have a little patch to add our icon.    

This is the Q_ASSERT from :

    Q_ASSERT(! d->switcher);
    d->switcher = new QAction(i18n("Switch to Kickoff Menu Style"), this);
    d->actions.append(d->switcher);
    connect(d->switcher, SIGNAL(triggered(bool)), this, SLOT(switchMenuStyle()));


 this issue appear with the kickoff applet too
Comment 3 Sebastian Sauer 2009-03-11 00:02:19 UTC
uh... are there other patches in e.g. plasma? I ask cause if Applet::init() can be called more then once, then it's a serious issue affecting probably a lot of applets (leading to crashes, duplicated kaction-items and lot of other wired things) cause I remember a lot of code within uinit()-methods being not ready for that.
Comment 5 Patrice Vigier 2009-05-04 23:48:36 UTC
This is what I got
Application: Plasma Workspace (plasma), signal SIGSEGV
[Current thread is 0 (LWP 22093)]

Thread 4 (Thread 0xe828bb90 (LWP 22094)):
#0  0xf7fc3425 in __kernel_vsyscall ()
#1  0xf5028fb5 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib/i686/cmov/libpthread.so.0
#2  0xf7ecef2d in pthread_cond_wait () from /lib/i686/cmov/libc.so.6
#3  0xf6805822 in QWaitCondition::wait () from /usr/lib/libQtCore.so.4
#4  0xf52d3fd2 in ?? () from /usr/lib/libQtNetwork.so.4
#5  0xf680480e in ?? () from /usr/lib/libQtCore.so.4
#6  0xf50254e5 in start_thread () from /lib/i686/cmov/libpthread.so.0
#7  0xf7ec010e in clone () from /lib/i686/cmov/libc.so.6

Thread 3 (Thread 0xe73cab90 (LWP 22096)):
#0  0xf7fc3425 in __kernel_vsyscall ()
#1  0xf5028fb5 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib/i686/cmov/libpthread.so.0
#2  0xf7ecef2d in pthread_cond_wait () from /lib/i686/cmov/libc.so.6
#3  0xf6805822 in QWaitCondition::wait () from /usr/lib/libQtCore.so.4
#4  0xe870fc2a in ?? () from /usr/lib/kde4/plasma_wallpaper_image.so
#5  0x0881f278 in ?? ()
#6  0x0881f274 in ?? ()
#7  0xffffffff in ?? ()
#8  0xe73ca220 in ?? ()
#9  0xe73ca2e0 in ?? ()
#10 0xe8715540 in ?? () from /usr/lib/kde4/plasma_wallpaper_image.so
#11 0xf79ef968 in vtable for KSvgRenderer () from /usr/lib/libkdeui.so.5
#12 0xe8715636 in ?? () from /usr/lib/kde4/plasma_wallpaper_image.so
#13 0xf7e509af in posix_memalign () from /lib/i686/cmov/libc.so.6
#14 0xf680480e in ?? () from /usr/lib/libQtCore.so.4
#15 0xf50254e5 in start_thread () from /lib/i686/cmov/libpthread.so.0
#16 0xf7ec010e in clone () from /lib/i686/cmov/libc.so.6

Thread 2 (Thread 0xe5b07b90 (LWP 22598)):
#0  0xf7fc3425 in __kernel_vsyscall ()
#1  0xf7eb85b1 in select () from /lib/i686/cmov/libc.so.6
#2  0xf68d5920 in ?? () from /usr/lib/libQtCore.so.4
#3  0xf680480e in ?? () from /usr/lib/libQtCore.so.4
#4  0xf50254e5 in start_thread () from /lib/i686/cmov/libpthread.so.0
#5  0xf7ec010e in clone () from /lib/i686/cmov/libc.so.6

Thread 1 (Thread 0xf3c5e710 (LWP 22093)):
#0  0xf7fc3425 in __kernel_vsyscall ()
#1  0xf7e7c386 in nanosleep () from /lib/i686/cmov/libc.so.6
#2  0xf7e7c19e in sleep () from /lib/i686/cmov/libc.so.6
#3  0xf78bc738 in ?? () from /usr/lib/libkdeui.so.5
#4  0x00000000 in ?? ()
Comment 6 Dario Andres 2009-05-25 00:03:27 UTC
Is this still valid on current and 4.3 versions ?
Comment 7 Aaron J. Seigo 2009-06-23 01:24:18 UTC
yes, this was already reasolved in

 void Containment::addApplet(Applet *applet, const QPointF &pos, bool delayInit)

here's the commit:

http://websvn.kde.org/trunk/KDE/kdelibs/plasma/containment.cpp?view=diff&r1=908500&r2=908501

and patch file:

http://websvn.kde.org/trunk/KDE/kdelibs/plasma/containment.cpp?r1=908500&r2=908501&view=patch

it was not backported to 4.2.