Bug 483702

Summary: Plasma crashed in QWidget::winId() when opening the "leave" menu in Kickoff
Product: [Plasma] plasmashell Reporter: Christian Schärf <c.schaerf>
Component: Application Launcher (Kickoff)Assignee: Plasma Bugs List <plasma-bugs>
Status: RESOLVED DUPLICATE    
Severity: crash CC: kde, kde, mikel5764, nate, noahadvs, notmart
Priority: NOR Keywords: drkonqi, qt6
Version: 6.0.3   
Target Milestone: 1.0   
Platform: Arch Linux   
OS: Linux   
Latest Commit: Version Fixed In:
Sentry Crash Report:
Attachments: New crash information added by DrKonqi
Screenshot
Plasmashell Crash Report from 2024-04-10 at 02:59:32
Plasmashell Crash Report from 2024-04-18 at 08:41:40
Plasmashell Crash Report from 2024-05-25 at 17:49

Description Christian Schärf 2024-03-15 20:28:54 UTC
Application: plasmashell (6.0.2)

Qt Version: 6.6.2
Frameworks Version: 6.0.0
Operating System: Linux 6.7.9-arch1-1 x86_64
Windowing System: Wayland
Distribution: "Arch Linux"
DrKonqi: 6.0.2 [CoredumpBackend]

-- Information about the crash:
When attempting to open the "leave" menu ("Verlassen" in German localisation), plasma crashed. This has already happened to me twice after changing the panel visibility to "dodge windows" and the panel width to "fit to content" but I am not sure if the crash is related. It does not crash every time.

The crash can be reproduced sometimes.

-- Backtrace (Reduced):
#5  std::__atomic_base<int>::fetch_add (__m=std::memory_order_acq_rel, __i=1, this=0x107b83484d7e01, this=<optimized out>, __i=<optimized out>, __m=<optimized out>) at /usr/include/c++/13.2.1/bits/atomic_base.h:633
#6  QAtomicOps<int>::ref<int> (_q_value=<error reading variable: Cannot access memory at address 0x107b83484d7e01>, _q_value=<optimized out>) at /usr/src/debug/qt6-base/qtbase-everywhere-src-6.6.2/src/corelib/thread/qatomic_cxx11.h:258
[...]
#8  QtSharedPointer::ExternalRefCountData::getAndRef (obj=obj@entry=0x595a9a0e2270) at /usr/src/debug/qt6-base/qtbase-everywhere-src-6.6.2/src/corelib/tools/qsharedpointer.cpp:1409
#9  0x00007442a7d78170 in QWeakPointer<QObject>::QWeakPointer<QObject, true> (ptr=0x595a9a0e2270, this=<optimized out>) at /usr/src/debug/qt6-base/qtbase-everywhere-src-6.6.2/src/corelib/tools/qsharedpointer_impl.h:685
#10 QWeakPointer<QObject>::assign<QObject> (this=0x595a9e5bcee0, ptr=0x595a9a0e2270) at /usr/src/debug/qt6-base/qtbase-everywhere-src-6.6.2/src/corelib/tools/qsharedpointer_impl.h:680


Reported using DrKonqi
Comment 1 Christian Schärf 2024-03-15 20:28:55 UTC
Created attachment 167282 [details]
New crash information added by DrKonqi

DrKonqi auto-attaching complete backtrace.
Comment 2 Christian Schärf 2024-03-15 20:31:26 UTC
Created attachment 167284 [details]
Screenshot

I am adding a screenshot of the item I was clicking when the crash happened so it is clear what I am talking about.
Comment 3 Arazil 2024-04-10 08:24:49 UTC
I am also experiencing this intermittent crash when opening the "Leave" menu through the "Application Launcher" widget issue. It usually happens when I try to open the "Leave" menu through the "Application Launcher" widget on my 1080P monitor.

I have a three monitor setup: [3840x2160x125%] [PRIMARY 3840x2160@125%] [1920x1080@100%]

KDE Plasma Version: 6.0.3
KDE Frameworks Version: 6.0.0
Qt Version: 6.6.3
Kernel Version: 6.8.4-arch1-1 (64-bit)
Graphics Platform: Wayland

CPU: Ryzen 9 5950X
Memory: 62.7 GiB
GPU: AMD Radeon RX 6900 XT
Comment 4 Arazil 2024-04-10 08:26:06 UTC
Created attachment 168335 [details]
Plasmashell Crash Report from 2024-04-10 at 02:59:32
Comment 5 Christian Schärf 2024-04-10 09:27:53 UTC
I should also mention that I have multi monitor setup: 3840x2160 (UHD), 60 Hz, 125 %; 2560x1440 (WQHD), 144 Hz, 100 %; all running on an AMD GPU. Also, I use the Wayland session.
Comment 6 Marco Martin 2024-04-10 15:19:00 UTC
pasting the second bt inline 

Thread 1 (Thread 0x7442a281b9c0 (LWP 8979)):
[KCrash Handler]
#5  std::__atomic_base<int>::fetch_add (__m=std::memory_order_acq_rel, __i=1, this=0x107b83484d7e01, this=<optimized out>, __i=<optimized out>, __m=<optimized out>) at /usr/include/c++/13.2.1/bits/atomic_base.h:633
#6  QAtomicOps<int>::ref<int> (_q_value=<error reading variable: Cannot access memory at address 0x107b83484d7e01>, _q_value=<optimized out>) at /usr/src/debug/qt6-base/qtbase-everywhere-src-6.6.2/src/corelib/thread/qatomic_cxx11.h:258
#7  QBasicAtomicInteger<int>::ref (this=0x107b83484d7e01, this=<optimized out>) at /usr/src/debug/qt6-base/qtbase-everywhere-src-6.6.2/src/corelib/thread/qbasicatomic.h:49
#8  QtSharedPointer::ExternalRefCountData::getAndRef (obj=obj@entry=0x595a9a0e2270) at /usr/src/debug/qt6-base/qtbase-everywhere-src-6.6.2/src/corelib/tools/qsharedpointer.cpp:1409
#9  0x00007442a7d78170 in QWeakPointer<QObject>::QWeakPointer<QObject, true> (ptr=0x595a9a0e2270, this=<optimized out>) at /usr/src/debug/qt6-base/qtbase-everywhere-src-6.6.2/src/corelib/tools/qsharedpointer_impl.h:685
#10 QWeakPointer<QObject>::assign<QObject> (this=0x595a9e5bcee0, ptr=0x595a9a0e2270) at /usr/src/debug/qt6-base/qtbase-everywhere-src-6.6.2/src/corelib/tools/qsharedpointer_impl.h:680
#11 0x00007442a7dc9957 in QPointer<QScreen>::operator= (p=0x595a9a0e2270, this=0x595a9e5bcee0, this=<optimized out>, p=<optimized out>) at /usr/src/debug/qt6-base/qtbase-everywhere-src-6.6.2/src/corelib/kernel/qpointer.h:68
#12 QWindowPrivate::connectToScreen (screen=<optimized out>, this=<optimized out>) at /usr/src/debug/qt6-base/qtbase-everywhere-src-6.6.2/src/gui/kernel/qwindow.cpp:481
#13 QWindowPrivate::setTopLevelScreen (this=0x595a9e5bcd90, newScreen=0x595a9a0e2270, recreate=<optimized out>) at /usr/src/debug/qt6-base/qtbase-everywhere-src-6.6.2/src/gui/kernel/qwindow.cpp:506
#14 0x00007442a95312d7 in QWidgetPrivate::create (this=this@entry=0x595a9cfc3220) at /usr/src/debug/qt6-base/qtbase-everywhere-src-6.6.2/src/widgets/kernel/qwidget.cpp:1283
#15 0x00007442a95300f2 in QWidget::create (this=0x595a9cfef370, window=<optimized out>, initializeWindow=<optimized out>, destroyOldWindow=<optimized out>) at /usr/src/debug/qt6-base/qtbase-everywhere-src-6.6.2/src/widgets/kernel/qwidget.cpp:1174
#16 0x00007442a9530a87 in QWidgetPrivate::createWinId (this=<optimized out>) at /usr/src/debug/qt6-base/qtbase-everywhere-src-6.6.2/src/widgets/kernel/qwidget.cpp:2377
#17 0x00007442a9530b03 in QWidget::winId (this=0x595a9cfef370) at /usr/src/debug/qt6-base/qtbase-everywhere-src-6.6.2/src/widgets/kernel/qwidget.h:101
#18 QWidget::winId (this=0x595a9cfef370) at /usr/src/debug/qt6-base/qtbase-everywhere-src-6.6.2/src/widgets/kernel/qwidget.cpp:2341
#19 0x000074428af9fcad in QMenuProxy::openInternal (this=this@entry=0x595a9cecabe0, pos=...) at /usr/src/debug/libplasma/libplasma-6.0.2/src/declarativeimports/plasmaextracomponents/qmenu.cpp:469
#20 0x000074428afa0210 in QMenuProxy::openRelative (this=0x595a9cecabe0) at /usr/src/debug/libplasma/libplasma-6.0.2/src/declarativeimports/plasmaextracomponents/qmenu.cpp:460
#21 0x000074428afa8334 in QMenuProxy::qt_metacall (this=0x595a9cecabe0, _c=QMetaObject::InvokeMetaMethod, _id=13, _a=0x7fffe297d820) at /usr/src/debug/libplasma/build/src/declarativeimports/plasmaextracomponents/plasmaextracomponentsplugin_autogen/include/moc_qmenu.cpp:670
#22 0x00007442a88d7d64 in QQmlObjectOrGadget::metacall (this=0x7fffe297da90, type=QMetaObject::InvokeMetaMethod, index=<optimized out>, argv=<optimized out>) at /usr/src/debug/qt6-declarative/qtdeclarative-everywhere-src-6.6.2/src/qml/qml/qqmlobjectorgadget.cpp:14
#23 0x00007442a87b6a86 in QV4::CallMethod (callType=QMetaObject::InvokeMetaMethod, callArgs=<optimized out>, engine=0x595a9a60c3a0, argTypes=0x0, argCount=0, returnType=..., index=<optimized out>, object=...) at /usr/src/debug/qt6-declarative/qtdeclarative-everywhere-src-6.6.2/src/qml/jsruntime/qv4qobjectwrapper.cpp:1563
#24 QV4::CallPrecise (object=..., data=..., engine=<optimized out>, engine@entry=0x595a9a60c3a0, callArgs=<optimized out>, callArgs@entry=0x74426d3bf578, callType=callType@entry=QMetaObject::InvokeMetaMethod) at /usr/src/debug/qt6-declarative/qtdeclarative-everywhere-src-6.6.2/src/qml/jsruntime/qv4qobjectwrapper.cpp:1856
#25 0x00007442a87bb239 in operator() (__closure=<optimized out>) at /usr/src/debug/qt6-declarative/qtdeclarative-everywhere-src-6.6.2/src/qml/jsruntime/qv4qobjectwrapper.cpp:2753
#26 operator()<QV4::QObjectMethod::callInternal(const QV4::Value*, const QV4::Value*, int) const::<lambda()> > (call=<optimized out>, __closure=<synthetic pointer>) at /usr/src/debug/qt6-declarative/qtdeclarative-everywhere-src-6.6.2/src/qml/jsruntime/qv4qobjectwrapper.cpp:2730
#27 QV4::QObjectMethod::callInternal (this=0x7fffe297dba0, thisObject=<optimized out>, argv=0x74426d3bf4f8, argc=0) at /usr/src/debug/qt6-declarative/qtdeclarative-everywhere-src-6.6.2/src/qml/jsruntime/qv4qobjectwrapper.cpp:2753
#28 0x00007442a8800efa in QV4::Moth::VME::interpret (frame=0x7fffe297df50, engine=0x595a9a60c3a0, code=0x595a9cfe0aa0 "\240\205x\250Bt") at /usr/src/debug/qt6-declarative/qtdeclarative-everywhere-src-6.6.2/src/qml/jsruntime/qv4vme_moth.cpp:902
#29 0x00007442a88045c5 in QV4::Moth::VME::exec (frame=<optimized out>, engine=<optimized out>) at /usr/src/debug/qt6-declarative/qtdeclarative-everywhere-src-6.6.2/src/qml/jsruntime/qv4vme_moth.cpp:584
#30 0x00007442a87703fe in QV4::doCall (self=<optimized out>, thisObject=<optimized out>, argv=<optimized out>, argc=<optimized out>, context=<optimized out>) at /usr/src/debug/qt6-declarative/qtdeclarative-everywhere-src-6.6.2/src/qml/jsruntime/qv4function.cpp:54
#31 0x00007442a8775311 in QV4::Function::call (this=this@entry=0x595a9cf8b640, thisObject=<optimized out>, argv=argv@entry=0x74426d3bf4f0, argc=argc@entry=0, context=context@entry=0x744257e54df8) at /usr/src/debug/qt6-declarative/qtdeclarative-everywhere-src-6.6.2/src/qml/jsruntime/qv4function.cpp:79
#32 0x00007442a87754a5 in operator() (argc=0, argv=0x74426d3bf4f0, thisObject=<optimized out>, __closure=<synthetic pointer>) at /usr/src/debug/qt6-declarative/qtdeclarative-everywhere-src-6.6.2/src/qml/jsruntime/qv4function.cpp:30
#33 QV4::convertAndCall<QV4::Function::call(QObject*, void**, const QMetaType*, int, QV4::ExecutionContext*)::<lambda(const QV4::Value*, const QV4::Value*, int)> > (call=..., argc=0, types=0x7fffe297e180, a=0x7fffe297e190, thisObject=<optimized out>, engine=<optimized out>) at /usr/src/debug/qt6-declarative/qtdeclarative-everywhere-src-6.6.2/src/qml/jsruntime/qv4jscall_p.h:173
#34 QV4::Function::call (this=0x595a9cf8b640, thisObject=<optimized out>, a=0x7fffe297e190, types=0x7fffe297e180, argc=0, context=0x744257e54df8) at /usr/src/debug/qt6-declarative/qtdeclarative-everywhere-src-6.6.2/src/qml/jsruntime/qv4function.cpp:27
#35 0x00007442a88b0427 in QQmlJavaScriptExpression::evaluate (this=<optimized out>, a=<optimized out>, types=<optimized out>, argc=<optimized out>) at /usr/src/debug/qt6-declarative/qtdeclarative-everywhere-src-6.6.2/src/qml/qml/qqmljavascriptexpression_p.h:248
#36 0x00007442a8848ca3 in QQmlBoundSignalExpression::evaluate (this=this@entry=0x595a9cfedab0, a=a@entry=0x0) at /usr/src/debug/qt6-declarative/qtdeclarative-everywhere-src-6.6.2/src/qml/qml/qqmlboundsignal.cpp:199
#37 0x00007442a884e56b in QQmlBoundSignal_callback (a=0x0, e=0x595a9cfedc30) at /usr/src/debug/qt6-declarative/qtdeclarative-everywhere-src-6.6.2/src/qml/qml/ftw/qqmlrefcount_p.h:72
#38 QQmlBoundSignal_callback (e=0x595a9cfedc30, a=0x0) at /usr/src/debug/qt6-declarative/qtdeclarative-everywhere-src-6.6.2/src/qml/qml/qqmlboundsignal.cpp:293
#39 0x00007442a88d1217 in QQmlNotifier::emitNotify (endpoint=<optimized out>, a=0x0) at /usr/src/debug/qt6-declarative/qtdeclarative-everywhere-src-6.6.2/src/qml/qml/qqmlnotifier.cpp:70
Comment 7 Marco Martin 2024-04-10 15:27:30 UTC
an interesting part is
/usr/src/debug/libplasma/libplasma-6.0.2/src/declarativeimports/plasmaextracomponents/qmenu.cpp:469

where in the end is crashing in qt internally attempting to create the platform window with winId()
Comment 8 Arazil 2024-04-18 14:10:03 UTC
Created attachment 168644 [details]
Plasmashell Crash Report from 2024-04-18 at 08:41:40

Updated crash report from Plasma 6.0.4 / Framework 6.1.0 / Qt 6.7.0.
Comment 9 Arazil 2024-05-26 04:32:14 UTC
Created attachment 169842 [details]
Plasmashell Crash Report from 2024-05-25 at 17:49

I was able to reproduce the bug on the newly released KDE 6.1 beta. I have updated my crash report file to reflect the 6.1 beta version of the crash.

KDE Plasma: 6.0.90 (6.1 Beta)
KDE Frameworks: 6.20.0
Qt: 6.7.1
Kernel: 6.9.1-arch1-2
Comment 10 Nate Graham 2024-06-12 14:23:01 UTC
Slightly different now:

Thread 1 (Thread 0x7af6e3bc7a00 (LWP 1862)):
[KCrash Handler]
#5  0x00007af6e91c9487 in QScreen::devicePixelRatio (this=0x61fb5dce7870) at /usr/src/debug/qt6-base/qtbase/src/gui/kernel/qscreen.cpp:288
#6  0x00007af6e91d1d60 in QWindowPrivate::updateDevicePixelRatio (this=0x61fb64cc81f0) at /usr/src/debug/qt6-base/qtbase/src/gui/kernel/qwindow.cpp:1404
#7  0x00007af6e8ba17b7 in QtPrivate::QSlotObjectBase::call (this=0x61fb5da03960, r=0x7af6dc06aba0, a=0x7ffd2efc8090, this=<optimized out>, r=<optimized out>, a=<optimized out>) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qobjectdefs_impl.h:469
#8  doActivate<false> (sender=<optimized out>, signal_index=<optimized out>, argv=<optimized out>) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qobject.cpp:4086
#9  0x00007af6e91d2165 in QWindow::screenChanged (this=0x7af6dc06aba0, _t1=0x61fb5dce7870) at /usr/src/debug/qt6-base/build/src/gui/Gui_autogen/include/moc_qwindow.cpp:817
#10 QWindowPrivate::emitScreenChangedRecursion (this=<optimized out>, newScreen=0x61fb5dce7870) at /usr/src/debug/qt6-base/qtbase/src/gui/kernel/qwindow.cpp:496
#11 QWindowPrivate::setTopLevelScreen (this=<optimized out>, newScreen=0x61fb5dce7870, recreate=<optimized out>) at /usr/src/debug/qt6-base/qtbase/src/gui/kernel/qwindow.cpp:520
#12 0x00007af6eab36a87 in QWidgetPrivate::create (this=this@entry=0x61fb5e705360) at /usr/src/debug/qt6-base/qtbase/src/widgets/kernel/qwidget.cpp:1318
#13 0x00007af6eab35816 in QWidget::create (this=0x61fb5e705330, window=<optimized out>, initializeWindow=<optimized out>, destroyOldWindow=<optimized out>) at /usr/src/debug/qt6-base/qtbase/src/widgets/kernel/qwidget.cpp:1209
#14 0x00007af6eab361e5 in QWidgetPrivate::createWinId (this=<optimized out>) at /usr/src/debug/qt6-base/qtbase/src/widgets/kernel/qwidget.cpp:2404
#15 0x00007af6eab3626b in QWidget::winId (this=0x61fb5e705330) at /usr/src/debug/qt6-base/qtbase/src/widgets/kernel/qwidget.h:101
Comment 11 David Edmundson 2024-08-01 11:31:37 UTC

*** This bug has been marked as a duplicate of bug 490791 ***