Problem with threaded program

Kevin Buettner kevinb@redhat.com
Thu Dec 6 16:04:00 GMT 2001


On Dec 2, 11:44am, David Relson wrote:

> Here's the test program, test.c:
> 
> #include <stdlib.h>
> int main() {
>    char *t="1.0";
>    double d=0;
>    d=strtod(t,(char **)NULL);
>    printf( "%f\n", d );
>    return 0;
> }
> 
> Build using "gcc -g -lpthread test.c"; run using "gdb a.out".
> 
> If you step through the program one line at a time and display variable d 
> after each assignment, the strtod() call seems to return 
> "nan(0x8000000000000)", which is also shown by print().
> 
> If you restart the program with a breakpoint at printf(), let it run, and 
> display d at the breakpoint, the value shown is "1.000000" which is correct.
> 
> Is this a defect in gdb, or is my analysis wrong?

It's a defect in gdb.

I've just posted a patch which fixes this bug.  See

    http://sources.redhat.com/ml/gdb-patches/2001-12/msg00183.html

It hasn't been approved yet, but once it has, I'll push for getting
it into 5.1.1 too.

Thanks,

Kevin



More information about the Gdb mailing list