From 2e7525b741c3a44b63aee874b9f2de2df2ffb2f3 Mon Sep 17 00:00:00 2001 From: Vadim Sadokhov Date: Mon, 6 Jul 2026 12:43:06 +0300 Subject: [PATCH] add addresses bound check in backtrace --- runtime-light/stdlib/diagnostics/backtrace.cpp | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/runtime-light/stdlib/diagnostics/backtrace.cpp b/runtime-light/stdlib/diagnostics/backtrace.cpp index 6ec787e497..c12092a187 100644 --- a/runtime-light/stdlib/diagnostics/backtrace.cpp +++ b/runtime-light/stdlib/diagnostics/backtrace.cpp @@ -50,9 +50,11 @@ size_t async_backtrace(std::span addresses) noexcept { auto* const start_sync_frame{reinterpret_cast(STACK_FRAME_ADDRESS)}; auto* const stop_sync_frame{async_stack_root.stop_sync_stack_frame}; - const size_t num_sync_frames{sync_frames(addresses, start_sync_frame, stop_sync_frame)}; - const size_t num_async_frames{async_frames(addresses.subspan(num_sync_frames), async_stack_root.top_async_stack_frame)}; - return num_sync_frames + num_async_frames; + size_t frames_count{sync_frames(addresses, start_sync_frame, stop_sync_frame)}; + if (frames_count < addresses.size()) { + frames_count += async_frames(addresses.subspan(frames_count), async_stack_root.top_async_stack_frame); + } + return frames_count; } return 0; }