Re: make(1) is broken

From: Harti Brandt <hartmut.brandt_at_dlr.de>
Date: Thu, 9 Dec 2004 09:51:53 +0100 (CET)
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
Received on Thu Dec 09 2004 - 07:50:46 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:38:24 UTC