{
*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);
public ICorDebugProcess5,
public ICorDebugProcess7,
public ICorDebugProcess8,
- public ICorDebugProcess10,
public ICorDebugProcess11,
public IDacDbiInterface::IAllocator,
public IDacDbiInterface::IMetaDataLookup,
COM_METHOD EnableExceptionCallbacksOutsideOfMyCode(BOOL enableExceptionsOutsideOfJMC);
//-----------------------------------------------------------
- // ICorDebugProcess10
+ // ICorDebugProcess10 (To be removed in .NET 6, in a separate cleanup PR)
//-----------------------------------------------------------
COM_METHOD EnableGCNotificationEvents(BOOL fEnable);
// 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())
#endif // DEBUGGING_SUPPORTED
)
{