Skip to content

Commit f47b16f

Browse files
authored
[k2] add addresses bound check in backtrace (#1649)
1 parent 0a527c8 commit f47b16f

1 file changed

Lines changed: 5 additions & 3 deletions

File tree

runtime-light/stdlib/diagnostics/backtrace.cpp

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -50,9 +50,11 @@ size_t async_backtrace(std::span<void*> addresses) noexcept {
5050
auto* const start_sync_frame{reinterpret_cast<kphp::coro::stack_frame*>(STACK_FRAME_ADDRESS)};
5151
auto* const stop_sync_frame{async_stack_root.stop_sync_stack_frame};
5252

53-
const size_t num_sync_frames{sync_frames(addresses, start_sync_frame, stop_sync_frame)};
54-
const size_t num_async_frames{async_frames(addresses.subspan(num_sync_frames), async_stack_root.top_async_stack_frame)};
55-
return num_sync_frames + num_async_frames;
53+
size_t frames_count{sync_frames(addresses, start_sync_frame, stop_sync_frame)};
54+
if (frames_count < addresses.size()) {
55+
frames_count += async_frames(addresses.subspan(frames_count), async_stack_root.top_async_stack_frame);
56+
}
57+
return frames_count;
5658
}
5759
return 0;
5860
}

0 commit comments

Comments
 (0)