Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 8 Feb 1997 17:53:35 -0500
From:      Andrew Herdman <andrew@why.whine.com>
To:        Poul-Henning Kamp <phk@critter.dk.tfs.com>
Cc:        Andrew Herdman <andrew@why.whine.com>, current@freebsd.org
Subject:   Re: Make world of Current dies with weird errors. 
Message-ID:  <Pine.BSF.3.95.970208173817.14716A-100000@why>
In-Reply-To: <8301.855419376@critter.dk.tfs.com>

next in thread | previous in thread | raw e-mail | index | archive | help
On Sat, 8 Feb 1997, Poul-Henning Kamp wrote:

> In message <Pine.BSF.3.95.970207212402.1098A-100000@why>, Andrew Herdman writes
> :
> >When i'm doing a make world, i get the following errors.
> >
> >make cleandir
> >
> ><cleaning stuff going on here>
> >
> >===> lib/libtelnet
> >make in free(): warning: chunk is already free.
> >make in free(): warning: chunk is already free.
> >make in free(): warning: chunk is already free.
> 
> Off the top of my head I'd say RAM/cache HW problem, but I have heard
> other reports about the same phenomena enough to find it slightly
> worrisome, and I have not been able to reproduce the problem here.
> 
> If you can reliably reproduce this, and have time & courage, here's
> how to proceed:
> 
> 	in your chroot environment:
> 
> 		ln -s A /etc/malloc.conf
> 		reproduce the problem
> 		you should now have a make.core file somewhere.
> 		gdb /usr/src/.../make make.core
> 		find the problem
> 		make a patch
> 		send-pr

Well I had some courage.  I can reliably reproduce the bug, and have with
a make re-compiled with -g, and the malloc trick i now have a nice core
file.  As for using gdb for debugging... err well I don't now much about
it... i've seen the bt command used extensively and this is what i got:

Core was generated by `make'.
Program terminated with signal 6, Abort trap.
Cannot access memory at address 0x654f0.
#0  0x807de11 in ?? ()
(gdb) bt
#0  0x807de11 in ?? ()
#1  0x807d6e3 in ?? ()
#2  0x807c232 in ?? ()
#3  0x807c270 in ?? ()
#4  0x807d24b in ?? ()
#5  0x807d432 in ?? ()
#6  0x12731 in Lst_Destroy (l=0x588c0, freeProc=0)
    at /usr/src/usr.bin/make/lst.lib/lstDestroy.c:99
#7  0xfb2b in TargFreeGN (gnp=0x55d00) at targ.c:219
#8  0x1270b in Lst_Destroy (l=0x182e0, freeProc=0xfae0 <TargFreeGN>)
    at /usr/src/usr.bin/make/lst.lib/lstDestroy.c:93
#9  0xf9d7 in Targ_End () at targ.c:139
#10 0xa000 in main (argc=3, argv=0xefbfd798) at main.c:804


I have the core and the program that created, and if you want I can leave
them somewhere for someone who knows what they are doing to take a peek at
them.  I will help where I can of course, but this one is bigger than I
am.

> 
> The actual complaint from the program means that some piece of memory
> that was allocated with malloc is freed twice.  The fact that it's 
> called a "chunk" tells that it is <= 2048 bytes long.
> 
> If you can get a stacktrace, you will find the pointer to this piece
> of memory in the topmost call to free() or realloc().
> 
> Try to see if you can compile a make with "-g" and still reproduce
> the problem.

Andrew





Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?Pine.BSF.3.95.970208173817.14716A-100000>