Hi,

Researching an issue I'm seeing (hang/crash on exit) I found the following 
vestigial out-commented code the KCoreDirListerCache ctor in kcoredirlister.cpp:

    // Probably not needed in KF5 anymore:
    // The use of KUrl::url() in ~DirItem (sendSignal) crashes if the static 
for QRegExpEngine got deleted already,
    // so we need to destroy the KCoreDirListerCache before that.
    //qAddPostRoutine(kDirListerCache.destroy);

WHat's clear is that this no longer works: there is no `destroy` method in 
whatever kDirListerCache's real class is.

Git blame is of little help here; can anyone remember why the explicit 
pro-active delete was deemed unnecessary, and what the exact symptoms were when 
this was not done in KDE4?

FWIW, the crash (or hang) happens during QRegExpEngine take-down when I have 
used a KDE file dialog in a "pure Qt" application via a mechanism built on code 
taken from the plasma integration plugin. It does not happen in KF5 
applications like kate or kdialog. As far as I know those applications obtain 
the KDE file dialog from the platform plugin too. The difference must be in the 
order in which certain things are deleted during the global destruction phase, 
but which and how to restore the proper order.
(The Audacious audioplayer had a similar issue on exit in its Qt5 version, 
which I traced to the QApplication instance being deleted via atexit; a lucky 
shot in the dark that makes a lot of sense in retrospect.)

Thanks for any pointers,
R.

Reply via email to