From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 2094 invoked by alias); 11 Jan 2010 20:57:45 -0000 Received: (qmail 2079 invoked by uid 22791); 11 Jan 2010 20:57:44 -0000 X-SWARE-Spam-Status: No, hits=-1.8 required=5.0 tests=AWL,BAYES_00,SARE_MSGID_LONG40,SPF_PASS X-Spam-Check-By: sourceware.org Received: from mail-iw0-f187.google.com (HELO mail-iw0-f187.google.com) (209.85.223.187) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Mon, 11 Jan 2010 20:57:39 +0000 Received: by iwn17 with SMTP id 17so14729829iwn.25 for ; Mon, 11 Jan 2010 12:57:38 -0800 (PST) MIME-Version: 1.0 Received: by 10.231.25.199 with SMTP id a7mr3244276ibc.51.1263243458065; Mon, 11 Jan 2010 12:57:38 -0800 (PST) In-Reply-To: <20100111205421.GA31228@host0.dyn.jankratochvil.net> References: <4B4B7231.6010001@vmware.com> <20100111205421.GA31228@host0.dyn.jankratochvil.net> From: Sean Soria Date: Mon, 11 Jan 2010 20:57:00 -0000 Message-ID: Subject: Re: Reverse Debugging Headaches To: Jan Kratochvil Cc: Michael Snyder , "gdb@sourceware.org" Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Mailing-List: contact gdb-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-owner@sourceware.org X-SW-Source: 2010-01/txt/msg00119.txt.bz2 Are there instructions or advice to accompany this? On Mon, Jan 11, 2010 at 12:54 PM, Jan Kratochvil wrote: > On Mon, 11 Jan 2010 19:47:13 +0100, Michael Snyder wrote: >> Sean Soria wrote: >> >Whenever I try to reverse debug I break into the program, set target >> >record and then continue. I immediately hit some sort of simd >> >instruction (in things like strlen in libc) or unsupported ioctl call. >> > Is there any way around these issues? >> >> Shouldn't happen. =C2=A0What version gdb? =C2=A0What linux? > > gdb 7.0.50.20100111-cvs Fedora 12: > > kernel-2.6.32.1-9.fc13.x86_64 -> x86_64 gdb -> x86_64 inferior: > (gdb) start > Temporary breakpoint 1 at 0x400640: file threadit.c, line 40. > Starting program: /home/jkratoch/t/threadit > [Thread debugging using libthread_db enabled] > Temporary breakpoint 1, main () at threadit.c:40 > 40 =C2=A0 =C2=A0 =C2=A0 =C2=A0i =3D pthread_create (&thread1, NULL, start= , NULL); =C2=A0 =C2=A0 /* create1 */ > (gdb) record > (gdb) c > Continuing. > warning: Process record ignores the memory change of instruction at addre= ss 0x362de0db46 because it can't get the value of the segment register. > [...] > warning: Process record ignores the memory change of instruction at addre= ss 0x362e274d46 because it can't get the value of the segment register. > Process record doesn't support instruction 0xf6e at address 0x362e281a32. > Process record: failed to record execution log. > [Thread 0x7ffff7fe3700 (LWP 26985)] #1 stopped. > memset () at ../sysdeps/x86_64/memset.S:746 > 746 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0movd =C2=A0 %rdx,%xmm0 > (gdb) > > kernel-2.6.32.1-9.fc13.x86_64 -> x86_64 gdb -> i386 inferior: > (gdb) start > Temporary breakpoint 1 at 0x80484f4: file /home/jkratoch/t/threadit.c, li= ne 40. > Starting program: /home/jkratoch/t/threadit32 > warning: .dynamic section for "/lib/libc.so.6" is not at the expected add= ress > warning: difference appears to be caused by prelink, adjusting expectatio= ns > [Thread debugging using libthread_db enabled] > Temporary breakpoint 1, main () at /home/jkratoch/t/threadit.c:40 > 40 =C2=A0 =C2=A0 =C2=A0 =C2=A0i =3D pthread_create (&thread1, NULL, start= , NULL); =C2=A0 =C2=A0 /* create1 */ > (gdb) record > (gdb) c > Continuing. > warning: Process record ignores the memory change of instruction at addre= ss 0x18a7c5 because it can't get the value of the segment register. > Cannot find user-level thread for LWP 11809: generic error > (/lib/libpthread-2.11.so has been prelinked to avoid some existing bug) > > kernel-2.6.32.1-9.fc13.x86_64 -> i386 gdb -> i386 inferior: > (gdb) start > Temporary breakpoint 1 at 0x80484f4: file /home/jkratoch/t/threadit.c, li= ne 40. > Starting program: /home/jkratoch/t/threadit32 > [Thread debugging using libthread_db enabled] > Temporary breakpoint 1, main () at /home/jkratoch/t/threadit.c:40 > 40 =C2=A0 =C2=A0 =C2=A0 =C2=A0i =3D pthread_create (&thread1, NULL, start= , NULL); =C2=A0 =C2=A0 /* create1 */ > (gdb) record > (gdb) c > Continuing. > warning: Process record ignores the memory change of instruction at addre= ss 0x3557c5 because it can't get the value of the segment register. > Program terminated with signal SIGTRAP, Trace/breakpoint trap. > The program no longer exists. > (gdb) > > > > #include > #include > #include > > static volatile int var; > > static void *start (void *arg) > { > =C2=A0sleep (1); > =C2=A0return arg; > } > > int main (void) > { > =C2=A0pthread_t thread1; > =C2=A0int i; > > =C2=A0i =3D pthread_create (&thread1, NULL, start, NULL); > =C2=A0assert (i =3D=3D 0); > =C2=A0i =3D pthread_join (thread1, NULL); > =C2=A0assert (i =3D=3D 0); > > =C2=A0return 0; > } > >