Summary: | Dialog crash in Dekstop sidebar | ||
---|---|---|---|
Product: | [Frameworks and Libraries] libplasma | Reporter: | Kai Uwe Broulik <kde> |
Component: | libplasmaquick | Assignee: | Marco Martin <notmart> |
Status: | RESOLVED FIXED | ||
Severity: | crash | CC: | franz.trischberger, kde |
Priority: | NOR | ||
Version: | unspecified | ||
Target Milestone: | --- | ||
Platform: | Other | ||
OS: | Linux | ||
Latest Commit: | http://commits.kde.org/plasma-framework/af0dffd89bde034e903360f4dc3d2c024e6cbcd9 | Version Fixed In: | |
Sentry Crash Report: |
Description
Kai Uwe Broulik
2015-01-03 15:01:16 UTC
I was able to reproduce it consistently: - Open activity manager - Choose a different activity - Move your mouse a bit Boom! If you don't move your mouse it doesn't crash because the "redirect mouse events inside the dialog" codepath isn't hit This problem can be reproduced with the following testcase. Just run it in qmlscene, press the button, click the pink area while repeatedly moving your cursor around inside the area and on its edges while it's disappearing. Boom! import QtQuick 2.0 import org.kde.plasma.core 2.0 as PlasmaCore import org.kde.plasma.components 2.0 as PlasmaComponents PlasmaComponents.Button { id: root signal close onClose: dialog.visible = false text: "Press Me" onClicked: { dialog.visible = true loader.active = true } PlasmaCore.Dialog { id: dialog location: PlasmaCore.Types.LeftEdge type: PlasmaCore.Dialog.Dock flags: Qt.Dock x: 0 Component.onCompleted: flags = flags | Qt.WindowStaysOnTopHint mainItem: Loader { id: loader width: item ? item.width : 0 sourceComponent: Rectangle { width: 300 height: 500 color: "#f0f" MouseArea { anchors.fill: parent onClicked: { processDummy.model = 1000 // pretend that work is being done root.close() // do the close of the dialog via a signal loader.active = false // unload the component processDummy.model = 0 } } } active: false } } Repeater { id: processDummy Text { text: index } } } the test case is reproducible, that's the bt i get #0 0xffffffff in ucstrncmp(QChar const*, uchar const*, int) (a=0x8081c28, c=0xb179907c "xcb", l=3) at tools/qstring.cpp:606 #1 0xffffffff in ucstrcmp(QChar const*, int, uchar const*, int) (a=0x8081c28, alen=3, b=0xb179907c "xcb", blen=3) at tools/qstring.cpp:647 #2 0xffffffff in QString::compare_helper(QChar const*, int, QLatin1String, Qt::CaseSensitivity) (data1=0x8081c28, length1=3, s2=..., cs=Qt::CaseSensitive) at tools/qstring.cpp:5274 #3 0xffffffff in QString::operator==(QLatin1String) const (this=0xbf80023c, other=...) at tools/qstring.cpp:2538 #4 0xffffffff in QX11Info::isPlatformX11() () at qx11info_x11.cpp:83 #5 0xffffffff in Breeze::Helper::isX11() () at /opt/kde5/lib/plugins/styles/breeze.so #6 0xffffffff in Breeze::WindowManager::supportWMMoveResize() const () ---Type <return> to continue, or q <return> to quit--- at /opt/kde5/lib/plugins/styles/breeze.so #7 0xffffffff in Breeze::WindowManager::useWMMoveResize() const () at /opt/kde5/lib/plugins/styles/breeze.so #8 0xffffffff in Breeze::AppEventFilter::eventFilter(QObject*, QEvent*) () at /opt/kde5/lib/plugins/styles/breeze.so #9 0xffffffff in QCoreApplicationPrivate::sendThroughApplicationEventFilters(QObject*, QEvent*) (this=0x807e8b8, receiver=0x8412548, event=0xbf8008b0) at kernel/qcoreapplication.cpp:1007 #10 0xffffffff in QApplicationPrivate::notify_helper(QObject*, QEvent*) (this= 0x807e8b8, receiver=0x8412548, e=0xbf8008b0) at kernel/qapplication.cpp:3697 #11 0xffffffff in QApplication::notify(QObject*, QEvent*) (this= ---Type <return> to continue, or q <return> to quit--- 0xbfffecdc, receiver=0x8412548, e=0xbf8008b0) at kernel/qapplication.cpp:3164 #12 0xffffffff in QCoreApplication::notifyInternal(QObject*, QEvent*) (this=0xbfffecdc, receiver=0x8412548, event=0xbf8008b0) at kernel/qcoreapplication.cpp:930 #13 0xffffffff in QCoreApplication::sendEvent(QObject*, QEvent*) (receiver=0x8412548, event=0xbf8008b0) at /home/diau/git/qt5/qtbase/include/QtCore/../../src/corelib/kernel/qcoreapplication.h:228 #14 0xffffffff in PlasmaQuick::Dialog::event(QEvent*) (this=0x8412548, event=0xbf801140) at /home/diau/git/kf5/frameworks/plasma-framework/src/plasmaquick/dialog.cpp:1054 #15 0xffffffff in QApplicationPrivate::notify_helper(QObject*, QEvent*) (this=0x807e8b8, receiver=0x8412548, e=0xbf801140) at kernel/qapplication.cpp:3722 ---Type <return> to continue, or q <return> to quit--- this with fusion theme, maybe there are 2 different bugs here? #0 0xffffffff in PlasmaQuick::Dialog::event(QEvent*) (this=0x8420078, event=0xbf8008b0) at /home/diau/git/kf5/frameworks/plasma-framework/src/plasmaquick/dialog.cpp:1028 #1 0xffffffff in QApplicationPrivate::notify_helper(QObject*, QEvent*) (this= 0x807e8b8, receiver=0x8420078, e=0xbf8008b0) at kernel/qapplication.cpp:3722 #2 0xffffffff in QApplication::notify(QObject*, QEvent*) (this= 0xbfffecdc, receiver=0x8420078, e=0xbf8008b0) at kernel/qapplication.cpp:3164 #3 0xffffffff in QCoreApplication::notifyInternal(QObject*, QEvent*) (this=0xbfffecdc, receiver=0x8420078, event=0xbf8008b0) at kernel/qcoreapplication.cpp:930 #4 0xffffffff in QCoreApplication::sendEvent(QObject*, QEvent*) (receiver=0x8420078, event=0xbf8008b0) at /home/diau/git/qt5/qtbase/include/QtCore/../../src/corelib/kernel/qcoreapplication.h:228 #5 0xffffffff in PlasmaQuick::Dialog::event(QEvent*) (this=0x8420078, event=0xbf801140) ---Type <return> to continue, or q <return> to quit--- at /home/diau/git/kf5/frameworks/plasma-framework/src/plasmaquick/dialog.cpp:1054 #6 0xffffffff in QApplicationPrivate::notify_helper(QObject*, QEvent*) (this=0x807e8b8, receiver=0x8420078, e=0xbf801140) at kernel/qapplication.cpp:3722 #7 0xffffffff in QApplication::notify(QObject*, QEvent*) (this=0xbfffecdc, receiver=0x8420078, e=0xbf801140) at kernel/qapplication.cpp:3164 #8 0xffffffff in QCoreApplication::notifyInternal(QObject*, QEvent*) (this=0xbfffecdc, receiver=0x8420078, event=0xbf801140) at kernel/qcoreapplication.cpp:930 #9 0xffffffff in QCoreApplication::sendEvent(QObject*, QEvent*) (receiver=0x8420078, event=0xbf801140) at /home/diau/git/qt5/qtbase/include/QtCore/../../src/corelib/kernel/qcoreapplication.h:228 #10 0xffffffff in PlasmaQuick::Dialog::event(QEvent*) (this=0x8420078, event=0xbf8019d0) at /home/diau/git/kf5/frameworks/plasma-framework/src/plasmaquick/dialog.cpp:1054 Git commit af0dffd89bde034e903360f4dc3d2c024e6cbcd9 by Marco Martin. Committed on 13/01/2015 at 12:18. Pushed by mart into branch 'master'. don't forward events if not visible anymore Change-Id: I58bfd951e4f55d07c8f3327881354a678a7f65ba M +15 -5 src/plasmaquick/dialog.cpp http://commits.kde.org/plasma-framework/af0dffd89bde034e903360f4dc3d2c024e6cbcd9 I get a crash caused by infinite recursion (frameworks 5.6.0, plasma-5.2.0, Qt-5.4.0 on Gentoo): #0 0x00007f0a0b534d85 in QQuickItem::mapToScene (this=<optimized out>, point=...) at items/qquickitem.cpp:7065 #1 0x00007f0a0cfae005 in PlasmaQuick::DialogPrivate::mainItemContainsPosition (this=0x21f33b0, point=...) at /var/tmp/portage/kde-frameworks/plasma-5.6.0/work/plasma-framework-5.6.0/src/plasmaquick/dialog.cpp:615 #2 0x00007f0a0cfaffeb in PlasmaQuick::Dialog::event (this=0x21f1d40, event=0x7fffe37cf728) at /var/tmp/portage/kde-frameworks/plasma-5.6.0/work/plasma-framework-5.6.0/src/plasmaquick/dialog.cpp:1047 #3 0x00007f0a097f79b9 in QApplicationPrivate::notify_helper (this=<optimized out>, receiver=0x21f1d40, e=0x7fffe37cf728) at kernel/qapplication.cpp:3722 #4 0x00007f0a097fb406 in QApplication::notify (this=<optimized out>, receiver=<optimized out>, e=<optimized out>) at kernel/qapplication.cpp:3164 #5 0x00007f0a08deacd4 in QCoreApplication::notifyInternal (this=0x7fffe3fcc5f8, receiver=0x21f1d40, event=0x7fffe37cf728) at kernel/qcoreapplication.cpp:932 #6 0x00007f0a0cfb00e9 in sendEvent (receiver=0x21f1d40, event=0x0) at /usr/include/qt5/QtCore/qcoreapplication.h:228 #7 PlasmaQuick::Dialog::event (this=0x21f1d40, event=<optimized out>) at /var/tmp/portage/kde-frameworks/plasma-5.6.0/work/plasma-framework-5.6.0/src/plasmaquick/dialog.cpp:1054 #8 0x00007f0a097f79b9 in QApplicationPrivate::notify_helper (this=<optimized out>, receiver=0x21f1d40, e=0x7fffe37cfc68) at kernel/qapplication.cpp:3722 #9 0x00007f0a097fb406 in QApplication::notify (this=<optimized out>, receiver=<optimized out>, e=<optimized out>) at kernel/qapplication.cpp:3164 #10 0x00007f0a08deacd4 in QCoreApplication::notifyInternal (this=0x7fffe3fcc5f8, receiver=0x21f1d40, event=0x7fffe37cfc68) at kernel/qcoreapplication.cpp:932 #11 0x00007f0a0cfb00e9 in sendEvent (receiver=0x21f1d40, event=0x0) at /usr/include/qt5/QtCore/qcoreapplication.h:228 #12 PlasmaQuick::Dialog::event (this=0x21f1d40, event=<optimized out>) at /var/tmp/portage/kde-frameworks/plasma-5.6.0/work/plasma-framework-5.6.0/src/plasmaquick/dialog.cpp:1054 #13 0x00007f0a097f79b9 in QApplicationPrivate::notify_helper (this=<optimized out>, receiver=0x21f1d40, e=0x7fffe37d01a8) at kernel/qapplication.cpp:3722 #14 0x00007f0a097fb406 in QApplication::notify (this=<optimized out>, receiver=<optimized out>, e=<optimized out>) at kernel/qapplication.cpp:3164 #15 0x00007f0a08deacd4 in QCoreApplication::notifyInternal (this=0x7fffe3fcc5f8, receiver=0x21f1d40, event=0x7fffe37d01a8) at kernel/qcoreapplication.cpp:932 #16 0x00007f0a0cfb00e9 in sendEvent (receiver=0x21f1d40, event=0x0) at /usr/include/qt5/QtCore/qcoreapplication.h:228 #17 PlasmaQuick::Dialog::event (this=0x21f1d40, event=<optimized out>) at /var/tmp/portage/kde-frameworks/plasma-5.6.0/work/plasma-framework-5.6.0/src/plasmaquick/dialog.cpp:1054 #18 0x00007f0a097f79b9 in QApplicationPrivate::notify_helper (this=<optimized out>, receiver=0x21f1d40, e=0x7fffe37d06e8) at kernel/qapplication.cpp:3722 #19 0x00007f0a097fb406 in QApplication::notify (this=<optimized out>, receiver=<optimized out>, e=<optimized out>) at kernel/qapplication.cpp:3164 #20 0x00007f0a08deacd4 in QCoreApplication::notifyInternal (this=0x7fffe3fcc5f8, receiver=0x21f1d40, event=0x7fffe37d06e8) at kernel/qcoreapplication.cpp:932 #21 0x00007f0a0cfb00e9 in sendEvent (receiver=0x21f1d40, event=0x0) at /usr/include/qt5/QtCore/qcoreapplication.h:228 #22 PlasmaQuick::Dialog::event (this=0x21f1d40, event=<optimized out>) at /var/tmp/portage/kde-frameworks/plasma-5.6.0/work/plasma-framework-5.6.0/src/plasmaquick/dialog.cpp:1054 #23 0x00007f0a097f79b9 in QApplicationPrivate::notify_helper (this=<optimized out>, receiver=0x21f1d40, e=0x7fffe37d0c28) at kernel/qapplication.cpp:3722 #24 0x00007f0a097fb406 in QApplication::notify (this=<optimized out>, receiver=<optimized out>, e=<optimized out>) at kernel/qapplication.cpp:3164 #25 0x00007f0a08deacd4 in QCoreApplication::notifyInternal (this=0x7fffe3fcc5f8, receiver=0x21f1d40, event=0x7fffe37d0c28) at kernel/qcoreapplication.cpp:932 #26 0x00007f0a0cfb00e9 in sendEvent (receiver=0x21f1d40, event=0x0) at /usr/include/qt5/QtCore/qcoreapplication.h:228 #27 PlasmaQuick::Dialog::event (this=0x21f1d40, event=<optimized out>) at /var/tmp/portage/kde-frameworks/plasma-5.6.0/work/plasma-framework-5.6.0/src/plasmaquick/dialog.cpp:1054 #28 0x00007f0a097f79b9 in QApplicationPrivate::notify_helper (this=<optimized out>, receiver=0x21f1d40, e=0x7fffe37d1168) at kernel/qapplication.cpp:3722 #29 0x00007f0a097fb406 in QApplication::notify (this=<optimized out>, receiver=<optimized out>, e=<optimized out>) at kernel/qapplication.cpp:3164 #30 0x00007f0a08deacd4 in QCoreApplication::notifyInternal (this=0x7fffe3fcc5f8, receiver=0x21f1d40, event=0x7fffe37d1168) at kernel/qcoreapplication.cpp:932 #31 0x00007f0a0cfb00e9 in sendEvent (receiver=0x21f1d40, event=0x0) at /usr/include/qt5/QtCore/qcoreapplication.h:228 Looked at the sources and found the above commit. As I did not run plasma prior to 5.2.0 I can't say if it is the same crash or a different one. |