Skip to content

Commit

Permalink
src: enable stack trace printing for V8 check failures
Browse files Browse the repository at this point in the history
Example output:

    $ ./node --expose-gc test/addons/buffer-free-callback/test.js

    #
    # Fatal error in , line 0
    # Check failed: result.second.
    #
    #
    #
    #FailureMessage Object: 0x7ffebd956860
     1: 0x56290a45b105  [./node]
     2: 0x56290b305b77 V8_Fatal(char const*, ...) [./node]
     3: 0x56290a82702d v8::internal::GlobalBackingStoreRegistry::Register(std::shared_ptr<v8::internal::BackingStore>) [./node]
     4: 0x56290a59a1de v8::ArrayBuffer::GetBackingStore() [./node]
     5: 0x56290a3cb63f node::Buffer::New(node::Environment*, char*, unsigned long, void (*)(char*, void*), void*) [./node]
     6: 0x56290a3cbcdc node::Buffer::New(v8::Isolate*, char*, unsigned long, void (*)(char*, void*), void*) [./node]
     7: 0x7fdeabdfdf89 Alloc(v8::FunctionCallbackInfo<v8::Value> const&) [/home/xxxx/src/node/master/test/addons/buffer-free-callback/build/Release/binding.node]
     8: 0x56290a5ca077  [./node]
     9: 0x56290a5cbf97 v8::internal::Builtin_HandleApiCall(int, unsigned long*, v8::internal::Isolate*) [./node]
    10: 0x56290ad99539  [./node]
    Illegal instruction (core dumped)

PR-URL: #31079
Reviewed-By: Gireesh Punathil <gpunathi@in.ibm.com>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Richard Lau <riclau@uk.ibm.com>
Reviewed-By: Rich Trott <rtrott@gmail.com>
Reviewed-By: Michaël Zasso <targos@protonmail.com>
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Reviewed-By: Gus Caplan <me@gus.host>
Reviewed-By: James M Snell <jasnell@gmail.com>
  • Loading branch information
addaleax authored and BridgeAR committed Jan 3, 2020
1 parent 31bbae7 commit 54caadc
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 0 deletions.
8 changes: 8 additions & 0 deletions src/node_platform.cc
Original file line number Diff line number Diff line change
Expand Up @@ -485,6 +485,14 @@ TracingController* NodePlatform::GetTracingController() {
return tracing_controller_;
}

Platform::StackTracePrinter NodePlatform::GetStackTracePrinter() {
return []() {
fprintf(stderr, "\n");
DumpBacktrace(stderr);
fflush(stderr);
};
}

template <class T>
TaskQueue<T>::TaskQueue()
: lock_(), tasks_available_(), tasks_drained_(),
Expand Down
2 changes: 2 additions & 0 deletions src/node_platform.h
Original file line number Diff line number Diff line change
Expand Up @@ -169,6 +169,8 @@ class NodePlatform : public MultiIsolatePlatform {
std::shared_ptr<v8::TaskRunner> GetForegroundTaskRunner(
v8::Isolate* isolate) override;

Platform::StackTracePrinter GetStackTracePrinter() override;

private:
std::shared_ptr<PerIsolatePlatformData> ForIsolate(v8::Isolate* isolate);

Expand Down

0 comments on commit 54caadc

Please sign in to comment.