return;
{
- Debugger::DebuggerLockHolder dbgLockHolder(this);
-
- this->m_isBlockedOnGarbageCollectionEvent = true;
+ Debugger::DebuggerLockHolder dbgLockHolder(this);
DebuggerIPCEvent* ipce1 = m_pRCThread->GetIPCEventSendBuffer();
InitIPCEvent(ipce1,
WaitForSingleObject(this->GetGarbageCollectionBlockerEvent(), INFINITE);
ResetEvent(this->GetGarbageCollectionBlockerEvent());
+ this->m_isBlockedOnGarbageCollectionEvent = false;
}
void Debugger::SendDataBreakpoint(Thread *thread, CONTEXT *context,
_ASSERTE(ThreadHoldsLock());
// Simply trap all Runtime threads if we're not already trying to.
- if (!m_trappingRuntimeThreads)
+ if (!m_isBlockedOnGarbageCollectionEvent && !m_trappingRuntimeThreads)
{
// If the RS sent an Async-break, then that's an explicit request.
m_RSRequestedSync = TRUE;
{
if (this->m_isBlockedOnGarbageCollectionEvent)
{
- this->m_isBlockedOnGarbageCollectionEvent = false;
this->m_stopped = false;
SetEvent(this->GetGarbageCollectionBlockerEvent());
}
|| Thread::ThreadsAtUnsafePlaces()
#ifdef DEBUGGING_SUPPORTED // seriously? When would we want to disable debugging support? :)
|| (CORDebuggerAttached() &&
- g_pDebugInterface->ThreadsAtUnsafePlaces())
+ (g_pDebugInterface->ThreadsAtUnsafePlaces() || g_pDebugInterface->IsSynchronizing()))
#endif // DEBUGGING_SUPPORTED
)
{