Re: what happened with thread, from 2.2 to 2.4 ?!

David Relson (relson@osagesoftware.com)
Sun, 02 Dec 2001 11:31:20 -0500


At 09:33 AM 12/2/01, you wrote:
>Hi
>what happenned with thread from 2.2 to 2.4?
>I have some problems with threaded programs, working under 2.2 and no more
>under 2.4
>The test program is short:
>----
>#include <stdlib.h>
>void main() {
> char *t="1.0";
> double d=0;
> d=strtod(t,(char **)NULL);
>}
>---
>this program compiled with "gcc -g -lpthread test.c" has strange behaviour.
>The problem only appear using gdb to see the value of d
>In most case, the value returned by strtod under a 2.4 kernel is nan.
>I say most, because some 2.4 kernels don't fail other this line.
>I have done some test with differents distributions, and so differents
>version of kernel, gcc, gdb and libc.
>http://manu.agat.net/bug.html
>
>When it was possible, for the computer with the bug, under an 2.4 kernel,
>I've recompiled a 2.2.20, and the bug has disappeared!
>
>Does someone have an idea about that ?

I verified your problem using 2.4.16 (with gdb-20010813(MI_OUT)) and
2.2.15pre18 (with gdb-4.18). Thinking about it, I remembered that in the
past there have been some problems with newer versions of gdb with threaded
programs. So, I tried using gdb-4.18 on 2.4.16 and it worked fine.

Methinks that this looks like a gdb issue.

As further testing I added a couple of statements after the strtod() call:
printf( "%f\n", d);
return;

If I step through the program, I see the nan value displayed by gdb and
also printed by printf(). If I put a breakpoint at the printf() and run
the program, the proper value is printed out. This looks a whole lot like
gdb is having a problem when stepping over the strtod() call.

I will forward a copy of this message to the gdb mailing list.

David

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/