Current-Users archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: -current amd64 diagnostic panic while loading compat_linux32 module twice



On Fri, Feb 20, 2009 at 10:28:36PM +0100, Nicolas Joly wrote:

> I just encountered a reproductible diagnotic kernel panic while trying
> to load the compat_linux32 module twice on my -current amd64
> workstation.

Obviously this should not work, but you are not getting far enough for it
to not work properly :-)

> root@lanfeust [~]# modstat | grep linux
> root@lanfeust [~]# modload compat_linux
> root@lanfeust [~]# modload compat_linux32
> root@lanfeust [~]# modstat | grep linux
> compat_linux    misc    filesys 1       1147014 
> compat,compat_ossaudio,exec_elf64
> compat_linux32  misc    filesys 0       1059750 
> compat_linux,exec_elf32,compat_netbsd32
> root@lanfeust [~]# modload compat_linux32
> [...PANIC...]
> 
> panic: kernel diagnostic assertion "ch->ch_running > 0" failed: file 
> "/local/src/NetBSD/src/sys
> /kern/subr_callback.c", line 96
> fatal breakpoint trap in supervisor mode
> trap type 1 code 0 rip ffffffff80237f05 cs 8 rflags 246 cr2  7f7ffd805020 cpl 
> 0 rsp ffff800049f
> bf630
> Stopped in pid 549.1 (modload) at       netbsd:breakpoint+0x5:  leave
> db{1}> bt
> breakpoint() at netbsd:breakpoint+0x5
> panic() at netbsd:panic+0x249
> __kernassert() at netbsd:__kernassert+0x2d
> callback_run_roundrobin() at netbsd:callback_run_roundrobin+0x13d
> uvm_map_prepare() at netbsd:uvm_map_prepare+0x178
> uvm_map() at netbsd:uvm_map+0xd3
> uvm_km_alloc() at netbsd:uvm_km_alloc+0xb1

http://nxr.netbsd.org/source/xref/sys/arch/amd64/amd64/machdep.c#362

Can you try changing uvm_map_setup to uvm_map_setup_kernel and see if that
helps? If not print the vm_map structure with "show map module_map_store".

Curious: it looks like module_map is 20MB on amd64 and you are exhausting it
for some reason. What do objdump -h and size print on the modules you have
loaded? Do you have a lot of modules loaded?

Andrew


Home | Main Index | Thread Index | Old Index