Bug 450663 - Deleting Panel with Panel Spacers on it crashes Plasma in PanelSpacer::containmentGraphicObject()
Summary: Deleting Panel with Panel Spacers on it crashes Plasma in PanelSpacer::contai...
Status: RESOLVED FIXED
Alias: None
Product: plasmashell
Classification: Plasma
Component: Panel Spacer (show other bugs)
Version: master
Platform: Other Linux
: NOR crash
Target Milestone: 1.0
Assignee: Plasma Bugs List
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2022-02-21 17:08 UTC by Nate Graham
Modified: 2022-07-09 22:15 UTC (History)
1 user (show)

See Also:
Latest Commit:
Version Fixed In: 5.25.3


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Nate Graham 2022-02-21 17:08:31 UTC
Steps to reproduce
1. Create a new empty panel
2. Put an applet on it, and a Panel Spacer applet on each side
3. Delete the panel
4. Click the "Close" button on the "Undo deleting this panel?" notification (this will actually perform the deletion in the background)

Plasma then crashes:

#0  __pthread_kill_implementation
    (threadid=<optimized out>, signo=signo@entry=11, no_tid=no_tid@entry=0) at pthread_kill.c:44
#1  0x00007fe9825958f3 in __pthread_kill_internal (signo=11, threadid=<optimized out>)
    at pthread_kill.c:78
#2  0x00007fe9825486a6 in __GI_raise (sig=11) at ../sysdeps/posix/raise.c:26
#3  0x00007fe9850bba09 in KCrash::defaultCrashHandler(int) (sig=11)
    at /home/nate/kde/src/kcrash/src/kcrash.cpp:624
#4  0x00007fe982548750 in <signal handler called> () at /lib64/libc.so.6
#5  0x00007fe982cf8b3c in QScopedPointer<QObjectData, QScopedPointerDeleter<QObjectData> >::operator->() const (this=<optimized out>)
    at ../../include/QtCore/../../src/corelib/tools/qscopedpointer.h:118
#6  qGetPtrHelper<QScopedPointer<QObjectData, QScopedPointerDeleter<QObjectData> > const>(QScopedPointer<QObjectData, QScopedPointerDeleter<QObjectData> > const&) (ptr=<optimized out>)
    at ../../include/QtCore/../../src/corelib/global/qglobal.h:1143
#7  QObject::d_func() const (this=<optimized out>) at kernel/qobject.h:132
#8  QObject::property(char const*) const
    (this=0x0, name=name@entry=0x7fe96807f256 "_plasma_graphicObject") at kernel/qobject.cpp:4085
#9  0x00007fe96807ce53 in PanelSpacer::containmentGraphicObject() const (this=<optimized out>)
    at /home/nate/kde/src/plasma-workspace/applets/panelspacer/plugin/panelspacer.cpp:126
#10 0x00007fe96807c631 in PanelSpacer::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)
    (_a=<optimized out>, _id=<optimized out>, _c=<optimized out>, _o=<optimized out>)
    at /home/nate/kde/build/plasma-workspace/applets/panelspacer/plugin/org.kde.plasma.panelspacer_autogen/EWIEGA46WW/moc_panelspacer.cpp:183
#11 PanelSpacer::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)
    (_o=<optimized out>, _c=<optimized out>, _id=<optimized out>, _a=<optimized out>)
    at /home/nate/kde/build/plasma-workspace/applets/panelspacer/plugin/org.kde.plasma.panelspacer_autogen/EWIEGA46WW/moc_panelspacer.cpp:149
#12 0x00007fe984677e81 in QQmlPropertyData::readProperty(QObject*, void*) const
    (property=0x7ffc6aa04120, target=<optimized out>, this=0x2097b58)
    at ../../include/QtQml/5.15.2/QtQml/private/../../../../../src/qml/qml/qqmlpropertydata_p.h:357
#13 loadProperty(QV4::ExecutionEngine*, QObject*, QQmlPropertyData const&)
    (v4=0x12648e0, object=0x14b2d30, property=...) at jsruntime/qv4qobjectwrapper.cpp:138
#14 0x00007fe8fff233ed in  ()
#15 0x00007ffc6aa04390 in  ()
#16 0x0000000000000021 in  ()
#17 0x00007fe8fff23000 in  ()
#18 0x0000000000000000 in  ()
Comment 2 Nate Graham 2022-07-09 22:14:49 UTC
Git commit 65fe6b864d5bd5e49d2e0b021823d97ea377e545 by Nate Graham, on behalf of Dominic Hayes.
Committed on 09/07/2022 at 22:14.
Pushed by ngraham into branch 'master'.

Fix "PanelSpacer::containmentGraphicObject()" plasmashell segfault

This one-liner fix is from Aleix Pol, and fixes the following:

- Crashes when deleting panels with Panel Spacer instances on them
  (as described in the bug ID named above)
- Potentially endless crash looping when running `plasmashell --replace`
  while a Panel Spacer is on at least one panel

Co-authored-by: Aleix Pol <aleixpol@kde.org>
FIXED-IN: 5.25.3

M  +1    -0    applets/panelspacer/plugin/panelspacer.cpp

https://invent.kde.org/plasma/plasma-workspace/commit/65fe6b864d5bd5e49d2e0b021823d97ea377e545
Comment 3 Nate Graham 2022-07-09 22:15:43 UTC
Git commit db0f5e68f26bc65d666fad1a9f16fbada3c0909b by Nate Graham, on behalf of Dominic Hayes.
Committed on 09/07/2022 at 22:15.
Pushed by ngraham into branch 'Plasma/5.25'.

Fix "PanelSpacer::containmentGraphicObject()" plasmashell segfault

This one-liner fix is from Aleix Pol, and fixes the following:

- Crashes when deleting panels with Panel Spacer instances on them
  (as described in the bug ID named above)
- Potentially endless crash looping when running `plasmashell --replace`
  while a Panel Spacer is on at least one panel

Co-authored-by: Aleix Pol <aleixpol@kde.org>
FIXED-IN: 5.25.3


(cherry picked from commit 65fe6b864d5bd5e49d2e0b021823d97ea377e545)

M  +1    -0    applets/panelspacer/plugin/panelspacer.cpp

https://invent.kde.org/plasma/plasma-workspace/commit/db0f5e68f26bc65d666fad1a9f16fbada3c0909b