Date: Wed, 29 May 2002 21:02:37 +0300 From: Giorgos Keramidas <keramida@ceid.upatras.gr> To: Peter Wemm <peter@wemm.org> Cc: Terry Lambert <tlambert2@mindspring.com>, Poul-Henning Kamp <phk@critter.freebsd.dk>, Richard Wenninger <richard@richardw.net>, current@freebsd.org Subject: Re: UMA lock Message-ID: <20020529180236.GA30172@hades.hell.gr> In-Reply-To: <20020529072413.6FDD5380A@overcee.wemm.org> References: <3CF476E7.D465D5C3@mindspring.com> <20020529072413.6FDD5380A@overcee.wemm.org>
next in thread | previous in thread | raw e-mail | index | archive | help
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 keramida@FreeBSD.org | 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?20020529180236.GA30172>