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

Frank Reininghaus <frank7...@googlemail.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |mon...@kde.org
          Component|general                     |general
            Version|15.12.1                     |unspecified
            Product|dolphin                     |frameworks-frameworkintegra
                   |                            |tion
           Assignee|dolphin-bugs-n...@kde.org   |kdelibs-b...@kde.org

--- Comment #3 from Frank Reininghaus <frank7...@googlemail.com> ---
I hacked some debug output into KIconLoader::hasIcon(const QString&), to see
the address of the internal data for each string, and to the KIconLoader
destructor, where I first print the address of a string and then try to print
the string itself.

This way, I found that the string "dialog-close" is the culprit, which I found
with grep in frameworkintegration (src/kstyle/kstyle.cpp). It was made a
QStringLiteral in this commit, which was made between 5.16 and 5.17:

https://quickgit.kde.org/?p=frameworkintegration.git&a=commit&h=7bbc6c98222eb6db988ed78fc334ad9eef0bb6fb

Reverting that commit fixes the crash for me.

I'll assign to frameworkintegration and CC Laurent, who committed this change.
It seems that we have to think about whether

a) Everyone who makes QString -> QStringLiteral replacements should be
EXTREMELY careful (which is very difficult, since it is not always obvious if
passing a QString to a function will result in the string being stored in a
global static object),

b) Classes like KIconLoader, which are used as global static objects, should
copy all strings that they get to the heap in order to prevent such crashes
(which might also be difficult to do consistently).

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

Reply via email to