bug in 4.2 /bin/make

John P. Linderman jpl at allegra.UUCP
Fri Aug 24 03:03:19 AEST 1984


SYSNOPSIS:
    make sometimes dumps core with a memory fault or segmentation fault

REPEAT BY:
    Turn the following four lines into a makefile, and run make -nd
	foo:main.o
		cc main.o -o foo

	main.o:a/*.h

    When I do it, I get
	doname(foo,0)
	doname(main.o,1)
	sh: 24665 Memory fault - core dumped
    
    Neither the -n nor the -d are essential to generate the dump.
    The bug seems to depend on the presence of the directory reference
    in the dependency for main.o.

FIX:
    A quick runthrough with a version of make made with -g revealed that
    function expand() in file /usr/src/bin/make/doname.c was being invoked
    with a NULL depname pointer.  I didn't dig into the code to determine
    how the NULL pointer got to expand(), but adding the following check
    to expand() around lines 282-287 eliminates the core dumping and causes
    make to operate correctly.

	--- 282,288 -----
	  char *s1;
	  struct depblock *p, *srchdir();
	  
	+ if (q->depname == NULL) return;
	  s1 = q->depname->namep;
	  for(s=s1 ; ;) switch(*s++)
		{

John P. Linderman  Break Make Department  allegra!jpl



More information about the Comp.unix.wizards mailing list