From owner-freebsd-current Wed May 29 13: 1: 5 2002 Delivered-To: freebsd-current@freebsd.org Received: from mailsrv.otenet.gr (mailsrv.otenet.gr [195.170.0.5]) by hub.freebsd.org (Postfix) with ESMTP id 3BC4F37B41B for ; Wed, 29 May 2002 13:00:18 -0700 (PDT) Received: from hades.hell.gr (patr530-a237.otenet.gr [212.205.215.237]) by mailsrv.otenet.gr (8.12.3/8.12.3) with ESMTP id g4TK090j022085; Wed, 29 May 2002 23:00:10 +0300 (EEST) Received: from hades.hell.gr (hades [127.0.0.1]) by hades.hell.gr (8.12.3/8.12.3) with ESMTP id g4TJxsQh057292; Wed, 29 May 2002 23:00:09 +0300 (EEST) (envelope-from keramida@ceid.upatras.gr) Received: (from charon@localhost) by hades.hell.gr (8.12.3/8.12.3/Submit) id g4TI2bX6032047; Wed, 29 May 2002 21:02:37 +0300 (EEST) (envelope-from keramida@ceid.upatras.gr) Date: Wed, 29 May 2002 21:02:37 +0300 From: Giorgos Keramidas To: Peter Wemm Cc: Terry Lambert , Poul-Henning Kamp , Richard Wenninger , current@freebsd.org Subject: Re: UMA lock Message-ID: <20020529180236.GA30172@hades.hell.gr> References: <3CF476E7.D465D5C3@mindspring.com> <20020529072413.6FDD5380A@overcee.wemm.org> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20020529072413.6FDD5380A@overcee.wemm.org> Sender: owner-freebsd-current@FreeBSD.ORG Precedence: bulk List-ID: List-Archive: (Web Archive) List-Help: (List Instructions) List-Subscribe: List-Unsubscribe: X-Loop: FreeBSD.ORG 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