20220508064642_1.jpg
2.5 MB
一波截图留念,也不知道下次再开一把是什么时候了.jpg
汇报昨晚工作进度:
部分 syscall 导致的 triple fault 问题:通过使用 -d int 的相关输出得知为二次 GP Fault,相关错误行为排除时钟中断、寄存器更改和栈帧更改导致,逐指令执行到 iretq 时触发,可复现。具体原因有待进一步筛查。
如果有知道原因的师傅可以教教(
部分 syscall 导致的 triple fault 问题:通过使用 -d int 的相关输出得知为二次 GP Fault,相关错误行为排除时钟中断、寄存器更改和栈帧更改导致,逐指令执行到 iretq 时触发,可复现。具体原因有待进一步筛查。
如果有知道原因的师傅可以教教(
TimeAxis
汇报昨晚工作进度: 部分 syscall 导致的 triple fault 问题:通过使用 -d int 的相关输出得知为二次 GP Fault,相关错误行为排除时钟中断、寄存器更改和栈帧更改导致,逐指令执行到 iretq 时触发,可复现。具体原因有待进一步筛查。 如果有知道原因的师傅可以教教(
问题解决(?
原有中断处理栈:
但是当执行部分 syscall 的时候 rsp 已经到了
于是给 Syscall 单独开了一个更大的栈空间,问题顺利解决了……
PS:看某资料时候看到它的 Syscall 处理栈是动态从内核堆上开的空间,这操作秀到我了()
原有中断处理栈:
0xffffff0000160f78-0xffffff0000161f78但是当执行部分 syscall 的时候 rsp 已经到了
0xffffff0000160c98 ,于是继续到不论是 GP Fault 还是 Double Fault 的时候均因为栈的问题没有错误信息输出了,一直到 Triple Fault 直接 Reset 了……于是给 Syscall 单独开了一个更大的栈空间,问题顺利解决了……
PS:看某资料时候看到它的 Syscall 处理栈是动态从内核堆上开的空间,这操作秀到我了()