Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 07 Jun 2001 14:51:47 -0700 (PDT)
From:      John Baldwin <jhb@FreeBSD.org>
To:        Andrew Gallatin <gallatin@cs.duke.edu>
Cc:        freebsd-alpha@FreeBSD.org
Subject:   Re: Possible VM patch..
Message-ID:  <XFMail.010607145147.jhb@FreeBSD.org>
In-Reply-To: <15135.50535.462934.648630@grasshopper.cs.duke.edu>

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

On 07-Jun-01 Andrew Gallatin wrote:
> 
> John Baldwin writes:
>  > 
>  > 
>  > I just got a panic on my UP machine.  This one is a very weird panic that
> is
>  > only triggered when the witness code gets its internal per-process lock
> lists
>  > out of sync.  I wish it was easier to trigger.  It may be a witness bug or
> it
>  > may be some sort of data corruption.  :(  The NULL vm_object panic in
>  > vm_fault1() that I'm getting on the dual Rawhide seems fairly
> reproducible, so
>  > I've added in a bunch of KTR tracepoints to see if I can narrow it down.
> 
> Here's my latest panic:
> 
> login: panic: mutex vm not owned at ../../vm/vm_page.c:1017
> cpuid = 0; panic
> Stopped at      Debugger+0x34:  zapnot  v0,#0xf,a0      <v0=0x0,a0=0x6>
> db> tr
> Debugger() at Debugger+0x34
> panic() at panic+0x178
> _mtx_assert() at _mtx_assert+0x64
> vm_page_free_toq() at vm_page_free_toq+0x38
> vm_page_alloc() at vm_page_alloc+0x270
> vm_fault1() at vm_fault1+0x648
> vm_fault() at vm_fault+0x204
> trap() at trap+0xe20
> XentMM() at XentMM+0x2c
> --- memory management fault (from ipl 0) ---
> --- user mode ---
> 
> [I'm running an updated db_trace.c merged from NetBSD with Ross
> Harvey's all-singing / all dancing stack trace code, but it isn't
> too terribly interesting for this particular case.]
> 
> db> show locks
> exclusive (sleep mutex) vm (0xfffffc0000815430) locked @
> ../../vm/vm_fault.c:301
> exclusive (sleep mutex) Giant (0xfffffc00008160c8) locked @
> ../../vm/vm_fault.c:213
> 
> db> show pcpu
> cpuid     = 0
> ipis      = 0
> next ASN  = 240
> curproc   = 0xfffffe00068a1480: pid 41334 "ld"
> curpcb    = 0x7a96000
> fpcurproc = none
> idleproc  = 0xfffffe0005887600: pid 10 "idle: cpu0"
> spin locks held:
> db> x vm_mtx,10
> vm_mtx: 760c20          fffffc00        730700          fffffc00        30000
> vm_mtx+0x14:    0               806528          fffffc00        7b7910
> vm_mtx+0x24:    fffffc00        4               0               0
                                  ^^^^^^^^^^^^^^^^^
> vm_mtx+0x34:    0               0               0

That is 0x4 == MTX_UNOWNED which means no one owns this mutex.

> I think this is the same "can't happen" thing you were talking about
> earlier.  We've got a panic because vm isn't owned, but wait!  It is!

No, it's not owned, though I don't know why it isn't owned.  :(  I'll look at
the code in a bit.  The weird mtx_owned() problem I had was on an SMP system,
too.

> Drew

-- 

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-alpha" in the body of the message




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