https://bugs.kde.org/show_bug.cgi?id=516937

Dobry <[email protected]> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
         Resolution|---                         |FIXED
      Latest Commit|                            |https://invent.kde.org/plas
                   |                            |ma/plasma-workspace/-/commi
                   |                            |t/0cc554a33cd496569f0fb1c9b
                   |                            |a3a3f9261e627b7
             Status|ASSIGNED                    |RESOLVED

--- Comment #8 from Dobry <[email protected]> ---
Git commit 0cc554a33cd496569f0fb1c9ba3a3f9261e627b7 by Dobry Nikolov.
Committed on 03/03/2026 at 15:05.
Pushed by ngraham into branch 'master'.

shell: restore early destroyed guard for panel containments

Commit 086ff5d8139eed36c25b3a7417f0eed8ec223739 removed a
containmentAdded lambda from the constructor that connected
QObject::destroyed -> panelContainmentDestroyed for every panel
containment as soon as it was created. It reasoned that
createWaitingPanels() already connects this signal, making it
redundant.

However, createWaitingPanels() only connects destroyed *after*
successfully creating a PanelView for the containment. If a containment
is freed before that point (e.g. its plugin is missing and libplasma
issues deleteLater()), panelContainmentDestroyed is never connected,
m_waitingPanels retains a dangling pointer, and the next dereference
(e.g. in isScreenUiReady()) crashes with SIGSEGV.

Restore the constructor connect so the guard is in place from the
moment any panel containment is added, with no window of exposure.
The connect inside createWaitingPanels() is now truly redundant
and is removed.

M  +6    -2    shell/shellcorona.cpp

https://invent.kde.org/plasma/plasma-workspace/-/commit/0cc554a33cd496569f0fb1c9ba3a3f9261e627b7

-- 
You are receiving this mail because:
You are watching all bug changes.

Reply via email to