-----------------------------------------------------------------
Revision: eaaefa661c0da50ab2107ce15d9f508d83259347
Ancestor: 154a1d6e6680f1c64f2af4dc47d7848399516916
Author: [email protected]
Date: 02/01/2010 03:27:25 PM
Branch: net.venge.monotone.guitone
Modified files:
src/monotone/MonotoneManager.cpp
ChangeLog:
* we had a race condition on Linux in ::stopAllWorkspaceThreads(): while we
signal stopped() from the thread just before we return from run(), this signal
is executed asynchronously, thus a QThread::finish() signal comes right after
it and lets other threads return immediately from QThread::wait(). While the
stopped() slot is still not executed, we immediately trying to query data again
and got the old, about to be stopped thread (and now also really stopped
thread) as "new" thread, which blocks task execution since it won't ever be
started. To make a long story short, we now directly removing the thread's data
in the same parent thread right after we return from QThread::abort() and relax
the check in MonotoneManager::removeThread() for a non-existing thread id
monotone --db={your.database} diff
--revision=154a1d6e6680f1c64f2af4dc47d7848399516916
--revision=eaaefa661c0da50ab2107ce15d9f508d83259347
----------------------------------------------------------------------
_______________________________________________
Monotone-commits-nodiffs mailing list
[email protected]
http://lists.nongnu.org/mailman/listinfo/monotone-commits-nodiffs