From owner-freebsd-stable@FreeBSD.ORG Tue Feb 24 12:31:07 2004 Return-Path: Delivered-To: freebsd-stable@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id BEC2B16A4CE for ; Tue, 24 Feb 2004 12:31:07 -0800 (PST) Received: from mail.sandvine.com (sandvine.com [199.243.201.138]) by mx1.FreeBSD.org (Postfix) with ESMTP id 33A4043D2D for ; Tue, 24 Feb 2004 12:31:07 -0800 (PST) (envelope-from gnagelhout@sandvine.com) Received: by mail.sandvine.com with Internet Mail Service (5.5.2657.72) id <15P45RTZ>; Tue, 24 Feb 2004 15:31:06 -0500 Message-ID: From: Gerrit Nagelhout To: "'freebsd-stable@freebsd.org'" Date: Tue, 24 Feb 2004 15:31:05 -0500 MIME-Version: 1.0 X-Mailer: Internet Mail Service (5.5.2657.72) Content-Type: text/plain; charset="iso-8859-1" Subject: Re: >2GB Bugs still exist in FreeBSD 4.9 ? X-BeenThere: freebsd-stable@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: Production branch of FreeBSD source code List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 24 Feb 2004 20:31:07 -0000 I think this problem happens when the kernel_map runs out of memory. The actual crash happens because in vfs_subr.c around line 704, if zalloc returns NULL, the bzero will cause that trap: simple_unlock(&vnode_free_list_slock); vp = (struct vnode *) zalloc(vnode_zone); bzero((char *) vp, sizeof *vp); ****************** simple_lock_init(&vp->v_interlock); vp->v_dd = vp; cache_purge(vp); LIST_INIT(&vp->v_cache_src); TAILQ_INIT(&vp->v_cache_dst); numvnodes++; The size of the kernel memory region can be configured, and is typically around 1GB. The more RAM is present in the system, the more of this will be used up by various data structures that are tuned differently depending how much RAM is present. I think there are a few more places where running out of kernel memory will cause similar problems. Most of these places don't seem trivial to fix, and the only solution I have come up with (so far) is to tune the kernel differently to leave more memory available. Gerrit