diff --git a/src/coreclr/vm/loaderallocator.cpp b/src/coreclr/vm/loaderallocator.cpp index cbfda127700074..b234ede563d15c 100644 --- a/src/coreclr/vm/loaderallocator.cpp +++ b/src/coreclr/vm/loaderallocator.cpp @@ -382,8 +382,9 @@ LoaderAllocator * LoaderAllocator::GCLoaderAllocators_RemoveAssemblies(AppDomain #endif //0 AppDomain::AssemblyIterator i; - // Iterate through every loader allocator, marking as we go { + // Iterate through every loader allocator, marking as we go + CrstHolder chLoaderAllocatorReferencesLock(pAppDomain->GetLoaderAllocatorReferencesLock()); CrstHolder chAssemblyListLock(pAppDomain->GetAssemblyListLock()); i = pAppDomain->IterateAssembliesEx((AssemblyIterationFlags)( @@ -405,17 +406,11 @@ LoaderAllocator * LoaderAllocator::GCLoaderAllocators_RemoveAssemblies(AppDomain } } } - } - - // Iterate through every loader allocator, unmarking marked loaderallocators, and - // build a free list of unmarked ones - { - CrstHolder chLoaderAllocatorReferencesLock(pAppDomain->GetLoaderAllocatorReferencesLock()); - CrstHolder chAssemblyListLock(pAppDomain->GetAssemblyListLock()); + // Iterate through every loader allocator, unmarking marked loaderallocators, and + // build a free list of unmarked ones i = pAppDomain->IterateAssembliesEx((AssemblyIterationFlags)( kIncludeExecution | kIncludeLoaded | kIncludeCollected)); - CollectibleAssemblyHolder pDomainAssembly; while (i.Next_Unlocked(pDomainAssembly.This())) {