Reviewers: Vitaly Repeshko,

Description:
In ProfilerSignalHandler ensure that thread we are trying to sample locked the
isolate.

BUG=http://crbug.com/77725

Please review this at http://codereview.chromium.org/6837028/

SVN Base: https://v8.googlecode.com/svn/branches/bleeding_edge

Affected files:
  M src/platform-freebsd.cc
  M src/platform-linux.cc


Index: src/platform-freebsd.cc
diff --git a/src/platform-freebsd.cc b/src/platform-freebsd.cc
index ca4e54f6fca5501951d949f9019f2f275cfdf6ba..8b83f2bd6cb1c85a34e4a3476bbe8366194b6f94 100644
--- a/src/platform-freebsd.cc
+++ b/src/platform-freebsd.cc
@@ -642,6 +642,11 @@ static void ProfilerSignalHandler(int signal, siginfo_t* info, void* context) {
     // We require a fully initialized and entered isolate.
     return;
   }
+  if (v8::Locker::IsActive() &&
+      !isolate->thread_manager()->IsLockedByCurrentThread()) {
+    return;
+  }
+
   Sampler* sampler = isolate->logger()->sampler();
   if (sampler == NULL || !sampler->IsActive()) return;

Index: src/platform-linux.cc
diff --git a/src/platform-linux.cc b/src/platform-linux.cc
index e2ab9d81b40c78064733a7ae7fe6a5f9c24ada87..1ecd8fc81b08b05a7dad8f2495255ec37db95091 100644
--- a/src/platform-linux.cc
+++ b/src/platform-linux.cc
@@ -853,6 +853,11 @@ static void ProfilerSignalHandler(int signal, siginfo_t* info, void* context) {
     // We require a fully initialized and entered isolate.
     return;
   }
+  if (v8::Locker::IsActive() &&
+      !isolate->thread_manager()->IsLockedByCurrentThread()) {
+    return;
+  }
+
   Sampler* sampler = isolate->logger()->sampler();
   if (sampler == NULL || !sampler->IsActive()) return;



--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev

Reply via email to