Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 23 May 2001 17:46:57 -0700 (PDT)
From:      John Baldwin <jhb@FreeBSD.org>
To:        The Hermit Hacker <scrappy@hub.org>
Cc:        freebsd-current@FreeBSD.org
Subject:   RE: Tonights panic: free_newdirblk+0x73:    movl    %eax,0x10(%e
Message-ID:  <XFMail.010523174657.jhb@FreeBSD.org>
In-Reply-To: <Pine.BSF.4.33.0105232129540.436-100000@mobile.hub.org>

next in thread | previous in thread | raw e-mail | index | archive | help

On 24-May-01 The Hermit Hacker wrote:
> 
> Just upgraded to latest sources, doesn't look like the swap issue ... was
> performing a 'make -j16 buildworld' when it panic'd ...
> 
> 
> Fataltrap 12: page fault while in kernel mode
> cpuid = 0; lapic.id = 00000000
> fault virtual address   = 0x12
> fault code              = supervisor write, page not present
> instruction pointer     = 0x8:0xc020abff
> stack pointer           = 0x10:0xcb75dbbc
> frame pointer           = 0x10:0xcb75dbc4
> code segmnt             = base 0x0, limit 0xfffff, type 0x1b
>                         = DPL 0, pres 1, def32 1, gran 1
> processor eflags        = interrupt enabled, resume, IOPL = 0
> current process         = 17 (swi3: cambio)
> kernel: type 12 trap, code=0
> Stopped at    free_newdirblk+0x73:    movl    %eax,0x10(%edx)

Looks like %edx is 0x2 then.  In other post, the faulting va was 0x11 with the
same instruction, meaning that %edx is 0x1.  So it looks like it isn't a NULL
pointer dereference.  It may be related to the VM stuff in that it may be that
a buffer is being manipulated somewhere without Giant being held while being
manipulated with Giant being held somewhere else?  Or it could be a softupdates
bug. :-P  Is this an SMP machine?  Ah, yes it is.  Next time you see this, can
you display 'show pcpu' for each CPU  (show pcpu does the current cpu,  show
cpu <some decimal number> displays the info on CPU <some decimal number>).
Also, can you get a backtrace of each process that is running?  trace on x86
can take the pid of a process to get a backtrace of as a parameter, and the
show pcpu commands should show you what process was executing on the other CPU
(including its pid).

> db> trace
> free_newdirblk+0x73
> handle_written_inodeblock+0x29e
> softdep_disk_write_complete+0x6a
> bufdone+0xbc
> bufdonebio+0xf
> dadone+0x214
> camisr+0x1d7
> ithread_lopp+0x330
> fork_exit+0xbc
> fork_trampoline+0x8

-- 

John Baldwin <jhb@FreeBSD.org> -- http://www.FreeBSD.org/~jhb/
PGP Key: http://www.baldwin.cx/~john/pgpkey.asc
"Power Users Use the Power to Serve!"  -  http://www.FreeBSD.org/

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-current" in the body of the message




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