_ASSERTE((size_t)m_MonitorHeld & 1);
_ASSERTE(m_Recursion >= 1);
-#if defined(_DEBUG) && defined(TRACK_SYNC)
+#if defined(_DEBUG) && defined(TRACK_SYNC) && !defined(CROSSGEN_COMPILE)
// The best place to grab this is from the ECall frame
Frame *pFrame = pCurThread->GetFrame();
int caller = (pFrame && pFrame != FRAME_TOP ? (int) pFrame->GetReturnAddress() : -1);
STRESS_LOG4(LF_SYNC, LL_INFO100, "Dbg_TrackSyncStack::EnterSync, IP=%p, Recursion=%d, MonitorHeld=%d, HoldingThread=%p.\n",
caller,
((AwareLock*)pAwareLock)->m_Recursion,
- ((AwareLock*)pAwareLock)->m_MonitorHeld,
+ ((AwareLock*)pAwareLock)->m_MonitorHeld.LoadWithoutBarrier(),
((AwareLock*)pAwareLock)->m_HoldingThread );
if (m_Active)
STRESS_LOG4(LF_SYNC, LL_INFO100, "Dbg_TrackSyncStack::LeaveSync, IP=%p, Recursion=%d, MonitorHeld=%d, HoldingThread=%p.\n",
caller,
((AwareLock*)pAwareLock)->m_Recursion,
- ((AwareLock*)pAwareLock)->m_MonitorHeld,
+ ((AwareLock*)pAwareLock)->m_MonitorHeld.LoadWithoutBarrier(),
((AwareLock*)pAwareLock)->m_HoldingThread );
if (m_Active)
// Each thread has a stack that tracks all enter and leave requests
struct Dbg_TrackSync
{
+ virtual ~Dbg_TrackSync() = default;
+
virtual void EnterSync (UINT_PTR caller, void *pAwareLock) = 0;
virtual void LeaveSync (UINT_PTR caller, void *pAwareLock) = 0;
};