On 28-Mar-2002 Poul-Henning Kamp wrote:
> On a diskless machine:
>       ktrace ntpdate -d $someserver
> gives an sure-fire panic:
> ../../../kern/kern_synch.c:429: sleeping with "process lock" locked from
> ../../.
> ./kern/subr_trap.c:76
> Debugger("witness_sleep")
> Stopped at      Debugger+0x40:  xorl    %eax,%eax
> db> trace
> Debugger(c02f20c0) at Debugger+0x40
> witness_sleep(0,0,c02eeef8,1ad) at witness_sleep+0xfb
> msleep(ccdfd2d8,0,4d,c02fbfce,0) at msleep+0x72
> nfs_flush(ccdfd294,cce37980,1,cce25700,1) at nfs_flush+0x663
> nfs_fsync(cce5cab4) at nfs_fsync+0x19
> vinvalbuf(ccdfd294,1,cce37980,cce25700,0,0) at vinvalbuf+0x9f
> nfs_vinvalbuf(ccdfd294,1,cce37980,cce25700,1) at nfs_vinvalbuf+0x114
> nfs_write(cce5cbec,ccde6a40,cce25600,cce25888,cce5cbec) at nfs_write+0x120
> ktrwrite(ccdfd294,ccde6a40,0,5) at ktrwrite+0x101
> ktrpsig(ccdfd294,e,804a6b4,cce25888,0) at ktrpsig+0x78
> postsig(e) at postsig+0xaa
> userret(cce25700,cce5cd48,11,0,0) at userret+0x4a
> syscall(2f,2f,2f,0,0) at syscall+0x2b4
> syscall_with_err_pushed() at syscall_with_err_pushed+0x1b
> --- syscall (4, FreeBSD ELF, write), eip = 0x280aac83, esp = 0xbfbffb50, ebp
> = 0
> xbfbffb9c ---
> db> 

Ktrace is evil and vile in this respect, so for now, don't use it. :)  The fix
is to move all the actual ktrwrite() stuff off into a worker async thread. 
I've done most of this (the ktrgenio needs some extra work still to properly
synchronize so events don't get out of order) however, I need to finish the
td_ucred stuff and then I can get back and finish it.  It is next on the plate
after td_ucred is done.


John Baldwin <[EMAIL PROTECTED]>  <><  http://www.FreeBSD.org/~jhb/
"Power Users Use the Power to Serve!"  -  http://www.FreeBSD.org/

To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-current" in the body of the message

Reply via email to