On Thu, Sep 24, 2015 at 8:10 PM, Mark Logan <[email protected]> wrote:
> Is there any way to get a correctly decoded native (i.e. not js) stack
> trace, on Windows, from within C++ code that is called from javascript via
> the v8 api?
>
> I've noticed that stack traces captured by a crash reporter like BugSplat
> are bogus, and that the MSVS debugger is also incapable of decoding stacks
> that contain v8 frames. I assume that v8 uses cdecl, not stdcall, but I
> don't see why that would interfere with at least decoding return addresses
> correctly. However, all the stack traces I see wander off into nonsensical
> addresses, and never arrive back at main(), or whatever the thread entry
> point was.
>
> I've attached an example from the MSVS debugger at the end of the email.
>
> Thanks,
> Mark
>
>   iojs.dll!v8::internal::FunctionCallbackArguments::Call(void (const
> v8::FunctionCallbackInfo<v8::Value> &) * f) Line 34 C++
>   iojs.dll!v8::internal::HandleApiCallHelper<0>(v8::internal::Isolate *
> isolate, v8::internal::`anonymous-namespace'::BuiltinArguments<1> & args)
> Line 1111 C++
>   iojs.dll!v8::internal::Builtin_HandleApiCall(int args_length,
> v8::internal::Object * * args_object, v8::internal::Isolate * isolate) Line
> 1128 C++
>   000002300e9060bf() Unknown
>   iojs.dll!v8::internal::Builtin_HandleApiCall(int args_length,
> v8::internal::Object * * args_object, v8::internal::Isolate * isolate) Line
> 1128 C++
>   000002300e9196f5() Unknown
>   000000a64644ed68() Unknown
>   00000319801a4019() Unknown
>   000000bcd6a695d9() Unknown
>   000002300e933a50() Unknown
>   000003198019b831() Unknown
>   000002300e906001() Unknown
>   000000a64644ed20() Unknown
>   000000a64644edc8() Unknown
>   000002300ecaa7b5() Unknown
>   000003198019b831() Unknown
>   0000037fd67299b9() Unknown
>   000002d3013fdec1() Unknown
>   000003198019b831() Unknown
>   000000bcd6a695d9() Unknown
>   00000319801a43c9() Unknown
>   0000037fd67286a1() Unknown
>   0000031980104131() Unknown
>   0000037fd66d9dd1() Unknown
>   0000037fd66d7b19() Unknown
>   000000a64644ee20() Unknown
>   000002300eaebfa6() Unknown
>   0000037fd67086e1() Unknown
>   0000037fd67274d9() Unknown
>   0000031980104111() Unknown
>   0000031980104131() Unknown
>   0000037fd66d9dd1() Unknown
>   0000031980104131() Unknown
>   0000037fd67274d9() Unknown
>   0000037fd6708a49() Unknown
>   0000037fd6708719() Unknown
>   000000a64644ee68() Unknown
>   000002300eabda57() Unknown
>   0000037fd6706ab1() Unknown
>   000003198018c559() Unknown
>   0000000100000000() Unknown
>   0000037fd6727281() Unknown
>   0000000200000000() Unknown
>   000000bcd6ae8181() Unknown
>   000000bcd6a70139() Unknown
>   000000a64644ef18() Unknown
>   000002300e98018c() Unknown
>   0000037fd6706ab1() Unknown
>   00000319801043a1() Unknown
>   0000037fd6708ab1() Unknown
>   0000031980104131() Unknown
>   000000bcd6ae8181() Unknown
>   000001fe3fe73271() Unknown
>   00000319801043a1() Unknown
>   0000031980104131() Unknown
>   00000319801043a1() Unknown
>   00000319801043a1() Unknown
>   0000031980104111() Unknown
>   0000037fd6706da1() Unknown
>   0000031980104131() Unknown
>   0000031980104131() Unknown
>   0000000100000000() Unknown
>   0000037fd6708ab1() Unknown
>   0000031980104131() Unknown
>   0000037fd6727249() Unknown
>   000001fe3fe73271() Unknown
>   000000bcd6a70139() Unknown
>   000000a64644ef50() Unknown
>   000002300eadc1f0() Unknown
>   000003198017ae89() Unknown
>   0000037fd6706ab1() Unknown
>   000001fe3fe73271() Unknown
>   000000bcd6aec989() Unknown
>   000000bcd6ab1639() Unknown
>   000000a64644efa0() Unknown
>   000002300eab4318() Unknown
>   0000037fd6706ab1() Unknown
>   0000037fd6706c91() Unknown
>   0000031980104131() Unknown
>   000000bcd6aec989() Unknown
>   000000bcd6aceb51() Unknown
>   0000031980104361() Unknown
>   000000bcd6af2bf1() Unknown
>   000000bcd6aceb51() Unknown
>   000000a64644f000() Unknown
>   000002300ea88119() Unknown
>   0000037fd6706ab1() Unknown
>   0000037fd6706c91() Unknown
>   000000bcd6aec989() Unknown
>   0000031980104131() Unknown
>   000000bcd6af2bf1() Unknown
>   0000037fd6727161() Unknown
>   0000037fd6727099() Unknown
>   000000bcd6aec989() Unknown
>   000000bcd6a6a721() Unknown
>   000000bcd6aceb51() Unknown
>   000000a64644f038() Unknown
>   000002300e919f23() Unknown
>   00000319801a43c9() Unknown
>   000000bcd6a6a721() Unknown
>   000002300e919e21() Unknown
>   0000000800000000() Unknown

The machine code that V8 generates uses a custom calling convention
that's neither cdecl nor stdcall.  I'm not aware of any tooling (that
works on Windows) that knows how to decode the stack trace.

-- 
-- 
v8-users mailing list
[email protected]
http://groups.google.com/group/v8-users
--- 
You received this message because you are subscribed to the Google Groups 
"v8-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to