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

Jonathan Marten <j...@keelhaul.me.uk> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
     Ever confirmed|0                           |1
             Status|UNCONFIRMED                 |CONFIRMED

--- Comment #7 from Jonathan Marten <j...@keelhaul.me.uk> ---
Note that the crash only happens in "Classic Tree View" mode.  What seems to be
happening is this:

ClassicMode::initEvent() creates d->classicWidget, a QSplitter with no parent.

KParts::PartManager::PartManager() is called for that splitter, which calls
addManagedTopLevelWidget() for it.  At this stage isTopLevel() for the splitter
is true and so it is added to the d->m_managedTopLevelWidgets list.

SettingsBase::changePlugin() adds the splitter to the stackedWidget, which
takes ownership of the splitter.

When systemsettings5 is closed,
KParts::PartManager::removeManagedTopLevelWidget() is called by the destroyed()
signal of the splitter.  However, by this point isTopLevel() for the splitter
is false (because it has been reparented above) and so it is not removed from
d->m_managedTopLevelWidgets.

KParts::PartManager::~PartManager() accesses the splitter, which has already
been destroyed but still remains in d->m_managedTopLevelWidgets => crash.

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

Reply via email to