Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 0 additions & 4 deletions src/coreclr/src/debug/di/process.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2169,10 +2169,6 @@ HRESULT CordbProcess::QueryInterface(REFIID id, void **pInterface)
{
*pInterface = static_cast<ICorDebugProcess8*>(this);
}
else if (id == IID_ICorDebugProcess10)
{
*pInterface = static_cast<ICorDebugProcess10*>(this);
}
else if (id == IID_ICorDebugProcess11)
{
*pInterface = static_cast<ICorDebugProcess11*>(this);
Expand Down
3 changes: 1 addition & 2 deletions src/coreclr/src/debug/di/rspriv.h
Original file line number Diff line number Diff line change
Expand Up @@ -2929,7 +2929,6 @@ class CordbProcess :
public ICorDebugProcess5,
public ICorDebugProcess7,
public ICorDebugProcess8,
public ICorDebugProcess10,
public ICorDebugProcess11,
public IDacDbiInterface::IAllocator,
public IDacDbiInterface::IMetaDataLookup,
Expand Down Expand Up @@ -3140,7 +3139,7 @@ class CordbProcess :
COM_METHOD EnableExceptionCallbacksOutsideOfMyCode(BOOL enableExceptionsOutsideOfJMC);

//-----------------------------------------------------------
// ICorDebugProcess10
// ICorDebugProcess10 (To be removed in .NET 6, in a separate cleanup PR)
//-----------------------------------------------------------
COM_METHOD EnableGCNotificationEvents(BOOL fEnable);

Expand Down
11 changes: 1 addition & 10 deletions src/coreclr/src/vm/threadsuspend.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -5943,16 +5943,7 @@ void ThreadSuspend::SuspendEE(SUSPEND_REASON reason)
// that there is a thread which appears to be stopped at a gc
// safe point, but which really is not. If that is the case,
// back off and try again.
//
// When the debugger is synchronizing, trying to perform a GC could deadlock. The GC has the
// threadstore lock and synchronization cannot complete until the debugger can get the
// threadstore lock. However the GC can not complete until it sends the BeforeGarbageCollection
// event, and the event can not be sent until the debugger is synchronized. In order to break
// this deadlock cycle the GC must give up the threadstore lock, allow the debugger to synchronize,
// then try again.
//
|| (CORDebuggerAttached() &&
(g_pDebugInterface->ThreadsAtUnsafePlaces() || g_pDebugInterface->IsSynchronizing()))
|| (CORDebuggerAttached() && g_pDebugInterface->ThreadsAtUnsafePlaces())
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is a simplification of @kouvel's change as proposed in #44539 (comment)

#endif // DEBUGGING_SUPPORTED
)
{
Expand Down