From 9dc99e9cc83fa44fe2aca3a66dddc1eb107fe59f Mon Sep 17 00:00:00 2001 From: hpayer Date: Tue, 12 May 2015 08:48:04 -0700 Subject: [PATCH] Get more debugging data when crashing in Deoptimizer::GetOutputInfo. BUG= Review URL: https://codereview.chromium.org/1138493004 Cr-Commit-Position: refs/heads/master@{#28373} --- src/deoptimizer.cc | 2 ++ src/isolate.cc | 9 +++------ src/isolate.h | 6 ++---- 3 files changed, 7 insertions(+), 10 deletions(-) diff --git a/src/deoptimizer.cc b/src/deoptimizer.cc index ed49133..f8c0b62 100644 --- a/src/deoptimizer.cc +++ b/src/deoptimizer.cc @@ -723,6 +723,8 @@ int Deoptimizer::GetOutputInfo(DeoptimizationOutputData* data, << "[method: " << shared->DebugName()->ToCString().get() << "]\n" << "[source:\n" << SourceCodeOf(shared) << "\n]" << std::endl; + shared->GetHeap()->isolate()->PushStackTraceAndDie(0xfefefefe, data, shared, + 0xfefefeff); FATAL("unable to find pc offset during deoptimization"); return -1; } diff --git a/src/isolate.cc b/src/isolate.cc index f958da5..a90f9c9 100644 --- a/src/isolate.cc +++ b/src/isolate.cc @@ -280,9 +280,7 @@ Handle Isolate::StackTraceString() { } -void Isolate::PushStackTraceAndDie(unsigned int magic, - Object* object, - Map* map, +void Isolate::PushStackTraceAndDie(unsigned int magic, void* ptr1, void* ptr2, unsigned int magic2) { const int kMaxStackTraceSize = 32 * KB; Handle trace = StackTraceString(); @@ -291,9 +289,8 @@ void Isolate::PushStackTraceAndDie(unsigned int magic, String::WriteToFlat(*trace, buffer, 0, length); buffer[length] = '\0'; // TODO(dcarney): convert buffer to utf8? - base::OS::PrintError("Stacktrace (%x-%x) %p %p: %s\n", magic, magic2, - static_cast(object), static_cast(map), - reinterpret_cast(buffer)); + base::OS::PrintError("Stacktrace (%x-%x) %p %p: %s\n", magic, magic2, ptr1, + ptr2, reinterpret_cast(buffer)); base::OS::Abort(); } diff --git a/src/isolate.h b/src/isolate.h index 749eb4f..ae38e71 100644 --- a/src/isolate.h +++ b/src/isolate.h @@ -718,10 +718,8 @@ class Isolate { PrintStackMode mode = kPrintStackVerbose); void PrintStack(FILE* out, PrintStackMode mode = kPrintStackVerbose); Handle StackTraceString(); - NO_INLINE(void PushStackTraceAndDie(unsigned int magic, - Object* object, - Map* map, - unsigned int magic2)); + NO_INLINE(void PushStackTraceAndDie(unsigned int magic, void* ptr1, + void* ptr2, unsigned int magic2)); Handle CaptureCurrentStackTrace( int frame_limit, StackTrace::StackTraceOptions options); -- 2.7.4