From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 8906 invoked by alias); 2 Dec 2001 18:41:01 -0000 Mailing-List: contact gdb-help@sources.redhat.com; run by ezmlm Precedence: bulk List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-owner@sources.redhat.com Received: (qmail 8811 invoked from network); 2 Dec 2001 18:40:27 -0000 Received: from unknown (HELO localhost.cygnus.com) (24.114.42.213) by hostedprojects.ges.redhat.com with SMTP; 2 Dec 2001 18:40:27 -0000 Received: from cygnus.com (localhost [127.0.0.1]) by localhost.cygnus.com (Postfix) with ESMTP id 53D563E19; Sun, 2 Dec 2001 13:40:25 -0500 (EST) Message-ID: <3C0A7599.3040902@cygnus.com> Date: Sun, 02 Dec 2001 10:41:00 -0000 From: Andrew Cagney User-Agent: Mozilla/5.0 (X11; U; NetBSD macppc; en-US; rv:0.9.3) Gecko/20011020 X-Accept-Language: en-us MIME-Version: 1.0 To: David Relson Cc: gdb@sources.redhat.com Subject: Re: Problem with threaded program References: <4.3.2.7.2.20011202114313.00c40ab0@mail.osagesoftware.com> Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit X-SW-Source: 2001-12/txt/msg00002.txt.bz2 > Greetings, > > The problem below was originally reported to the Linux Kernel Mailing List. It looks to me to be a gdb problem. > > I used a freshly compiled and installed copy of gdb-5.1 (configured as "i686-pc-linux-gnu") for this test on a Pentium III 500mhz running the 2.4.16 kernel. The same problem happens with gdb-5.0. gdb-4.18 appears to work fine. > > Here's the test program, test.c: > > #include > 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? Ah, looks like the GDB is corrupting a threaded programs FP registers problem. I'm 99% certain this is in the thread-db/kernel interface that GDB is using. Each time this crops up, the problem gets resolved with a kernel/library update. If someone can point out a definitive explination I'll add it to the 5.1.1 PROBLEMS file. That way it is at least clearly documented. The apparent 4.18 -> 5.0 ``breakage'' would have occured because GDB switched to using the thread-db/kernel interface. enjoy, Andrew