make(1) is broken

Steve Kargl sgk at troutmask.apl.washington.edu
Wed Dec 8 17:06:58 PST 2004


On Wed, Dec 08, 2004 at 04:07:10PM -0800, Steve Kargl wrote:
> 
> troutmask:root[225] find /usr/obj/ -name make.core 
> /usr/obj/usr/src/sys/SPEW/make.core
> troutmask:root[226] gdb /usr/bin/make /usr/obj/usr/src/sys/SPEW/make.core
> 
> #0  Lst_Remove (list=0x5580a0, ln=0x0)
>     at /usr/src/usr.bin/make/lst.lib/lstRemove.c:74
> 74          if (ln->nextPtr != NULL)
> (gdb) bt
> #0  Lst_Remove (list=0x5580a0, ln=0x0)
>     at /usr/src/usr.bin/make/lst.lib/lstRemove.c:74
> #1  0x00000000004052bb in Dir_Destroy (pp=0x81e780)
>     at /usr/src/usr.bin/make/dir.c:1143
> #2  0x0000000000405300 in Dir_ClearPath (path=0x5580a0)
>     at /usr/src/usr.bin/make/dir.c:1172
> #3  0x0000000000404283 in Dir_End () at /usr/src/usr.bin/make/dir.c:265
> #4  0x000000000040a8da in main (argc=2, argv=0x7fffffffe3e0)
>     at /usr/src/usr.bin/make/main.c:888
> 

Looking at the diff between the 1.17 and 1.16, I suspect this chunk
of code in Lst_Remove:

-    if (!Lst_Valid(list) || !Lst_NodeValid(ln, list)) {
-	    return (FAILURE);
-    }

should have been replaced by

    if (list == NULL || ln == NULL)
	    return;


-- 
Steve


More information about the freebsd-current mailing list