diff options
author | legendecas <legendecas@gmail.com> | 2019-12-01 19:13:33 +0300 |
---|---|---|
committer | Ruben Bridgewater <ruben@bridgewater.de> | 2019-12-26 00:29:57 +0300 |
commit | 8baee5e31102f7e3d8b30245f060e37dbd221f41 (patch) | |
tree | 1408810d3366e4503cef47a10c3d029517b30ca6 /src | |
parent | 359f590b8da55e54b78f65857df6bb1bcef2d352 (diff) |
src: prevent hard coding stack trace limit
Refer to Environment::stack_trace_limit() while printing fresh
stacktraces in c++ land.
PR-URL: https://github.com/nodejs/node/pull/30752
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Reviewed-By: Denys Otrishko <shishugi@gmail.com>
Reviewed-By: Ruben Bridgewater <ruben@bridgewater.de>
Diffstat (limited to 'src')
-rw-r--r-- | src/env.cc | 12 | ||||
-rw-r--r-- | src/env.h | 2 | ||||
-rw-r--r-- | src/node_errors.cc | 2 |
3 files changed, 9 insertions, 7 deletions
diff --git a/src/env.cc b/src/env.cc index 80f200e8cd3..482d2191fa2 100644 --- a/src/env.cc +++ b/src/env.cc @@ -592,9 +592,9 @@ void Environment::PrintSyncTrace() const { fprintf( stderr, "(node:%d) WARNING: Detected use of sync API\n", uv_os_getpid()); - PrintStackTrace( - isolate(), - StackTrace::CurrentStackTrace(isolate(), 10, StackTrace::kDetailed)); + PrintStackTrace(isolate(), + StackTrace::CurrentStackTrace( + isolate(), stack_trace_limit(), StackTrace::kDetailed)); } void Environment::RunCleanup() { @@ -949,9 +949,9 @@ void Environment::Exit(int exit_code) { fprintf( stderr, "WARNING: Exited the environment with code %d\n", exit_code); - PrintStackTrace( - isolate(), - StackTrace::CurrentStackTrace(isolate(), 10, StackTrace::kDetailed)); + PrintStackTrace(isolate(), + StackTrace::CurrentStackTrace( + isolate(), stack_trace_limit(), StackTrace::kDetailed)); } if (is_main_thread()) { stop_sub_worker_contexts(); diff --git a/src/env.h b/src/env.h index 150cdf0fb1e..6d3522bcd5e 100644 --- a/src/env.h +++ b/src/env.h @@ -1234,6 +1234,8 @@ class Environment : public MemoryRetainer { inline void modify_base_object_count(int64_t delta); inline int64_t base_object_count() const; + inline int32_t stack_trace_limit() const { return 10; } + #if HAVE_INSPECTOR void set_coverage_connection( std::unique_ptr<profiler::V8CoverageConnection> connection); diff --git a/src/node_errors.cc b/src/node_errors.cc index 9474fbb1131..7e23fca28df 100644 --- a/src/node_errors.cc +++ b/src/node_errors.cc @@ -145,7 +145,7 @@ static std::string GetErrorSource(Isolate* isolate, } void PrintStackTrace(Isolate* isolate, Local<StackTrace> stack) { - for (int i = 0; i < stack->GetFrameCount() - 1; i++) { + for (int i = 0; i < stack->GetFrameCount(); i++) { Local<StackFrame> stack_frame = stack->GetFrame(isolate, i); node::Utf8Value fn_name_s(isolate, stack_frame->GetFunctionName()); node::Utf8Value script_name(isolate, stack_frame->GetScriptName()); |