panic: mutex vm object not owned ...

Peter Grehan grehan at freebsd.org
Mon Feb 21 13:18:19 PST 2005


Coleman Kane wrote:

 > panic: mutex vm object not owned at /usr/src/sys/vm/vm_page.c:608
 >0xd7cc1ac8: at panic+0x134
 >0xd7cc1b68: at _mtx_assert+0x74
 >0xd7cc1b88: at vm_page_remove+0x5c
 >0xd7cc1ba8: at vm_page_free_toq+0xcc
 >0xd7cc1bc8: at vm_page_free+0x28
 >0xd7cc1be8: at uma_small_free+0x60
 >0xd7cc1c18: at zone_drain+0x2e8
 >0xd7cc1c58: at zone_foreach+0x64
 >0xd7cc1c78: at uma_reclaim+0x20
 >0xd7cc1c98: at vm_pageout_scan+0x200
 >0xd7cc1d58: at vm_pageout+0x39c
 >0xd7cc1d98: at fork_exit+0x118
 >0xd7cc1dc8: at fork_trampoline+0xc
  ...
> Yeah, I've been seeing this as well (on my AMD64 machine) lately. Any
> idea where it is from?

  Yes - it's rev 1.114 of uma_core.c. The comment "as the page(s) 
undoubtedly came from kmem_map for those two." isn't true for the
UMD_MD_SMALL_ALLOC case.

  It was assumed pre-1.114 that non-UMA_SLAB_KMEM were allocated with 
NULL backing objects, which can be seen from amd64/amd64/uma_machdep.c:

void *
uma_small_alloc(uma_zone_t zone, int bytes, u_int8_t *flags, int wait)
{
    ...
         *flags = UMA_SLAB_PRIV;

    ...
                  m = vm_page_alloc(NULL, colour++, pflags | 
VM_ALLOC_NOOBJ);
    ...


  Try backing out the couple of lines from that rev and see how it goes.

later,

Peter.


More information about the freebsd-ppc mailing list