Skip to content
  • Martin Flöser's avatar
    Don't use the global KConfig object on the OpenGL freeze detection thread · a7117e43
    Martin Flöser authored
    Summary:
    This is meant to address Bug 372114. 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.
    
    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.
    
    BUG: 372114
    FIXED-IN: 5.11.3
    
    Reviewers: #kwin, graesslin
    
    Reviewed By: #kwin, graesslin
    
    Subscribers: ngraham, graesslin, anthonyfieroni, cfeck, kwin
    
    Tags: #kwin
    
    Differential Revision: https://phabricator.kde.org/D8356
    a7117e43