我遇到了在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--------------