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

Nate Graham <[email protected]> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
      Latest Commit|https://invent.kde.org/plas |https://invent.kde.org/plas
                   |ma/plasma-workspace/-/commi |ma/plasma-workspace/-/commi
                   |t/8b4500d7acc699ec72bbac4ae |t/db08d2f00951ad7a0ad604fb0
                   |ed30db3e168a76d             |3cf5d0b6e2c057b

--- Comment #11 from Nate Graham <[email protected]> ---
Git commit db08d2f00951ad7a0ad604fb03cf5d0b6e2c057b by Nate Graham, on behalf
of Dobry Nikolov.
Committed on 03/03/2026 at 20:03.
Pushed by ngraham into branch 'Plasma/6.6'.

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.
(cherry picked from commit 0cc554a33cd496569f0fb1c9ba3a3f9261e627b7)

M  +6    -2    shell/shellcorona.cpp

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

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

Reply via email to