[libclang] Protect against a race condition where a thread

may be destroying an ASTUnit while cleanupOnDiskMapAtExit is
getting called.

rdar://11781241

llvm-svn: 159664
This commit is contained in:
Argyrios Kyrtzidis 2012-07-03 16:30:52 +00:00
parent da94a2d901
commit 4cf2ffe28b
1 changed files with 2 additions and 1 deletions

View File

@ -116,7 +116,8 @@ static OnDiskDataMap &getOnDiskDataMap() {
}
static void cleanupOnDiskMapAtExit(void) {
// No mutex required here since we are leaving the program.
// Use the mutex because there can be an alive thread destroying an ASTUnit.
llvm::MutexGuard Guard(getOnDiskMutex());
OnDiskDataMap &M = getOnDiskDataMap();
for (OnDiskDataMap::iterator I = M.begin(), E = M.end(); I != E; ++I) {
// We don't worry about freeing the memory associated with OnDiskDataMap.