Port-ofppc archive

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

Re: Current port status



matthew green wrote:

>> > panic: kernel diagnostic assertion "cur->pcg_avail == cur->pcg_size"
>> > failed: file "/usr/src/sys/kern/subr_pool.c", line 2573 [...]
> what kernel options do you use?  i am using these, plus more:
>
> include "arch/ofppc/conf/GENERIC"
> options         DEBUG
> options         LOCKDEBUG
> options         DIAGNOSTIC
> options         KMEM_GUARD_DEPTH=0x1000

Ok, now I can reproduce it! Sorry, I should have noticed that this output
can only occur with DEBUG and/or DIAGNOSTIC. :)

I don't think it has something to do with pools or NFS, but more likely with
the vr(4) driver. I could reproduce all kinds of kernel-assertion- and
lockdebug-panics with a simple FTP transfer over vr(4).

For example I could reproduce a similar diagnostic assertion as yours after
running into the infamous "vr0: device timeout" during an FTP file
transfer. Then I pressed CTRL-C to break, and this happened (manually
copied from screen):

ftp> get etc.tgz
vr0: device timeout
...
CTRL-C
receive aborted. Waiting for remote to finish abort.
panic: kernel diagnostic assertion "cur->pcg_avail == cur->pcg_size" failed:
file "/home/frank/netbsd/current/src/sys/kern/subr_pool.c", line 2573
...
db> bt
vpanic+0x21c
kern_assert+0x68
pool_cache_put_slow+0x30c
pool_cache_put_paddr+0x18c
m_ext_free+0xf0
soreceive+0xcc4
soo_read+0x28
dofileread+0x8c
syscall_plain+0x1f8
user SC trap #3 by 0xfde30b3c

Not a real indication of vr(4) there, but here is another one, also during
an FTP receive (there is a vr_start in it):

panic: kernel diagnostic assertion "object != NULL" failed: file
"/home/frank/netbsd/current/src/sys/kern/subr_pool.c", line 2475 
cpu0: Begin traceback...
0xa941d970: at kern_assert+0x68
0xa941d9b0: at pool_cache_get_paddr+0x214
0xa941da00: at m_get+0x3c
0xa941da10: at m_gethdr+0xc
0xa941da20: at vr_start+0xe4
0xa941da80: at ifq_enqueue+0xd0
0xa941daa0: at ether_output+0x324
0xa941daf0: at ip_output+0xab8
0xa941dba0: at tcp_output+0x11f4
0xa941dc70: at tcp_input+0x1038
0xa941de50: at ip_input+0x368
0xa941de80: at ipintr+0xdc
0xa941dec0: at softint_dispatch+0x158
0xa941df20: at softint_fast_dispatch+0xdc
0xa941dfe4: at 0x59e3ba90
trap: kernel read DSI trap @ 0xa932cfe4 by 0x140d58 (DSISR 0x40000000,
err=14), lr 0x141370
Press a key to panic.

And finally the most frequent panic for me is a lockdebug-panic, which might
indicate that vr(4) is locking the same mutex during a soft-interrupt
(vr_start), and then again during a hardware-interrupt (vr_intr)?

---8<---
Mutex error: lockdebug_wantlock: locking against myself

lock address : 0x00000000a002b074 type     :               spin
initialized  : 0x0000000000329424
shared holds :                  0 exclusive:                  1
shares wanted:                  0 exclusive:                  1
current cpu  :                  0 last held:                  0
current lwp  : 0x00000000a0094840 last held: 0x00000000a0094840
last locked* : 0x0000000000329950 unlocked : 0x0000000000329acc
owner field  : 000000000000000000 wait/spin:                0/1

panic: LOCKDEBUG
cpu0: Begin traceback...
0xa941d540: at panic+0x4c
0xa941d580: at lockdebug_abort1+0xdc
0xa941d5a0: at mutex_enter+0x32c
0xa941d5e0: at pool_get+0x7c
0xa941d620: at pool_cache_get_slow+0x214
0xa941d650: at pool_cache_get_paddr+0x290
0xa941d6a0: at m_get+0x3c
0xa941d6b0: at m_gethdr+0xc
0xa941d6c0: at vr_rxeof+0x3c8
0xa941d730: at vr_intr+0x314
0xa941d770: at intr_deliver+0x7c
0xa941d7b0: at pic_handle_intr+0x1ac
0xa941d800: at trapstart+0x684
0xa941d8d0: at lockdebug_locked+0x238
0xa941d8f0: at lockdebug_unlocked+0x88
0xa941d920: at mutex_exit+0x194
0xa941d940: at pool_get+0x1f8
0xa941d980: at pool_cache_get_slow+0x214
0xa941d9b0: at pool_cache_get_paddr+0x290
0xa941da00: at m_get+0x3c
0xa941da10: at m_gethdr+0xc
0xa941da20: at vr_start+0xe4
0xa941da80: at ifq_enqueue+0xd0
0xa941daa0: at ether_output+0x324
0xa941daf0: at ip_output+0xab8
0xa941dba0: at tcp_output+0x11f4
0xa941dc70: at tcp_input+0x1038
0xa941de50: at ip_input+0x368
0xa941de80: at ipintr+0xdc
0xa941dec0: at softint_dispatch+0x158
0xa941df20: at softint_fast_dispatch+0xdc
0xa941dfe4: at 0x59e3ba90
trap: kernel read DSI trap @ 0xa932cfe4 by 0x140d58 (DSISR 0x40000000,
err=14), lr 0x141370
Press a key to panic.
---8<---

The final prove for me that it is a vr(4)-related problem is that when I
switch to mvgbe(4) the problems disappear!

I can reproduce the vr(4) panics 100%. Just connect to a (local) FTP server
and start transfering the binary/sets archives.

-- 
Frank Wille



Home | Main Index | Thread Index | Old Index