Add flag to check re-entrancy of JIT notification
authorEvgeny Pavlov <e.pavlov@samsung.com>
Wed, 27 Jul 2016 13:27:17 +0000 (16:27 +0300)
committerEvgeny Pavlov <e.pavlov@samsung.com>
Wed, 27 Jul 2016 13:27:17 +0000 (16:27 +0300)
src/vm/util.cpp

index 703564e..3ce26d6 100644 (file)
@@ -3361,6 +3361,7 @@ void InitializeClrNotifications()
 
 #if defined(FEATURE_GDBJIT)
 #include "gdbjit.h"
+__declspec(thread) bool tls_isSymReaderInProgress = false;
 #endif // FEATURE_GDBJIT
 
 // called from the runtime
@@ -3375,7 +3376,12 @@ void DACNotify::DoJITNotification(MethodDesc *MethodDescPtr)
     }
     CONTRACTL_END;
 #if defined(FEATURE_GDBJIT) && defined(FEATURE_PAL) && !defined(CROSSGEN_COMPILE)
-    NotifyGdb::MethodCompiled(MethodDescPtr);
+    if(!tls_isSymReaderInProgress)
+    {
+        tls_isSymReaderInProgress = true;
+        NotifyGdb::MethodCompiled(MethodDescPtr);
+        tls_isSymReaderInProgress = false;
+    }
 #endif    
     TADDR Args[2] = { JIT_NOTIFICATION, (TADDR) MethodDescPtr };
     DACNotifyExceptionHelper(Args, 2);