From owner-freebsd-current@FreeBSD.ORG Thu Dec 9 08:50:46 2004 Return-Path: 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 8043A16A4CE for ; Thu, 9 Dec 2004 08:50:46 +0000 (GMT) Received: from smtp-1.dlr.de (smtp-1.dlr.de [129.247.247.65]) by mx1.FreeBSD.org (Postfix) with ESMTP id 61ABC43D46 for ; Thu, 9 Dec 2004 08:50:45 +0000 (GMT) (envelope-from Hartmut.Brandt@dlr.de) Received: from beagle.kn.op.dlr.de ([129.247.173.178]) by smtp-1.dlr.de over TLS secured channel with Microsoft SMTPSVC(5.0.2195.6713); Thu, 9 Dec 2004 09:50:43 +0100 Date: Thu, 9 Dec 2004 09:51:53 +0100 (CET) From: Harti Brandt X-X-Sender: brandt@beagle.kn.op.dlr.de To: Steve Kargl In-Reply-To: <20041209010658.GA14890@troutmask.apl.washington.edu> Message-ID: <20041209094923.B85802@beagle.kn.op.dlr.de> References: <20041209000148.GA4674@troutmask.apl.washington.edu> <20041209000710.GB4674@troutmask.apl.washington.edu> <20041209010658.GA14890@troutmask.apl.washington.edu> MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII X-OriginalArrivalTime: 09 Dec 2004 08:50:43.0121 (UTC) FILETIME=[2A9CEA10:01C4DDCC] cc: freebsd-current@freebsd.org Subject: Re: make(1) is broken X-BeenThere: freebsd-current@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list Reply-To: Harti Brandt List-Id: Discussions about the use of FreeBSD-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 09 Dec 2004 08:50:46 -0000 On Wed, 8 Dec 2004, Steve Kargl wrote: SK>On Wed, Dec 08, 2004 at 04:07:10PM -0800, Steve Kargl wrote: SK>> SK>> troutmask:root[225] find /usr/obj/ -name make.core SK>> /usr/obj/usr/src/sys/SPEW/make.core SK>> troutmask:root[226] gdb /usr/bin/make /usr/obj/usr/src/sys/SPEW/make.core SK>> SK>> #0 Lst_Remove (list=0x5580a0, ln=0x0) SK>> at /usr/src/usr.bin/make/lst.lib/lstRemove.c:74 SK>> 74 if (ln->nextPtr != NULL) SK>> (gdb) bt SK>> #0 Lst_Remove (list=0x5580a0, ln=0x0) SK>> at /usr/src/usr.bin/make/lst.lib/lstRemove.c:74 SK>> #1 0x00000000004052bb in Dir_Destroy (pp=0x81e780) SK>> at /usr/src/usr.bin/make/dir.c:1143 SK>> #2 0x0000000000405300 in Dir_ClearPath (path=0x5580a0) SK>> at /usr/src/usr.bin/make/dir.c:1172 SK>> #3 0x0000000000404283 in Dir_End () at /usr/src/usr.bin/make/dir.c:265 SK>> #4 0x000000000040a8da in main (argc=2, argv=0x7fffffffe3e0) SK>> at /usr/src/usr.bin/make/main.c:888 SK>> SK> SK>Looking at the diff between the 1.17 and 1.16, I suspect this chunk SK>of code in Lst_Remove: SK> SK>- if (!Lst_Valid(list) || !Lst_NodeValid(ln, list)) { SK>- return (FAILURE); SK>- } SK> SK>should have been replaced by SK> SK> if (list == NULL || ln == NULL) SK> return; I see no sense in those runtime checks because they just hide the real problems (as are uninitialized lists or removing items not on the list). Nobody actually checked the return codes so that was just 'close your eyes and continue'. I'd rather have the root problem fixed. I have a look into this. harti