-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://git.reviewboard.kde.org/r/121134/
-----------------------------------------------------------

(Updated Nov. 16, 2014, 8:19 p.m.)


Review request for KDE Software on Mac OS X and kdelibs.


Repository: kdelibs


Description
-------

I have been experiencing unexpected exits from KDevelop that were not due to 
any kind of error in the KDevelop code; it was as if someone told the 
application to exit normally. This happens mostly on OS X, but also sometimes 
on Linux.
I finally traced this to `KGlobal::deref` reaching a zero reference count and 
invoking `QCoreApplication::quit` when called from one of KDevelop's KJob 
dtors. There does not appear to be a reference counting mismatch in the code, 
so the issue might be due to a race condition in KGlobal::ref/deref.

This patch introduces thread-safety to KGlobal's reference counting by turning 
the simple global `static int s_refCount` into a `static QAtomicInt 
s_refCount`. I consider this an important bug fix regardless of whether it 
corrects the issue I have with KDevelop.


Diffs (updated)
-----

  kdecore/kernel/kglobal.cpp cf003a4 

Diff: https://git.reviewboard.kde.org/r/121134/diff/


Testing
-------

On OS X 10.6.8 only for now.

NB: Qt itself uses the QAtomicInt's parent class (QBasicAtomicInt) for its own 
reference counter used for implicit sharing. This is thus well-tested code that 
is unlikely to introduce regressions to a core KDE feature.


Thanks,

René J.V. Bertin

Reply via email to