From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 27202 invoked by alias); 9 Sep 2009 02:05:50 -0000 Received: (qmail 26766 invoked by uid 22791); 9 Sep 2009 02:05:48 -0000 X-SWARE-Spam-Status: No, hits=-1.7 required=5.0 tests=AWL,BAYES_00,SARE_MSGID_LONG40,SPF_PASS X-Spam-Check-By: sourceware.org Received: from mail-pz0-f193.google.com (HELO mail-pz0-f193.google.com) (209.85.222.193) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Wed, 09 Sep 2009 02:05:33 +0000 Received: by pzk31 with SMTP id 31so2178881pzk.23 for ; Tue, 08 Sep 2009 19:05:30 -0700 (PDT) MIME-Version: 1.0 Received: by 10.142.7.21 with SMTP id 21mr635061wfg.97.1252461930132; Tue, 08 Sep 2009 19:05:30 -0700 (PDT) In-Reply-To: <4AA68C92.7070905@vmware.com> References: <4AA5D713.1060305@vmware.com> <20090908065843.GO30677@adacore.com> <4AA68C92.7070905@vmware.com> From: Hui Zhu Date: Wed, 09 Sep 2009 02:05:00 -0000 Message-ID: Subject: Re: [RFA] let record_resume fail immediately on error To: Michael Snyder Cc: Joel Brobecker , "gdb-patches@sourceware.org" Content-Type: multipart/mixed; boundary=005045017f2c70b61104731b8487 X-IsSubscribed: yes Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org X-SW-Source: 2009-09/txt/msg00231.txt.bz2 --005045017f2c70b61104731b8487 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Content-length: 3877 On Wed, Sep 9, 2009 at 00:55, Michael Snyder wrote: > Hui Zhu wrote: >> >> On Tue, Sep 8, 2009 at 15:25, Hui Zhu wrote: >>> >>> If GDB call error in record_resume, user cannot keep debug the inferior. >>> >>> Hui >>> >>> On Tue, Sep 8, 2009 at 15:23, Hui Zhu wrote: >>>> >>>> The "record_resume_error" in gdb-cvs is to make user after get a error >>>> of record_message, they can "record stop" close the record and keep >>>> debug the inferior. >>>> >>>> Thanks, >>>> Hui >>>> >>>> On Tue, Sep 8, 2009 at 14:58, Joel Brobecker >>>> wrote: >>>>>> >>>>>> =A0 if (!RECORD_IS_REPLAY) >>>>>> =A0 =A0 { >>>>>> =A0 =A0 =A0 if (do_record_message (get_current_regcache ())) >>>>>> - =A0 =A0 =A0 =A0{ >>>>>> - =A0 =A0 =A0 =A0 =A0record_resume_error =3D 0; >>>>>> - =A0 =A0 =A0 =A0} >>>>>> - =A0 =A0 =A0else >>>>>> - =A0 =A0 =A0 =A0{ >>>>>> - =A0 =A0 =A0 =A0 =A0record_resume_error =3D 1; >>>>>> - =A0 =A0 =A0 =A0 =A0return; >>>>>> - =A0 =A0 =A0 =A0} >>>>>> + =A0 =A0 internal_error (__FILE__, __LINE__, >>>>>> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 _("record_resume: do_recor= d_message failed.")); >>>>>> + >>>>> >>>>> Forgive me if I'm wrong, as I don't know the record.c code at all, but >>>>> I cannot help but think that the internal_error is suspicious here. >>>>> Why is this an internal_error? >>>>> >>>>> -- >>>>> Joel >>>>> >> >> Hi guys, >> >> I make a patch that make "record_resume_error" work better. =A0I did >> some test. =A0It seems better than before. > > Could you explain what you mean by better? > I mean, what behavior are you looking for here? > > Here is the behavior that I see --- I am making a recording, > I say "continue", and after a while this "record_resume_error" > is triggered, and gdb stops and says "No more reverse-execution history." > > I would never expect to see that message during recording. In before, GDB cannot throw error in record_resume (It just in my memory, maybe I am wrong). If we try to do it, it will get: (gdb) c Continuing. Cannot execute this command while the selected thread is running. So I add record_resume_error to let record_wait to handle it. But record_wait cannot call error too. So I let it: /* If record_resume get error, return directly. */ status->kind =3D TARGET_WAITKIND_STOPPED; status->value.sig =3D TARGET_SIGNAL_0; return inferior_ptid; But I found that record_resume can call error now. So I make a new patch for it. Could you help me try it? Thanks, Hui 2009-09-09 Hui Zhu * record.c (record_resume_error): Deleted. (record_resume): Call record_message. (record_wait): Deleted record_resume_error. --- record.c | 19 +------------------ 1 file changed, 1 insertion(+), 18 deletions(-) --- a/record.c +++ b/record.c @@ -516,7 +516,6 @@ record_close (int quitting) } static int record_resume_step =3D 0; -static int record_resume_error; static void record_resume (struct target_ops *ops, ptid_t ptid, int step, @@ -526,15 +525,7 @@ record_resume (struct target_ops *ops, p if (!RECORD_IS_REPLAY) { - if (do_record_message (get_current_regcache ())) - { - record_resume_error =3D 0; - } - else - { - record_resume_error =3D 1; - return; - } + record_message (get_current_regcache ()); record_beneath_to_resume (record_beneath_to_resume_ops, ptid, 1, siggnal); } @@ -586,14 +577,6 @@ record_wait (struct target_ops *ops, if (!RECORD_IS_REPLAY) { - if (record_resume_error) - { - /* If record_resume get error, return directly. */ - status->kind =3D TARGET_WAITKIND_STOPPED; - status->value.sig =3D TARGET_SIGNAL_ABRT; - return inferior_ptid; - } - if (record_resume_step) { /* This is a single step. */ --005045017f2c70b61104731b8487 Content-Type: text/plain; charset=US-ASCII; name="prec-fix-error-handler.txt" Content-Disposition: attachment; filename="prec-fix-error-handler.txt" Content-Transfer-Encoding: base64 X-Attachment-Id: f_fzdfncwx0 Content-length: 1582 LS0tCiByZWNvcmQuYyB8ICAgMTkgKy0tLS0tLS0tLS0tLS0tLS0tLQogMSBm aWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxOCBkZWxldGlvbnMoLSkK Ci0tLSBhL3JlY29yZC5jCisrKyBiL3JlY29yZC5jCkBAIC01MTYsNyArNTE2 LDYgQEAgcmVjb3JkX2Nsb3NlIChpbnQgcXVpdHRpbmcpCiB9CiAKIHN0YXRp YyBpbnQgcmVjb3JkX3Jlc3VtZV9zdGVwID0gMDsKLXN0YXRpYyBpbnQgcmVj b3JkX3Jlc3VtZV9lcnJvcjsKIAogc3RhdGljIHZvaWQKIHJlY29yZF9yZXN1 bWUgKHN0cnVjdCB0YXJnZXRfb3BzICpvcHMsIHB0aWRfdCBwdGlkLCBpbnQg c3RlcCwKQEAgLTUyNiwxNSArNTI1LDcgQEAgcmVjb3JkX3Jlc3VtZSAoc3Ry dWN0IHRhcmdldF9vcHMgKm9wcywgcAogCiAgIGlmICghUkVDT1JEX0lTX1JF UExBWSkKICAgICB7Ci0gICAgICBpZiAoZG9fcmVjb3JkX21lc3NhZ2UgKGdl dF9jdXJyZW50X3JlZ2NhY2hlICgpKSkKLSAgICAgICAgewotICAgICAgICAg IHJlY29yZF9yZXN1bWVfZXJyb3IgPSAwOwotICAgICAgICB9Ci0gICAgICBl bHNlCi0gICAgICAgIHsKLSAgICAgICAgICByZWNvcmRfcmVzdW1lX2Vycm9y ID0gMTsKLSAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KKyAgICAgIHJl Y29yZF9tZXNzYWdlIChnZXRfY3VycmVudF9yZWdjYWNoZSAoKSk7CiAgICAg ICByZWNvcmRfYmVuZWF0aF90b19yZXN1bWUgKHJlY29yZF9iZW5lYXRoX3Rv X3Jlc3VtZV9vcHMsIHB0aWQsIDEsCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHNpZ2duYWwpOwogICAgIH0KQEAgLTU4NiwxNCArNTc3LDYg QEAgcmVjb3JkX3dhaXQgKHN0cnVjdCB0YXJnZXRfb3BzICpvcHMsCiAKICAg aWYgKCFSRUNPUkRfSVNfUkVQTEFZKQogICAgIHsKLSAgICAgIGlmIChyZWNv cmRfcmVzdW1lX2Vycm9yKQotCXsKLQkgIC8qIElmIHJlY29yZF9yZXN1bWUg Z2V0IGVycm9yLCByZXR1cm4gZGlyZWN0bHkuICAqLwotCSAgc3RhdHVzLT5r aW5kID0gVEFSR0VUX1dBSVRLSU5EX1NUT1BQRUQ7Ci0JICBzdGF0dXMtPnZh bHVlLnNpZyA9IFRBUkdFVF9TSUdOQUxfQUJSVDsKLQkgIHJldHVybiBpbmZl cmlvcl9wdGlkOwotCX0KLQogICAgICAgaWYgKHJlY29yZF9yZXN1bWVfc3Rl cCkKIAl7CiAJICAvKiBUaGlzIGlzIGEgc2luZ2xlIHN0ZXAuICAqLwo= --005045017f2c70b61104731b8487--