may be destroying an ASTUnit while cleanupOnDiskMapAtExit is
getting called.
rdar://
11781241
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159664
91177308-0d34-0410-b5e6-
96231b3b80d8
}
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.