diff --git a/Kernel/Thread.cpp b/Kernel/Thread.cpp index 65e7c489ba5..12c34c1a75d 100644 --- a/Kernel/Thread.cpp +++ b/Kernel/Thread.cpp @@ -29,6 +29,7 @@ #include #include #include +#include #include #include #include @@ -798,11 +799,13 @@ Vector Thread::raw_backtrace(u32 ebp) const { auto& process = const_cast(this->process()); ProcessPagingScope paging_scope(process); - Vector backtrace; + Vector backtrace; backtrace.append(ebp); for (u32* stack_ptr = (u32*)ebp; process.validate_read_from_kernel(VirtualAddress((u32)stack_ptr), sizeof(void*) * 2); stack_ptr = (u32*)*stack_ptr) { u32 retaddr = stack_ptr[1]; backtrace.append(retaddr); + if (backtrace.size() == Profiling::max_stack_frame_count) + break; } return backtrace; }