Bug 286822

Summary: Dolphin Absturz bei Menü-Anzeige Ctrl-M
Product: [Applications] dolphin Reporter: A. Adam <alrik>
Component: generalAssignee: Peter Penz <peter.penz19>
Status: RESOLVED FIXED    
Severity: crash CC: cfeck, faraoman, sgies1963
Priority: NOR    
Version: 1.7   
Target Milestone: ---   
Platform: openSUSE   
OS: Linux   
Latest Commit: Version Fixed In: 4.7.4
Sentry Crash Report:

Description A. Adam 2011-11-17 07:42:59 UTC
Application: dolphin (1.7)
KDE Platform Version: 4.7.2 (4.7.2) "release 5"
Qt Version: 4.7.4
Operating System: Linux 3.1.0-1.2-desktop x86_64
Distribution: "openSUSE 12.1 (x86_64)"

-- Information about the crash:
- What I was doing when the application crashed:

Dolphin gestartet und im Menü "Menüleiste anzeigen" (Ctrl-m) ausgewählt. 
Danach absturz.

System openSUSE 12.1 frisch installiert!

-- Backtrace:
Application: Dolphin (kdeinit4), signal: Segmentation fault
[Current thread is 1 (Thread 0x7f0dc77e3760 (LWP 12066))]

Thread 2 (Thread 0x7f0daf6ea700 (LWP 12068)):
#0  0x00007f0dc4e46423 in poll () from /lib64/libc.so.6
#1  0x00007f0dc1c3ba98 in ?? () from /usr/lib64/libglib-2.0.so.0
#2  0x00007f0dc1c3bf59 in g_main_context_iteration () from /usr/lib64/libglib-2.0.so.0
#3  0x00007f0dc6458576 in QEventDispatcherGlib::processEvents (this=0x8b5da0, flags=<optimized out>) at kernel/qeventdispatcher_glib.cpp:424
#4  0x00007f0dc642ca22 in QEventLoop::processEvents (this=<optimized out>, flags=...) at kernel/qeventloop.cpp:149
#5  0x00007f0dc642cc1f in QEventLoop::exec (this=0x7f0daf6e9df0, flags=...) at kernel/qeventloop.cpp:201
#6  0x00007f0dc63445df in QThread::exec (this=<optimized out>) at thread/qthread.cpp:498
#7  0x00007f0dc640faef in QInotifyFileSystemWatcherEngine::run (this=0x88b840) at io/qfilesystemwatcher_inotify.cpp:248
#8  0x00007f0dc6347025 in QThreadPrivate::start (arg=0x88b840) at thread/qthread_unix.cpp:331
#9  0x00007f0dc60b6f05 in start_thread () from /lib64/libpthread.so.0
#10 0x00007f0dc4e4f53d in clone () from /lib64/libc.so.6

Thread 1 (Thread 0x7f0dc77e3760 (LWP 12066)):
[KCrash Handler]
#6  QMetaObject::changeGuard (ptr=0xa43f48, o=0x0) at kernel/qobject.cpp:471
#7  0x00007f0dc5a155c6 in operator= (p=0x0, this=0xa43f48) at ../../src/corelib/kernel/qpointer.h:68
#8  QMenuPrivate::activateAction (this=0xa43c80, action=0x906910, action_e=QAction::Trigger, self=true) at widgets/qmenu.cpp:1110
#9  0x00007f0dc7281d40 in KMenu::mouseReleaseEvent (this=0xa42190, e=0x7fff083cc770) at /usr/src/debug/kdelibs-4.7.2/kdeui/widgets/kmenu.cpp:464
#10 0x00007f0dc56302b6 in QWidget::event (this=0xa42190, event=0x7fff083cc770) at kernel/qwidget.cpp:8295
#11 0x00007f0dc5a16b0b in QMenu::event (this=0xa42190, e=0x7fff083cc770) at widgets/qmenu.cpp:2405
#12 0x00007f0dc55dfbe4 in notify_helper (e=0x7fff083cc770, receiver=0xa42190, this=0x6d1be0) at kernel/qapplication.cpp:4481
#13 QApplicationPrivate::notify_helper (this=0x6d1be0, receiver=0xa42190, e=0x7fff083cc770) at kernel/qapplication.cpp:4453
#14 0x00007f0dc55e536b in QApplication::notify (this=<optimized out>, receiver=0xa42190, e=0x7fff083cc770) at kernel/qapplication.cpp:4042
#15 0x00007f0dc71bfe36 in KApplication::notify (this=0x7fff083ced30, receiver=0xa42190, event=0x7fff083cc770) at /usr/src/debug/kdelibs-4.7.2/kdeui/kernel/kapplication.cpp:311
#16 0x00007f0dc642d81c in QCoreApplication::notifyInternal (this=0x7fff083ced30, receiver=0xa42190, event=0x7fff083cc770) at kernel/qcoreapplication.cpp:787
#17 0x00007f0dc55e0bb2 in sendEvent (event=<optimized out>, receiver=<optimized out>) at ../../src/corelib/kernel/qcoreapplication.h:215
#18 QApplicationPrivate::sendMouseEvent (receiver=0xa42190, event=0x7fff083cc770, alienWidget=0x0, nativeWidget=0xa42190, buttonDown=0x0, lastMouseReceiver=..., spontaneous=true) at kernel/qapplication.cpp:3141
#19 0x00007f0dc565d201 in QETWidget::translateMouseEvent (this=0xa42190, event=<optimized out>) at kernel/qapplication_x11.cpp:4406
#20 0x00007f0dc565ba2a in QApplication::x11ProcessEvent (this=0x7fff083ced30, event=0x7fff083cd030) at kernel/qapplication_x11.cpp:3598
#21 0x00007f0dc56832a2 in x11EventSourceDispatch (s=0x6d59c0, callback=0, user_data=0x0) at kernel/qguieventdispatcher_glib.cpp:146
#22 0x00007f0dc1c3b58d in g_main_context_dispatch () from /usr/lib64/libglib-2.0.so.0
#23 0x00007f0dc1c3bd88 in ?? () from /usr/lib64/libglib-2.0.so.0
#24 0x00007f0dc1c3bf59 in g_main_context_iteration () from /usr/lib64/libglib-2.0.so.0
#25 0x00007f0dc645850f in QEventDispatcherGlib::processEvents (this=0x617440, flags=<optimized out>) at kernel/qeventdispatcher_glib.cpp:422
#26 0x00007f0dc5682f2e in QGuiEventDispatcherGlib::processEvents (this=<optimized out>, flags=<optimized out>) at kernel/qguieventdispatcher_glib.cpp:204
#27 0x00007f0dc642ca22 in QEventLoop::processEvents (this=<optimized out>, flags=...) at kernel/qeventloop.cpp:149
#28 0x00007f0dc642cc1f in QEventLoop::exec (this=0x7fff083cd400, flags=...) at kernel/qeventloop.cpp:201
#29 0x00007f0dc5a12a81 in QMenu::exec (this=<optimized out>, p=..., action=0x0) at widgets/qmenu.cpp:2049
#30 0x00007f0dc5a51e94 in QToolButtonPrivate::popupTimerDone (this=0xa43680) at widgets/qtoolbutton.cpp:955
#31 0x00007f0dc5a52641 in QToolButton::qt_metacall (this=0x979e60, _c=QMetaObject::InvokeMetaMethod, _id=4, _a=0x7fff083cd680) at .moc/release-shared/moc_qtoolbutton.cpp:114
#32 0x00007f0dc644059a in QMetaObject::activate (sender=0x979e60, m=<optimized out>, local_signal_index=<optimized out>, argv=0x0) at kernel/qobject.cpp:3287
#33 0x00007f0dc59925a1 in QAbstractButtonPrivate::emitPressed (this=0xa43680) at widgets/qabstractbutton.cpp:560
#34 0x00007f0dc5992fdc in QAbstractButton::mousePressEvent (this=0x979e60, e=0x7fff083ce030) at widgets/qabstractbutton.cpp:1096
#35 0x00007f0dc5a52791 in QToolButton::mousePressEvent (this=0x979e60, e=0x7fff083ce030) at widgets/qtoolbutton.cpp:712
#36 0x00007f0dc5630599 in QWidget::event (this=0x979e60, event=0x7fff083ce030) at kernel/qwidget.cpp:8291
#37 0x00007f0dc55dfbe4 in notify_helper (e=0x7fff083ce030, receiver=0x979e60, this=0x6d1be0) at kernel/qapplication.cpp:4481
#38 QApplicationPrivate::notify_helper (this=0x6d1be0, receiver=0x979e60, e=0x7fff083ce030) at kernel/qapplication.cpp:4453
#39 0x00007f0dc55e536b in QApplication::notify (this=<optimized out>, receiver=0x979e60, e=0x7fff083ce030) at kernel/qapplication.cpp:4042
#40 0x00007f0dc71bfe36 in KApplication::notify (this=0x7fff083ced30, receiver=0x979e60, event=0x7fff083ce030) at /usr/src/debug/kdelibs-4.7.2/kdeui/kernel/kapplication.cpp:311
#41 0x00007f0dc642d81c in QCoreApplication::notifyInternal (this=0x7fff083ced30, receiver=0x979e60, event=0x7fff083ce030) at kernel/qcoreapplication.cpp:787
#42 0x00007f0dc55e0bb2 in sendEvent (event=<optimized out>, receiver=<optimized out>) at ../../src/corelib/kernel/qcoreapplication.h:215
#43 QApplicationPrivate::sendMouseEvent (receiver=0x979e60, event=0x7fff083ce030, alienWidget=0x0, nativeWidget=0x979e60, buttonDown=0x0, lastMouseReceiver=..., spontaneous=true) at kernel/qapplication.cpp:3141
#44 0x00007f0dc565cb55 in QETWidget::translateMouseEvent (this=0x979e60, event=<optimized out>) at kernel/qapplication_x11.cpp:4472
#45 0x00007f0dc565ba2a in QApplication::x11ProcessEvent (this=0x7fff083ced30, event=0x7fff083ce8f0) at kernel/qapplication_x11.cpp:3598
#46 0x00007f0dc56832a2 in x11EventSourceDispatch (s=0x6d59c0, callback=0, user_data=0x0) at kernel/qguieventdispatcher_glib.cpp:146
#47 0x00007f0dc1c3b58d in g_main_context_dispatch () from /usr/lib64/libglib-2.0.so.0
#48 0x00007f0dc1c3bd88 in ?? () from /usr/lib64/libglib-2.0.so.0
#49 0x00007f0dc1c3bf59 in g_main_context_iteration () from /usr/lib64/libglib-2.0.so.0
#50 0x00007f0dc645850f in QEventDispatcherGlib::processEvents (this=0x617440, flags=<optimized out>) at kernel/qeventdispatcher_glib.cpp:422
#51 0x00007f0dc5682f2e in QGuiEventDispatcherGlib::processEvents (this=<optimized out>, flags=<optimized out>) at kernel/qguieventdispatcher_glib.cpp:204
#52 0x00007f0dc642ca22 in QEventLoop::processEvents (this=<optimized out>, flags=...) at kernel/qeventloop.cpp:149
#53 0x00007f0dc642cc1f in QEventLoop::exec (this=0x7fff083cecc0, flags=...) at kernel/qeventloop.cpp:201
#54 0x00007f0dc6430de7 in QCoreApplication::exec () at kernel/qcoreapplication.cpp:1064
#55 0x00007f0db4f8f7b9 in kdemain (argc=5, argv=0x6c0380) at /usr/src/debug/kde-baseapps-4.7.2/dolphin/src/main.cpp:85
#56 0x0000000000408897 in _start ()

Possible duplicates by query: bug 278366.

Reported using DrKonqi
Comment 1 Christoph Feck 2011-11-17 23:12:46 UTC
Peter, you probably should use Qt::QueuedConnection for signals from the actions that modify the menus/toolbars.
Comment 2 Peter Penz 2011-11-18 09:02:06 UTC
Thanks Christoph for the hint, will check this during this weekend. My problem is that I cannot reproduce the issue in my environment, so I can not be sure whether it fixes the problem :-(
Comment 3 Christoph Feck 2011-11-19 01:19:43 UTC
*** Bug 286946 has been marked as a duplicate of this bug. ***
Comment 4 Christoph Feck 2011-11-19 01:20:49 UTC
Bug 278366 has steps to reproduce, but was marked as an upstream bug. I doubt that it is allowed to modify/delete the menu while handling it's events. A queued connection should fix it.
Comment 5 Peter Penz 2011-11-19 05:51:16 UTC
Git commit 4425d906427bf5138d6f26f9ca7d3deabd0659ee by Peter Penz.
Committed on 19/11/2011 at 06:49.
Pushed by ppenz into branch 'KDE/4.7'.

Fix crash when toggling the menu-bar visibility

Use a queued connection to prevent that the menu
gets hidden during it is still open. Thanks to
Christoph Feck for the hint!

Frank and I could not reproduce the issue in our
environments even when following the steps from
bug 278366, however Christoph's hint sounds sane
and let's hope it works (leaves a bad gut feeling
to "fix" bugs without being able to verify them).

BUG: 286822
CCBUG: 278366
FIXED-IN: 4.7.4

M  +3    -1    dolphin/src/dolphinmainwindow.cpp

http://commits.kde.org/kde-baseapps/4425d906427bf5138d6f26f9ca7d3deabd0659ee
Comment 6 Peter Penz 2011-11-19 05:52:04 UTC
Git commit 4f94ca5d90bd346e72878fc44c89f89f06419ed1 by Peter Penz.
Committed on 19/11/2011 at 06:49.
Pushed by ppenz into branch 'master'.

Fix crash when toggling the menu-bar visibility

Use a queued connection to prevent that the menu
gets hidden during it is still open. Thanks to
Christoph Feck for the hint!

Frank and I could not reproduce the issue in our
environments even when following the steps from
bug 278366, however Christoph's hint sounds sane
and let's hope it works (leaves a bad gut feeling
to "fix" bugs without being able to verify them).

CCBUG: 286822
CCBUG: 278366
FIXED-IN: 4.7.4

M  +3    -1    dolphin/src/dolphinmainwindow.cpp

http://commits.kde.org/kde-baseapps/4f94ca5d90bd346e72878fc44c89f89f06419ed1
Comment 7 Christoph Feck 2011-11-19 08:54:13 UTC
Thanks, no crash :)
Comment 8 Peter Penz 2011-11-19 11:27:26 UTC
Ah, great! Thanks for verifying!
Comment 9 Christoph Feck 2011-11-19 14:19:28 UTC
*** Bug 286997 has been marked as a duplicate of this bug. ***