On Tue, Mar 18, 2025 at 01:14:40PM -0700, Song Liu wrote: > > > > See for example all the error conditions in the x86 version of > > arch_stack_walk_reliable() and in arch/x86/kernel/unwind_frame.c. > > I guess I missed this part: > > diff --git i/arch/arm64/kernel/stacktrace.c w/arch/arm64/kernel/stacktrace.c > index 69d0567a0c38..3bb8e3ea4c4b 100644 > --- i/arch/arm64/kernel/stacktrace.c > +++ w/arch/arm64/kernel/stacktrace.c > @@ -268,6 +268,8 @@ kunwind_next(struct kunwind_state *state) > case KUNWIND_SOURCE_TASK: > case KUNWIND_SOURCE_REGS_PC: > err = kunwind_next_frame_record(state); > + if (err && err != -ENOENT) > + state->common.unreliable = true; > break; > default: > err = -EINVAL; I still see some issues: - do_kunwind() -> kunwind_recover_return_address() can fail - do_kunwind() -> consume_state() can fail - even in the -ENOENT case the unreliable bit has already been set right before the call to kunwind_next_frame_record_meta(). -- Josh