From 7951e6b6d4220d9637200d8dea28f8f1a0f44795 Mon Sep 17 00:00:00 2001 From: Gibson Fahnestock Date: Mon, 1 Feb 2016 12:13:28 +0000 Subject: [PATCH] deps: backport 8d00c2c from v8 upstream MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Original commit message: ``` 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} ``` PR-URL: https://github.com/nodejs/node/pull/5024 Reviewed-By: Ben Noordhuis Reviewed-By: Colin Ihrig Reviewed-By: Michaƫl Zasso --- deps/v8/src/isolate.cc | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/deps/v8/src/isolate.cc b/deps/v8/src/isolate.cc index 186a4935823ae6..36fdcf28f205eb 100644 --- a/deps/v8/src/isolate.cc +++ b/deps/v8/src/isolate.cc @@ -1907,6 +1907,10 @@ void Isolate::Deinit() { 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. Sampler* sampler = logger_->sampler(); if (sampler && sampler->IsActive()) sampler->Stop();