Date: Wed, 10 Mar 1999 16:38:28 -0600 (CST) From: Greg Rowe <greg@uswest.net> To: David Greenman <dg@root.com> Cc: freebsd-hackers@FreeBSD.ORG Subject: Re: SMP Woes Message-ID: <XFMail.990310163828.greg@uswest.net> In-Reply-To: <199903101906.LAA05432@implode.root.com>
next in thread | previous in thread | raw e-mail | index | archive | help
Hi David,
I built a kernel with debugging and had one of the guys here take a look
through the crash dump. First, is the new "Fatal Trap" DDB output and then his
comments on what he saw. Anything else we should try ??
Greg
On 10-Mar-99 David Greenman wrote:
> There are at least two things that are strange in the following. First,
> there is no call to bzero() from zalloci() (or in zlock(), _zalloc(), and
> zunlock(), which are inlined). Second, the parameters to generic_bzero()
> indicate that 0 bytes are to be zeroed. It's also strange that the address
> of the first arg is the same as in the zalloci call, which might indicate
> that the first structure element of vm_zone, which is the simplelock, is
> being zeroed. It might be interesting to see if the addresses of the
> generic_bzero() and simple_lock() functions are similar (such as different
> by one bit or something).
Fatal trap 12: page fault while in kernel mode
mp_lock = 03000002; cpuid = 3; lapic.id = 02000000
fault virtual address = 0x0
fault code = supervisor write, page not present
instruction pointer = 0x8:0xf020ec9f
stack pointer = 0x10:0xfe5d2c34
frame pointer = 0x10:0xfe5d2c58
code segment = base 0x0, limit 0xfffff, type 0x1b
= DPL 0, pres 1, def32 1, gran 1
processor eflags = interrupt enabled, resume, IOPL = 0
current process = 243 (cpio)
interrupt mask = net tty bio cam <- SMP: XXX
kernel: type 12 trap, code=0
Stopped at generic_bzero+0xf: repe stosl %es:(%edi)
db> trace
generic_bzero(f3283f80,0,f47f7000,fe5d2c90,fe5d2c98) at generic_bzero+0xf
zalloci(f3283f80,f4880100,f47f7000,6f7f9,fe540ec0) at zalloci+0x29
getnewvnode(1,f33f0400,f3266200,fe5d2cfc,100) at getnewvnode+0x2f8
ffs_vget(f33f0400,6f7f9,fe5d2d7c,ff77d700,fe5d2edc) at ffs_vget+0xa5
ufs_lookup(fe5d2dd4,fe5d2de8,f016f6d4,fe5d2dd4,fe553021) at ufs_lookup+0x936
ufs_vnoperate(fe5d2dd4,fe553021,ff77d700,fe5d2edc,0) at ufs_vnoperate+0x15
vfs_cache_lookup(fe5d2e30,fe5d2e40,f0171ae9,fe5d2e30,fe53b640) at
vfs_cache_lookup+0x248
ufs_vnoperate(fe5d2e30,fe53b640,fe5d2edc,fe5d2eb8,0) at ufs_vnoperate+0x15
lookup(fe5d2eb8,fe540ec0,f0250848,fe540ec0,1) at lookup+0x2c1
namei(fe5d2eb8,fe540ec0,f0250848,0,8057000) at namei+0x133
lstat(fe540ec0,fe5d2f94,8057000,ffffffff,3) at lstat+0x44
syscall(2f,efbf002f,3,ffffffff,efbfdc70) at syscall+0x187
Xint0x80_syscall() at Xint0x80_syscall+0x4c
db>
********************************************************************************
Kgdb gives us a bit more info:
(kgdb) bt
....snip....
#10 0xf020ec9f in generic_bzero ()
#11 0xf01f1869 in zalloci (z=0xf3283f80) at ../../vm/vm_zone.h:....snip....
(ki5
....snip....gdb) frame 11
#11 0xf01f1869 in zalloci (z=0xf3283f80) at ../../vm/vm_zone.h:85
85 return _zget(z);
(kgdb) print _zget
$6 = {void *(struct vm_zone *)} 0xf01f18d4 <_zget>
(kgdb) print generic_bzero
$7 = {<text variable, no debug info>} 0xf020ec90 <generic_bzero>
So, it doesn't look like a 1-bit off error....
Because zget/zalloc is an inline function, I can't seem to get gdb to
print simple_lock or simple_unlock.
-Chris
Greg Rowe <greg@uswest.net> US WEST - Internet Service Operations
To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-hackers" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?XFMail.990310163828.greg>
