mirror of
https://github.com/intel/llvm.git
synced 2026-01-15 12:25:46 +08:00
<rdar://problem/11202426>
Work around a deadlocking issue where "SBDebugger::MemoryPressureDetected ()" is being called and is causing a deadlock. We now just try and get the lock when trying to trim down the unique modules so we don't deadlock debugger GUI programs until we can find the root cause. llvm-svn: 154339
This commit is contained in:
@@ -112,9 +112,20 @@ ModuleList::Remove (const ModuleSP &module_sp)
|
||||
|
||||
|
||||
size_t
|
||||
ModuleList::RemoveOrphans ()
|
||||
ModuleList::RemoveOrphans (bool mandatory)
|
||||
{
|
||||
Mutex::Locker locker(m_modules_mutex);
|
||||
Mutex::Locker locker;
|
||||
|
||||
if (mandatory)
|
||||
{
|
||||
locker.Reset (m_modules_mutex.GetMutex());
|
||||
}
|
||||
else
|
||||
{
|
||||
// Not mandatory, remove orphans if we can get the mutex
|
||||
if (!locker.TryLock(m_modules_mutex.GetMutex()))
|
||||
return 0;
|
||||
}
|
||||
collection::iterator pos = m_modules.begin();
|
||||
size_t remove_count = 0;
|
||||
while (pos != m_modules.end())
|
||||
@@ -587,9 +598,9 @@ ModuleList::FindSharedModules (const ModuleSpec &module_spec, ModuleList &matchi
|
||||
}
|
||||
|
||||
uint32_t
|
||||
ModuleList::RemoveOrphanSharedModules ()
|
||||
ModuleList::RemoveOrphanSharedModules (bool mandatory)
|
||||
{
|
||||
return GetSharedModuleList ().RemoveOrphans();
|
||||
return GetSharedModuleList ().RemoveOrphans(mandatory);
|
||||
}
|
||||
|
||||
Error
|
||||
|
||||
Reference in New Issue
Block a user