From: hpayer Date: Tue, 12 May 2015 15:48:04 +0000 (-0700) Subject: Get more debugging data when crashing in Deoptimizer::GetOutputInfo. X-Git-Tag: upstream/4.7.83~2667 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=9dc99e9cc83fa44fe2aca3a66dddc1eb107fe59f;p=platform%2Fupstream%2Fv8.git Get more debugging data when crashing in Deoptimizer::GetOutputInfo. BUG= Review URL: https://codereview.chromium.org/1138493004 Cr-Commit-Position: refs/heads/master@{#28373} --- 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);