On 2002-05-29 00:24 -0700, Peter Wemm wrote:
> There is a known bug in UMA where it recurses and calls itself with with
> M_WAITOK even if it was explicitly called with M_NOWAIT set.  The bug is
> real and would cause a panic if we actually ran low on memory at that
> point.

Just in case anyone more knowledgeable than me knows that to do about
this, here's something that seems to look like this.

A trace that I got when I ran my kernel with WITNESS for a day or so,
was the following.  Note the lines marked with an asterisk that
clearly show (unless I am terribly wrong) that UMA is entered twice,
and the WITNESS check fails the second time.

        Debugger("witness_sleep")
        Stopped at      Debugger+0x45:  xchgl   %ebx,in_Debugger.0
        db> trace
        Debugger(c02d6500) at Debugger+0x45
        witness_sleep(1,0,c02eb711,52c) at witness_sleep+0xf8
*       uma_zalloc_arg(c082a640,0,0) at uma_zalloc_arg+0x3e
        vm_map_entry_create(c0822000,c5b55150,c69a2000,c0822000,c6424bd4) at
        vm_map_entry_create+0x2b
        _vm_map_clip_end(c0822000,c5b55150,c69a4000) at _vm_map_clip_end+0x4b
        vm_map_delete(c0822000,c69a2000,c69a4000,c69a2000,4) at
        vm_map_delete+0x94
        vm_map_remove(c0822000,c69a2000,c69a4000,c0321140,1) at
        vm_map_remove+0x5b
        kmem_free(c0822000,c69a2000,2000,c6424c60,c02818a0) at kmem_free+0x3c
        page_free(c69a2000,2000,4) at page_free+0x44
        zone_drain(c24f3780) at zone_drain+0x302
        zone_foreach(c028159e,c6424d0c,c027f22c,c0321140,1) at
        zone_foreach+0x2e
*       uma_reclaim(c0321140,1,c02eb4c2,286,c0321140) at uma_reclaim+0x12
        vm_pageout_scan(0,c027fcaa,c6424d34,c01a0eaa,0) at
        vm_pageout_scan+0x30
        vm_pageout(0,c6424d48,c6380a3c,c027fcaa,0) at vm_pageout+0x22d
        fork_exit(c027fcaa,0,c6424d48) at fork_exit+0x88
        fork_trampoline() at fork_trampoline+0x37
        db> c

-- 
Giorgos Keramidas    | FreeBSD: The Power to Serve
[EMAIL PROTECTED] | http://www.FreeBSD.org

To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-current" in the body of the message

Reply via email to