Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 31 May 2004 23:19:38 +0200
From:      "Willem Jan Withagen" <wjw@withagen.nl>
To:        "Poul-Henning Kamp" <phk@phk.freebsd.dk>
Cc:        freebsd-current@freebsd.org
Subject:   Re: Possible bug in malloc-code 
Message-ID:  <0c1301c44754$fc027160$471b3dd4@dual>
References:  <2675.1086036694@critter.freebsd.dk>

next in thread | previous in thread | raw e-mail | index | archive | help
> In message <0be501c4474f$bb115400$471b3dd4@dual>, "Willem Jan Withagen"
writes:
> >
> >        i =         11
> >Alloc:  n =  335544320, ADR = 0x00000000485D7000
> >Alloc:  n =  402653184, ADR = 0x000000005C5D7000
> >Alloc:  n =  469762048, ADR = 0x00000000745D7000
> >Alloc:  n =  536870912, ADR = 0xFFFFFFFF905D7000
> >Free:   n =  536870912, ADR = 0xFFFFFFFF905D7000
> >rMemoryDrv in free(): error: junk pointer, too high to make sense
> >Abort (core dumped)
>
> As for this part:  Does the program in fact have a prototype for
> malloc(3) in sight ?  Can you try to explicitly add a wrong prototype
> to see that it complains ?  Alternatively, #include <stdlib.h> to get
> it a prototype.
>
> I looked briefly at the source code of the test-program and while I am
> in a position to say that it is doing something wrong with the casting,
> it does look mightily bogus to me.

Fair question, and to be honest. I assume(d) that it somewhere in its infinite
load of obscurity included stdlib.h

Hold on, I'll check....

Well I'm actually using calloc() since the original writer assumes that malloc
returns zero-ed space.

And looking through the preprocessed output stdlib.h is not included....

And bingo, we have a winner with stdlib.h manually included:

Alloc/Free large not inverse         11
Alloc:  n =  402653184, ADR = 0x00000000605E7000
Alloc/Free large not inverse         11
Alloc:  n =  402653184, ADR = 0x00000000785E7000
Alloc/Free large not inverse         11
        i =         12
Alloc:  n =  671088640, ADR = 0x00000000905E7000
Alloc:  n =  805306368, ADR = 0x00000000B85E7000
Alloc:  n =  939524096, ADR = 0x00000000E85E7000

No more sign-extention trouble

I'm afraid that these kinds of 'bugs' are going to haunt me for the remainder
of porting the tool. :(

Thanx,
--WjW



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?0c1301c44754$fc027160$471b3dd4>