我遇到了在 MIPS 上运行的 NetBSD 5 内核崩溃。从恐慌字符串来看,我们似乎被困在内核线程中,永远无法摆脱它。
来自 mini-core 的堆栈跟踪(见下文)中的函数是不相关的函数。根据代码,两个函数调用都没有调用者-被调用者关系。据我了解, genfs_getpages() 是一个页面错误处理例程,允许休眠/阻塞,直到请求完成。欢迎任何帮助我理解此堆栈跟踪的想法。
认为两种不同类型的中断(下半部分)被安排在内核线程上而第一个仍未完成,这似乎有点愚蠢。
panic string is :No context switch for too long
sys/netmy/if_lip.c:2627: 8038f13c <check_my_vlt_mrtmsync_pkt+0x34>:
sys/net/route.c:3552: 802f7e38 <mySetPeerRouting>:
sys/kern/kern_lwp.c:1467: 80263b60 <lwp_initspecific>:
sys/uvm_mips/uvm_amap.c:183: 80224190 <amap_alloc+0x8>:
sys/net/route.c:2156: 802fafbc <my_rtalloc1_xten+0x13c>:
sys/miscfs/genfs/genfs_io.c:313: 802e5860 <genfs_getpages+0x2a8>:
sys/net/if.c:3685: 802eed08 <my_gen_ctl_request+0x588>:
sys/net/if.c:1690: 802efcfc <if_slowtimo+0x84>:
sys/miscfs/genfs/genfs_io.c:200: 802e5700 <genfs_getpages+0x148>:
sys/miscfs/genfs/genfs_vnops.c:416: 802e67fc <filt_genfsvnode+0x4>:
sys/net/if_ethersubr.c:585: 802f37a0 <ether_output+0xa68>:
sys/dev/clockctl.c:105: 80241bc0 <clockctlioctl+0xc8>:
sys/uvm_mips/uvm_object.c:145: 80234c58 <uobj_unwirepages+0x18>:
sys/net/if.c:1915: 802f00d0 <ifioctl_common+0x2d0>:
sys/miscfs/genfs/genfs_io.c:76: 802e5a0c <genfs_getpages+0x454>:
------------KERNEL PROBABLY LOOPING AROUND HERE--------------