Skip to content

Commit 69d83c0

Browse files
committed
Merge pull request #876 from nodegit/fix-mutex-cleanup-race
Decrement the mutex use count after we've unlocked them.
2 parents 17209fc + e139893 commit 69d83c0

File tree

1 file changed

+5
-1
lines changed

1 file changed

+5
-1
lines changed

generate/templates/manual/src/lock_master.cc

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -188,9 +188,13 @@ void LockMasterImpl::Lock(bool acquireMutexes) {
188188
}
189189

190190
void LockMasterImpl::Unlock(bool releaseMutexes) {
191-
std::vector<uv_mutex_t *> objectMutexes = GetMutexes(releaseMutexes * -1);
191+
// Get the mutexes but don't decrement their use count until after we've
192+
// unlocked them all.
193+
std::vector<uv_mutex_t *> objectMutexes = GetMutexes(0);
192194

193195
std::for_each(objectMutexes.begin(), objectMutexes.end(), uv_mutex_unlock);
196+
197+
GetMutexes(releaseMutexes * -1);
194198
}
195199

196200
void LockMasterImpl::CleanupMutexes() {

0 commit comments

Comments
 (0)