Skip to content

Commit 8baee5e

Browse files
legendecasBridgeAR
authored andcommitted
src: prevent hard coding stack trace limit
Refer to Environment::stack_trace_limit() while printing fresh stacktraces in c++ land. PR-URL: #30752 Reviewed-By: Anna Henningsen <[email protected]> Reviewed-By: Denys Otrishko <[email protected]> Reviewed-By: Ruben Bridgewater <[email protected]>
1 parent 359f590 commit 8baee5e

6 files changed

+12
-7
lines changed

src/env.cc

+6-6
Original file line numberDiff line numberDiff line change
@@ -592,9 +592,9 @@ void Environment::PrintSyncTrace() const {
592592

593593
fprintf(
594594
stderr, "(node:%d) WARNING: Detected use of sync API\n", uv_os_getpid());
595-
PrintStackTrace(
596-
isolate(),
597-
StackTrace::CurrentStackTrace(isolate(), 10, StackTrace::kDetailed));
595+
PrintStackTrace(isolate(),
596+
StackTrace::CurrentStackTrace(
597+
isolate(), stack_trace_limit(), StackTrace::kDetailed));
598598
}
599599

600600
void Environment::RunCleanup() {
@@ -949,9 +949,9 @@ void Environment::Exit(int exit_code) {
949949

950950
fprintf(
951951
stderr, "WARNING: Exited the environment with code %d\n", exit_code);
952-
PrintStackTrace(
953-
isolate(),
954-
StackTrace::CurrentStackTrace(isolate(), 10, StackTrace::kDetailed));
952+
PrintStackTrace(isolate(),
953+
StackTrace::CurrentStackTrace(
954+
isolate(), stack_trace_limit(), StackTrace::kDetailed));
955955
}
956956
if (is_main_thread()) {
957957
stop_sub_worker_contexts();

src/env.h

+2
Original file line numberDiff line numberDiff line change
@@ -1234,6 +1234,8 @@ class Environment : public MemoryRetainer {
12341234
inline void modify_base_object_count(int64_t delta);
12351235
inline int64_t base_object_count() const;
12361236

1237+
inline int32_t stack_trace_limit() const { return 10; }
1238+
12371239
#if HAVE_INSPECTOR
12381240
void set_coverage_connection(
12391241
std::unique_ptr<profiler::V8CoverageConnection> connection);

src/node_errors.cc

+1-1
Original file line numberDiff line numberDiff line change
@@ -145,7 +145,7 @@ static std::string GetErrorSource(Isolate* isolate,
145145
}
146146

147147
void PrintStackTrace(Isolate* isolate, Local<StackTrace> stack) {
148-
for (int i = 0; i < stack->GetFrameCount() - 1; i++) {
148+
for (int i = 0; i < stack->GetFrameCount(); i++) {
149149
Local<StackFrame> stack_frame = stack->GetFrame(isolate, i);
150150
node::Utf8Value fn_name_s(isolate, stack_frame->GetFunctionName());
151151
node::Utf8Value script_name(isolate, stack_frame->GetScriptName());

test/message/throw_error_with_getter_throw_traced.out

+1
Original file line numberDiff line numberDiff line change
@@ -10,3 +10,4 @@ Thrown at:
1010
at Module.load (internal/modules/cjs/loader.js:*:*)
1111
at Module._load (internal/modules/cjs/loader.js:*:*)
1212
at executeUserEntryPoint (internal/modules/run_main.js:*:*)
13+
at internal/main/run_main_module.js:*:*

test/message/throw_null_traced.out

+1
Original file line numberDiff line numberDiff line change
@@ -10,3 +10,4 @@ Thrown at:
1010
at Module.load (internal/modules/cjs/loader.js:*:*)
1111
at Module._load (internal/modules/cjs/loader.js:*:*)
1212
at executeUserEntryPoint (internal/modules/run_main.js:*:*)
13+
at internal/main/run_main_module.js:*:*

test/message/throw_undefined_traced.out

+1
Original file line numberDiff line numberDiff line change
@@ -10,3 +10,4 @@ Thrown at:
1010
at Module.load (internal/modules/cjs/loader.js:*:*)
1111
at Module._load (internal/modules/cjs/loader.js:*:*)
1212
at executeUserEntryPoint (internal/modules/run_main.js:*:*)
13+
at internal/main/run_main_module.js:*:*

0 commit comments

Comments
 (0)