Make s_numberOfSessions Volatile as advertisement to other devs that the data is...
authorJosé Rivero <jorive@microsoft.com>
Tue, 25 Jun 2019 03:31:14 +0000 (20:31 -0700)
committerGitHub <noreply@github.com>
Tue, 25 Jun 2019 03:31:14 +0000 (20:31 -0700)
Commit migrated from https://github.com/dotnet/coreclr/commit/46b22d8706a17d48de1259b3cd75a55903bd2dfd

src/coreclr/src/vm/eventpipe.cpp
src/coreclr/src/vm/eventpipe.h

index fc29160..eb8734f 100644 (file)
@@ -36,7 +36,7 @@ VolatilePtr<EventPipeSession> EventPipe::s_pSessions[MaxNumberOfSessions];
 #ifndef FEATURE_PAL
 unsigned int * EventPipe::s_pProcGroupOffsets = nullptr;
 #endif
-uint32_t EventPipe::s_numberOfSessions = 0;
+Volatile<uint32_t> EventPipe::s_numberOfSessions(0);
 
 // This function is auto-generated from /src/scripts/genEventPipe.py
 #ifdef FEATURE_PAL
@@ -238,7 +238,7 @@ bool EventPipe::EnableInternal(
         return false;
     }
 
-    if (s_numberOfSessions > MaxNumberOfSessions)
+    if (s_numberOfSessions >= MaxNumberOfSessions)
     {
         _ASSERTE(!"Max number of sessions reached.");
         return false;
index 4089d90..9889abc 100644 (file)
@@ -63,7 +63,7 @@ public:
     static bool Enabled()
     {
         LIMITED_METHOD_CONTRACT;
-        return s_tracingInitialized && (s_numberOfSessions > 0);
+        return s_tracingInitialized && (s_numberOfSessions.LoadWithoutBarrier() > 0);
     }
 
     // Create a provider.
@@ -206,7 +206,7 @@ private:
 #ifndef FEATURE_PAL
     static unsigned int * s_pProcGroupOffsets;
 #endif
-    static uint32_t s_numberOfSessions;
+    static Volatile<uint32_t> s_numberOfSessions;
 };
 
 static_assert(EventPipe::MaxNumberOfSessions == 64, "Maximum number of EventPipe sessions is not 64.");