经过输出日志,确认代码卡在下面unsafe代码块内
下面的代码属于try_to_run_init_process(“/bin/dragonreach”, &mut trap_frame)中的do_execve中push_at(&mut ustack_message)中的self.push_str(ustack, &self.proc_name)的push_slice
经过输出日志,确认代码卡在下面unsafe代码块内
好像是没读到初始化程序,输出proc_name是空的
个人感觉应该是别的地方存在一些问题,因为这个地方大概率是不会出错的
你是说virtio mmio出问题?那个好像不关事,只是x86_64平台没有所以会报个错
smallcjy/test 运行截图
一个能进内核的分支的串行输出
可见好像和mmio没有关系。如果你的报错与此不一样,请提供相应错误输出?
检查到错误发生的地方了,lo网卡会持续不断的接收到数据包,因此造成系统停滞的假象,系统是不是有轮询网卡并对其发包的机制?
该bug解决,复盘debug过程:通过输出日志发现,lo网卡不断接收到数据包,但是实际上没有向lo网卡发包的工作。经过检查代码发现,系统设置定时器会定时检查网卡的rxqueue内有没有待接收的数据包,如果这个队列为空时,需要返回None值给协议层来通知没有待接收的数据包。