[cfe-dev] FW: GSL 'make check' failure

Kelly Wilson wilsonkk at shaw.ca
Tue Jul 8 00:15:15 PDT 2008


Hello Matthijs,

Actually I just checked and the problem with this bit of code is an unsigned
integer value for 'i'.

What I previously failed to show in the code snippet was that 'i' is
declared as type 'size_t'...which I'm guessing defaults to uint32 in this
case.

Instead of using 'size_t i;' I replaced it with a signed int and things
worked fine. But if I used an unsigned variable then things blew up. Here is
a failure table:

short		pass
ushort	pass

int		pass
uint		fail

long		pass
ulong		fail

long long	pass
ulong long	fail


Unsigned short doesn't blow up???? Hmmmm....

I am compiling using Ubuntu 2.6.24 with a Quad6600 Intel chip and svn
llvm/clang.


Thanks,
K.Wilson

P.S. This is not my code. It is the Gnu Scientific Library and it uses some
complex pure C (ie. function pointers and macro expansions that make things
harder to track). Very nicely written and an interesting testing
framework...just difficult to follow through with my quick perusal ;)


> For (i=0;i<N;i++)
> 
> {
> 
>   v->data[2*i] = ATOMIC(N - i);
> 
>   v->data[2*i + 1] = ATOMIC(10 * (N - i) + 1);
> 
> };
> 
>  
> 
> fwrite().
> 
> fclose().
> 
> free().
I've seen similar free errors after doing out-of-bounds write. Are you sure
that data is allocated long enough (2N elements)?

Gr.

Matthijs




More information about the cfe-dev mailing list