This is meant to address Bug 372114 in KWin. The problem here is that the KConfig object (and its derivatives), that the freeze detection thread needs to record the freeze, are not thread safe. When it happens that the main thread is in fact not frozen, it is possible that the two stomp on each other's KConfig object.
The solution applied here is to use the KSharedConfig::openConfig function, which is thread safe, on the freeze detection thread. As was mentioned by Martin Flöser in the discussion, the thread needs to obey the name of the main config file of KWin, which can change in the future. Please read the whole discussion for details.
As a secondary issue, this patch also turns off KCrash reporting for aborts due to a freeze being detected. IMO it is not very user friendly to still show a crash report to the user, even after this bug is fixed, for the deliberate SIGABRT. Maybe a less intrusive notification could be used to tell the user why effects are suddenly disabled?
I've been using kwin with this change for several weeks now and it makes the restarts of kwin due to freezes unobtrusive. However, most (I would say almost all) of these freezes are actually instances where the system is being slow after eg. screen resolution is changed.
The patch applies to kwin 5.10.5 from Debian.
BUG: 372114