Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 3 Oct 1996 23:47:42 +1000
From:      Bruce Evans <bde@zeta.org.au>
To:        dfr@render.com, julian@freefall.freebsd.org
Cc:        current@freefall.freebsd.org
Subject:   Re: HELP!! kernel deadlock found..
Message-ID:  <199610031347.XAA16899@godzilla.zeta.org.au>

next in thread | raw e-mail | index | archive | help
>It looks as if N+2 is attempting to perform a pathname lookup while it has
>a locked vnode.

I usually "solve" ufslk2 hangs by rebooting.  There was one longstanding
reproducible one that seems to be fixed now.  The following script is
supposed to exercise a bug in rename() for ufs, but the system usually
used to hang on ufslk2.  I saw the bug once and hangs many times in 20+
hours of testing.  Today I've seen the bug twice and no hangs in 4 hours
of testing.
---
#!/bin/sh
a=/tmp/foo.now
b=/tmp/foo.prev
while true
do
        for n in 1 2 3 4 5 6 7 8 9 0
        do
                (mv $a $b ; touch $a) &
        done
        wait
done
---

>> if anyone knows how to examine an arbitrary process stacktrace
>> I'd like to hear about it.......

The proc struct contains a pointer to the pcb and the pcb contains the
call-saved registers for savectx() including %esp and %ebp.  %ebp is
actually for savectx()'s caller.

BTW, what should happen if the pcb (or other data that you're looking
at) is paged out?  Interrupts are disabled, so disk i/o may not work.
I'm fixing ddb so that interrupts are always disabled, and gdb-remote
should probably keep them disabled too.  I think pagefaults should be
fatal if interrupts are disabled (or spl >= splbio).  The debugger's
setjmp handler will make them non fatal (just like when you attempt
to access an unmappable address).

>I wanted to do this with DDB once and I think I was stumped by the kernel
>stack being in the u-area which is mapped to the same place for each
>process.  Since the process I wanted to backtrace was not curproc, I
>couldn't see its stack :-(.

There should be a ddb function for this.  ddb functions are now easy to
add :-).

Bruce



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199610031347.XAA16899>