Commit 8d00c2ca authored by gib's avatar gib Committed by Commit bot

Stop profiler on isolate teardown if still running

If the profiler is started via the API and not stopped, V8 will
 intermittently crash during isolate teardown.

The fix is to run the DeleteAllProfiles function in Isolate::Deinit()
 if cpu_profiler_ still exists.

https://groups.google.com/forum/#!topic/v8-dev/WsIlpbaD4mo

TEST= Run in debug mode, if you start a profile and don't stop it,
 this assert should fail:

  Fatal error in ../src/profiler/cpu-profiler.cc, line 414
  Check failed: !is_profiling_.

Review URL: https://codereview.chromium.org/1526253005

Cr-Commit-Position: refs/heads/master@{#32953}
parent d9ffa305
...@@ -1895,6 +1895,10 @@ void Isolate::Deinit() { ...@@ -1895,6 +1895,10 @@ void Isolate::Deinit() {
PrintF(stdout, "=== Stress deopt counter: %u\n", stress_deopt_count_); PrintF(stdout, "=== Stress deopt counter: %u\n", stress_deopt_count_);
} }
if (cpu_profiler_) {
cpu_profiler_->DeleteAllProfiles();
}
// We must stop the logger before we tear down other components. // We must stop the logger before we tear down other components.
Sampler* sampler = logger_->sampler(); Sampler* sampler = logger_->sampler();
if (sampler && sampler->IsActive()) sampler->Stop(); if (sampler && sampler->IsActive()) sampler->Stop();
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment