From owner-freebsd-current Tue Sep 3 11:32:21 2002 Delivered-To: freebsd-current@freebsd.org Received: from mx1.FreeBSD.org (mx1.FreeBSD.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id C9DA637B405 for ; Tue, 3 Sep 2002 11:32:04 -0700 (PDT) Received: from mail.gmx.net (mail.gmx.net [213.165.64.20]) by mx1.FreeBSD.org (Postfix) with SMTP id 1AE7943E72 for ; Tue, 3 Sep 2002 11:32:02 -0700 (PDT) (envelope-from tmoestl@gmx.net) Received: (qmail 24942 invoked by uid 0); 3 Sep 2002 18:32:00 -0000 Received: from pd9e16c85.dip.t-dialin.net (HELO forge.local) (217.225.108.133) by mail.gmx.net (mp013-rz3) with SMTP; 3 Sep 2002 18:32:00 -0000 Received: from tmm by forge.local with local (Exim 3.36 #1) id 17mITo-00031M-00; Tue, 03 Sep 2002 20:32:48 +0200 Date: Tue, 3 Sep 2002 20:32:48 +0200 From: Thomas Moestl To: Matthew Dillon Cc: Peter Wemm , ticso@cicely.de, Alexander Kabaev , ticso@cicely5.cicely.de, des@FreeBSD.ORG, current@FreeBSD.ORG, dillon@FreeBSD.ORG Subject: Re: alpha tinderbox failure - kernel is broken. Message-ID: <20020903183248.GC441@crow.dom2ip.de> Mail-Followup-To: Matthew Dillon , Peter Wemm , ticso@cicely.de, Alexander Kabaev , ticso@cicely5.cicely.de, des@FreeBSD.ORG, current@FreeBSD.ORG, dillon@FreeBSD.ORG References: <20020903161933.GB80508@cicely5.cicely.de> <20020903163714.049602A7D6@canning.wemm.org> <20020903175819.GA441@crow.dom2ip.de> <200209031821.g83IL5Wd058341@apollo.backplane.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <200209031821.g83IL5Wd058341@apollo.backplane.com> User-Agent: Mutt/1.4i 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 Tue, 2002/09/03 at 11:21:05 -0700, Matthew Dillon wrote: > > :The attached patch does just change the heuristics used to detect > :"text" segments to look for executable segments (using an idea from > :Peter). This results in the fact that dynamic section is viewed as > :text, which should not break anything. > :This way, it should be possible to avoid the hole currently; a real > :fix would be to add a new vmspace field to represent the heap size > :including holes which could then be used by obreak(), while vm_dsize > :would only be used for statistics (which is however difficult to > :maintain when shrinking below the initial size with brk()). > : > :Can somebody who is feeling adventurous and has an alpha box please > :test whether this fixes it for now? > : > :Thanks, > : - Thomas > > Excellent Thomas! Thanks for tracking this down. Your patch looks > far better then mine if the circumstances of the failure are as you > believe. > > As soon as we get verification that your patch solves the problem, > I will commit / MFC cycle it. > > I am also still somewhat worried about the data segment start address > and I am wondering if I should remove the if (data_addr == 0) > and instead unconditionally set data_addr to the last data segment > loaded (which is what the original code did). That would only allow to shrink bss, but since that seems to be the traditional behaviour (and it's not likely that anybody would like to shrink away other segments), that would probably better. I think this would also require to add that other vmspace field as I described above, otherwise there would be a gap between bss and the heap start because vm_dsize counts all data segments. However, it has the advantage of making this real (non-workaround) fix easy to implement, since no bookkeeping problems would occur when shrinking just bss away (as no holes can be crossed). - Thomas -- Thomas Moestl http://www.tu-bs.de/~y0015675/ http://people.FreeBSD.org/~tmm/ PGP fingerprint: 1C97 A604 2BD0 E492 51D0 9C0F 1FE6 4F1D 419C 776C To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-current" in the body of the message