Re: [RFA] let record_resume fail immediately on error

Michael Snyder
2009-09-08T16:57:30Z

Hui Zhu wrote:
> On Tue, Sep 8, 2009 at 15:25, Hui Zhu<teawater@gmail.com> 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<teawater@gmail.com> 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<brobecker@adacore.com> wrote:
>>>>> if (!RECORD_IS_REPLAY)
>>>>> {
>>>>> if (do_record_message (get_current_regcache ()))
>>>>> - {
>>>>> - record_resume_error = 0;
>>>>> - }
>>>>> - else
>>>>> - {
>>>>> - record_resume_error = 1;
>>>>> - return;
>>>>> - }
>>>>> + internal_error (__FILE__, __LINE__,
>>>>> + _("record_resume: do_record_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. I did
> some test. It 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.

> 2009-09-08 Hui Zhu <teawater@gmail.com>
>
> * record.c (record_wait): Change TARGET_SIGNAL_ABRT to
> TARGET_SIGNAL_0.
> ---
> record.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> --- a/record.c
> +++ b/record.c
> @@ -590,7 +590,7 @@ record_wait (struct target_ops *ops,
> {
> /* If record_resume get error, return directly. */
> status->kind = TARGET_WAITKIND_STOPPED;
> - status->value.sig = TARGET_SIGNAL_ABRT;
> + status->value.sig = TARGET_SIGNAL_0;
> return inferior_ptid;
> }