On 9/12/07, Dan Fandrich <dan_at_coneharvesters.com> wrote:
> It's #defined to curl_docalloc in memdebug.h, and curl_docalloc calls the
> real malloc through the function pointer Curl_cmalloc. But that valgrind
> trace implies that it's the call to curl_multi_init that goes bad. Which
> is odd, because it's a plain call into a libcurl export, and not even
> the first one. A compiler bug sounds more and more likely; how's your
> x86 assembly language? :^)
Not as good as my 6502 assembly language used to be.. :) But I may
have a go at it anyway, I actually started on it yesterday but I
have't figured out the tools yet.
However, as to which call fails, I did single-step everything from
start of the program through the call to curl_multi_init, and I also
breakpointed on the calloc call - in both cases I ended up at the
calloc line, inside the curl_multi_init call (although the calloc is
the first instruction). I also printed gdb's idea of the address of
calloc, malloc, Curl_ccalloc and what else I could think of.
Everything looked as I would expect. Single-step into that line with
calloc and boom. No difference building with -O0 or -O3.
It smells of compiler bug to me, I've seen a number of such before
although not much on x86. For now I think we must advice sticking to
icc 9.0 as far as the intel compiler is concerned..
Received on 2007-09-13