求助:lo网卡注册用户态初始化卡住

经过输出日志,确认代码卡在下面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

好像是没读到初始化程序,输出proc_name是空的

个人感觉应该是别的地方存在一些问题,因为这个地方大概率是不会出错的


好像是这里出了问题,可是为啥向NET_DEVICES添加东西会导致内存错误

你是说virtio mmio出问题?那个好像不关事,只是x86_64平台没有所以会报个错

可见好像和mmio没有关系。如果你的报错与此不一样,请提供相应错误输出?

检查到错误发生的地方了,lo网卡会持续不断的接收到数据包,因此造成系统停滞的假象,系统是不是有轮询网卡并对其发包的机制?

该bug解决,复盘debug过程:通过输出日志发现,lo网卡不断接收到数据包,但是实际上没有向lo网卡发包的工作。经过检查代码发现,系统设置定时器会定时检查网卡的rxqueue内有没有待接收的数据包,如果这个队列为空时,需要返回None值给协议层来通知没有待接收的数据包。