fix: backtrace: latest Rust will make ra = 0xffffffff when getting the first frame

This commit is contained in:
Paul Pan 2024-06-14 22:37:33 +08:00
parent 27deb3302a
commit 7757a174ce

View File

@ -18,7 +18,11 @@ impl FrameWalker {
fn is_valid(&self) -> bool {
let fp_valid = unsafe { BSS_START.as_virt_addr() <= self.current_fp && self.current_fp < BSS_END.as_virt_addr() };
let pc_valid = unsafe { TEXT_START.as_virt_addr() <= self.current_pc && self.current_pc < TEXT_END.as_virt_addr() };
fp_valid && pc_valid
// pc might be 0xffff_ffff in the first frame
let first = self.current_pc == VirtAddr(usize::MAX);
fp_valid && (pc_valid || first)
}
pub fn new() -> Self {