From f82e24536d30ced112ea0946b58cc02cb4f36bcc Mon Sep 17 00:00:00 2001 From: Andrew Au Date: Tue, 10 Jul 2018 17:20:42 -0700 Subject: [PATCH] Do not handle the thread context for garbage collection events Commit migrated from https://github.com/dotnet/coreclr/commit/a89cd9e6654d21fc0f2a03eeaff71bcc84f69a1f --- src/coreclr/src/debug/di/process.cpp | 31 ++++++------------------------- src/coreclr/src/debug/di/rspriv.h | 3 --- 2 files changed, 6 insertions(+), 28 deletions(-) diff --git a/src/coreclr/src/debug/di/process.cpp b/src/coreclr/src/debug/di/process.cpp index 8fcd994..e668fe6 100644 --- a/src/coreclr/src/debug/di/process.cpp +++ b/src/coreclr/src/debug/di/process.cpp @@ -984,8 +984,7 @@ CordbProcess::CordbProcess(ULONG64 clrInstanceId, m_pEventChannel(NULL), m_fAssertOnTargetInconsistency(false), m_runtimeOffsetsInitialized(false), - m_writableMetadataUpdateMode(LegacyCompatPolicy), - m_isBlockedOnGarbageCollectionEvent(false) + m_writableMetadataUpdateMode(LegacyCompatPolicy) { _ASSERTE((m_id == 0) == (pShim == NULL)); @@ -3645,8 +3644,6 @@ HRESULT CordbProcess::Continue(BOOL fIsOutOfBand) { PUBLIC_API_ENTRY(this); - this->m_isBlockedOnGarbageCollectionEvent = false; - if (m_pShim == NULL) // This API is moved off to the shim { // bias towards failing with CORDBG_E_NUETERED. @@ -4914,7 +4911,6 @@ void CordbProcess::RawDispatchEvent( case DB_IPCE_BEFORE_GARBAGE_COLLECTION: { { - this->m_isBlockedOnGarbageCollectionEvent = true; PUBLIC_CALLBACK_IN_THIS_SCOPE(this, pLockHolder, pEvent); pCallback4->BeforeGarbageCollection(static_cast(this)); } @@ -4924,7 +4920,6 @@ void CordbProcess::RawDispatchEvent( case DB_IPCE_AFTER_GARBAGE_COLLECTION: { { - this->m_isBlockedOnGarbageCollectionEvent = true; PUBLIC_CALLBACK_IN_THIS_SCOPE(this, pLockHolder, pEvent); pCallback4->AfterGarbageCollection(static_cast(this)); } @@ -6509,17 +6504,10 @@ HRESULT CordbProcess::GetThreadContext(DWORD threadID, ULONG32 contextSize, BYTE hr = E_INVALIDARG; } else - { - if (this->m_isBlockedOnGarbageCollectionEvent) - { - hr = this->GetDataTarget()->GetThreadContext(threadID, CONTEXT_FULL, contextSize, context); - } - else - { - DT_CONTEXT* managedContext; - hr = thread->GetManagedContext(&managedContext); - *pContext = *managedContext; - } + { + DT_CONTEXT* managedContext; + hr = thread->GetManagedContext(&managedContext); + *pContext = *managedContext; } } EX_CATCH @@ -6611,14 +6599,7 @@ HRESULT CordbProcess::SetThreadContext(DWORD threadID, ULONG32 contextSize, BYTE hr = E_INVALIDARG; } - if (this->m_isBlockedOnGarbageCollectionEvent) - { - hr = this->m_pMutableDataTarget->SetThreadContext(threadID, contextSize, context); - } - else - { - hr = thread->SetManagedContext(pContext); - } + hr = thread->SetManagedContext(pContext); } EX_CATCH { diff --git a/src/coreclr/src/debug/di/rspriv.h b/src/coreclr/src/debug/di/rspriv.h index d3de665..86df87a 100644 --- a/src/coreclr/src/debug/di/rspriv.h +++ b/src/coreclr/src/debug/di/rspriv.h @@ -4113,9 +4113,6 @@ private: // controls how metadata updated in the target is handled WriteableMetadataUpdateMode m_writableMetadataUpdateMode; - - // TODO: Comments - bool m_isBlockedOnGarbageCollectionEvent; }; // Some IMDArocess APIs are supported as interop-only. -- 2.7.4