Bug A 修复:ltp-musl RISC-V 递归陷入风暴卡死整组
根因(证据锁定):sys_perf_event_open 用 core::ptr::read_unaligned 直接解引用用户态 attr_ptr。S 态在 SUM 未置位时从 U=1 用户页加载会触发缺页;而 __alltraps 不处理嵌套内核态陷入,缺页演变成递归陷入风暴,卡死 ltp-musl 整组及其后所有组(4150 分大池子全 0)。
证据:gdb 在官方镜像 :20260510 抓到原始嵌套 S 态陷入 sepc=0x802a802a scause=0xd(LoadPageFault) stval=0x7ffffa71 a0=0x7ffffa70(用户地址) SPP=1;riscv64-linux-musl-addr2line 解析内联链 read_unaligned<u32> ← sys_perf_event_open (perf_event.rs:253)。
修法(对标 Linux copy_from_user):改走内核统一的译址拷贝助手 crate::syscall::user::read_user_buffer 读 attr 头部(16B)与可选 flags(偏移40, 8B),坏地址返回 -EFAULT。
验证(官方镜像 :20260510):make all RC=0 双 ELF;SLICE_GROUPS=ltp-musl RV 现已通过 accept03 的 accept() on perf event 子测例(TPASS ENOTSOCK)并继续跑到 adjtimex(串口 8901→40956 持续增长,无风暴);gdb 条件断点(__alltraps 处 S 态异常)在 perf_event 窗口 0 命中;LA 引导正常,basic-musl 跑到 GROUP END 干净关机。