* [PATCH] Do not pass NULL for the string in catch_errors
@ 2015-09-09 14:45 Luis Machado
2015-09-10 13:16 ` Pedro Alves
0 siblings, 1 reply; 10+ messages in thread
From: Luis Machado @ 2015-09-09 14:45 UTC (permalink / raw)
To: gdb-patches
I caught a segmentation fault while running gdb.reverse/sigall-reverse.exp,
in a mingw32 GDB, in this code path. It boils down to the code trying to
strlen () a NULL pointer. I tracked things down and it looks like
record_full_message_wrapper_safe is the only occurrence.
We could also change catch_errors to check the char pointer and pass the
empty string automatically if the pointer is NULL. Then again, it seems like
catch_errors is going away at any time now, being potentially replaced
with catch_exceptions.
For now, though, the attach fix seems to accomplish the job.
Does that look reasonable?
gdb/ChangeLog:
2015-09-09 Luis Machado <lgustavo@codesourcery.com>
* record-full.c (record_full_message_wrapper_safe): Do not pass
NULL to string parameter in catch_errors.
---
gdb/record-full.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/gdb/record-full.c b/gdb/record-full.c
index 06bfdb8..15941c6 100644
--- a/gdb/record-full.c
+++ b/gdb/record-full.c
@@ -666,7 +666,7 @@ record_full_message_wrapper_safe (struct regcache *regcache,
args.regcache = regcache;
args.signal = signal;
- return catch_errors (record_full_message_wrapper, &args, NULL,
+ return catch_errors (record_full_message_wrapper, &args, "",
RETURN_MASK_ALL);
}
--
1.9.1
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH] Do not pass NULL for the string in catch_errors
2015-09-09 14:45 [PATCH] Do not pass NULL for the string in catch_errors Luis Machado
@ 2015-09-10 13:16 ` Pedro Alves
2015-10-21 11:19 ` Luis Machado
0 siblings, 1 reply; 10+ messages in thread
From: Pedro Alves @ 2015-09-10 13:16 UTC (permalink / raw)
To: Luis Machado, gdb-patches
On 09/09/2015 03:45 PM, Luis Machado wrote:
> I caught a segmentation fault while running gdb.reverse/sigall-reverse.exp,
> in a mingw32 GDB, in this code path. It boils down to the code trying to
> strlen () a NULL pointer. I tracked things down and it looks like
> record_full_message_wrapper_safe is the only occurrence.
>
> We could also change catch_errors to check the char pointer and pass the
> empty string automatically if the pointer is NULL. Then again, it seems like
> catch_errors is going away at any time now, being potentially replaced
> with catch_exceptions.
It's been marked superseded for years. If you had fixed this by
converting this one instance, we'd be a little closer. ;-)
>
> For now, though, the attach fix seems to accomplish the job.
>
> Does that look reasonable?
>
> gdb/ChangeLog:
>
> 2015-09-09 Luis Machado <lgustavo@codesourcery.com>
>
> * record-full.c (record_full_message_wrapper_safe): Do not pass
> NULL to string parameter in catch_errors.
Sure. OK.
Thanks,
Pedro Alves
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH] Do not pass NULL for the string in catch_errors
2015-09-10 13:16 ` Pedro Alves
@ 2015-10-21 11:19 ` Luis Machado
2015-10-22 13:39 ` Pedro Alves
0 siblings, 1 reply; 10+ messages in thread
From: Luis Machado @ 2015-10-21 11:19 UTC (permalink / raw)
To: Pedro Alves, gdb-patches
On 09/10/2015 10:16 AM, Pedro Alves wrote:
> On 09/09/2015 03:45 PM, Luis Machado wrote:
>> I caught a segmentation fault while running gdb.reverse/sigall-reverse.exp,
>> in a mingw32 GDB, in this code path. It boils down to the code trying to
>> strlen () a NULL pointer. I tracked things down and it looks like
>> record_full_message_wrapper_safe is the only occurrence.
>>
>> We could also change catch_errors to check the char pointer and pass the
>> empty string automatically if the pointer is NULL. Then again, it seems like
>> catch_errors is going away at any time now, being potentially replaced
>> with catch_exceptions.
>
> It's been marked superseded for years. If you had fixed this by
> converting this one instance, we'd be a little closer. ;-)
>
Well, we shouldn't rush! :-)
Seriously, i've been looking into this and it doesn't look like
catch_exceptions/catch_exceptions_with_msg is something we'll want to
use in the long run either. Those couple functions also do not directly
replace catch_errors.
I thought about replacing the remaining catch_errors occurrences with
TRY/CATCH/END_CATCH blocks, which sounds better aligned with what we
want to do in the future - migrating to C++ etc. Then we can finally get
rid of catch_errors and a few useless wrappers. How does that sound?
Luis
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH] Do not pass NULL for the string in catch_errors
2015-10-21 11:19 ` Luis Machado
@ 2015-10-22 13:39 ` Pedro Alves
2015-10-22 13:39 ` Luis Machado
0 siblings, 1 reply; 10+ messages in thread
From: Pedro Alves @ 2015-10-22 13:39 UTC (permalink / raw)
To: Luis Machado, gdb-patches
On 10/21/2015 12:14 PM, Luis Machado wrote:
> On 09/10/2015 10:16 AM, Pedro Alves wrote:
>> On 09/09/2015 03:45 PM, Luis Machado wrote:
>>> I caught a segmentation fault while running gdb.reverse/sigall-reverse.exp,
>>> in a mingw32 GDB, in this code path. It boils down to the code trying to
>>> strlen () a NULL pointer. I tracked things down and it looks like
>>> record_full_message_wrapper_safe is the only occurrence.
>>>
>>> We could also change catch_errors to check the char pointer and pass the
>>> empty string automatically if the pointer is NULL. Then again, it seems like
>>> catch_errors is going away at any time now, being potentially replaced
>>> with catch_exceptions.
>>
>> It's been marked superseded for years. If you had fixed this by
>> converting this one instance, we'd be a little closer. ;-)
>>
>
> Well, we shouldn't rush! :-)
>
> Seriously, i've been looking into this and it doesn't look like
> catch_exceptions/catch_exceptions_with_msg is something we'll want to
> use in the long run either. Those couple functions also do not directly
> replace catch_errors.
>
> I thought about replacing the remaining catch_errors occurrences with
> TRY/CATCH/END_CATCH blocks, which sounds better aligned with what we
> want to do in the future - migrating to C++ etc. Then we can finally get
> rid of catch_errors and a few useless wrappers. How does that sound?
Sounds like better leave it be then. It may be that with proper C++/RAII
the try/catches would disappear altogether in the end, for instance.
Thanks,
Pedro Alves
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH] Do not pass NULL for the string in catch_errors
2015-10-22 13:39 ` Pedro Alves
@ 2015-10-22 13:39 ` Luis Machado
2015-10-22 13:39 ` Pedro Alves
0 siblings, 1 reply; 10+ messages in thread
From: Luis Machado @ 2015-10-22 13:39 UTC (permalink / raw)
To: Pedro Alves, gdb-patches
On 10/22/2015 09:07 AM, Pedro Alves wrote:
> On 10/21/2015 12:14 PM, Luis Machado wrote:
>> On 09/10/2015 10:16 AM, Pedro Alves wrote:
>>> On 09/09/2015 03:45 PM, Luis Machado wrote:
>>>> I caught a segmentation fault while running gdb.reverse/sigall-reverse.exp,
>>>> in a mingw32 GDB, in this code path. It boils down to the code trying to
>>>> strlen () a NULL pointer. I tracked things down and it looks like
>>>> record_full_message_wrapper_safe is the only occurrence.
>>>>
>>>> We could also change catch_errors to check the char pointer and pass the
>>>> empty string automatically if the pointer is NULL. Then again, it seems like
>>>> catch_errors is going away at any time now, being potentially replaced
>>>> with catch_exceptions.
>>>
>>> It's been marked superseded for years. If you had fixed this by
>>> converting this one instance, we'd be a little closer. ;-)
>>>
>>
>> Well, we shouldn't rush! :-)
>>
>> Seriously, i've been looking into this and it doesn't look like
>> catch_exceptions/catch_exceptions_with_msg is something we'll want to
>> use in the long run either. Those couple functions also do not directly
>> replace catch_errors.
>>
>> I thought about replacing the remaining catch_errors occurrences with
>> TRY/CATCH/END_CATCH blocks, which sounds better aligned with what we
>> want to do in the future - migrating to C++ etc. Then we can finally get
>> rid of catch_errors and a few useless wrappers. How does that sound?
>
> Sounds like better leave it be then. It may be that with proper C++/RAII
> the try/catches would disappear altogether in the end, for instance.
I see. Unfortunately, for the cases where catch_exceptions supposedly
acts similarly to catch_errors, it still doesn't work correctly because
catch_exceptions doesn't seem to cope well with error () calls, like the
case inside record-full.c.
With catch_exceptions, instead of catching the error and letting the
inferior continue, it will just cause the inferior to terminate.
The other cases spread through breakpoint.c, infrun.c, solib.c etc, are
supposed to emit a message in case an error happens, as opposed to
passing an empty string.
catch_exceptions_with_msg only allows recording a copy of the message
from an exception thrown from the guarded called function. It doesn't
emit a message passed in as argument like catch_errors.
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH] Do not pass NULL for the string in catch_errors
2015-10-22 13:39 ` Luis Machado
@ 2015-10-22 13:39 ` Pedro Alves
2015-10-22 13:39 ` Luis Machado
0 siblings, 1 reply; 10+ messages in thread
From: Pedro Alves @ 2015-10-22 13:39 UTC (permalink / raw)
To: Luis Machado, gdb-patches
On 10/22/2015 12:23 PM, Luis Machado wrote:
> On 10/22/2015 09:07 AM, Pedro Alves wrote:
>> On 10/21/2015 12:14 PM, Luis Machado wrote:
>>> On 09/10/2015 10:16 AM, Pedro Alves wrote:
>>>> On 09/09/2015 03:45 PM, Luis Machado wrote:
>>>>> I caught a segmentation fault while running gdb.reverse/sigall-reverse.exp,
>>>>> in a mingw32 GDB, in this code path. It boils down to the code trying to
>>>>> strlen () a NULL pointer. I tracked things down and it looks like
>>>>> record_full_message_wrapper_safe is the only occurrence.
>>>>>
>>>>> We could also change catch_errors to check the char pointer and pass the
>>>>> empty string automatically if the pointer is NULL. Then again, it seems like
>>>>> catch_errors is going away at any time now, being potentially replaced
>>>>> with catch_exceptions.
>>>>
>>>> It's been marked superseded for years. If you had fixed this by
>>>> converting this one instance, we'd be a little closer. ;-)
>>>>
>>>
>>> Well, we shouldn't rush! :-)
>>>
>>> Seriously, i've been looking into this and it doesn't look like
>>> catch_exceptions/catch_exceptions_with_msg is something we'll want to
>>> use in the long run either. Those couple functions also do not directly
>>> replace catch_errors.
>>>
>>> I thought about replacing the remaining catch_errors occurrences with
>>> TRY/CATCH/END_CATCH blocks, which sounds better aligned with what we
>>> want to do in the future - migrating to C++ etc. Then we can finally get
>>> rid of catch_errors and a few useless wrappers. How does that sound?
>>
>> Sounds like better leave it be then. It may be that with proper C++/RAII
>> the try/catches would disappear altogether in the end, for instance.
>
> I see. Unfortunately, for the cases where catch_exceptions supposedly
> acts similarly to catch_errors, it still doesn't work correctly because
> catch_exceptions doesn't seem to cope well with error () calls, like the
> case inside record-full.c.
Now I'm confused -- why doesn't it?
But TBC, by "leave it be", I meant "just go with your original patch".
If you do want to go through and replace all catch_errors with
TRY/CATCH, I don't oppose it at all. I guess I was just trying to
avoid imposing extra work on you.
>
> With catch_exceptions, instead of catching the error and letting the
> inferior continue, it will just cause the inferior to terminate.
I don't understand. Why do you say this will happen?
>
> The other cases spread through breakpoint.c, infrun.c, solib.c etc, are
> supposed to emit a message in case an error happens, as opposed to
> passing an empty string.
>
> catch_exceptions_with_msg only allows recording a copy of the message
> from an exception thrown from the guarded called function. It doesn't
> emit a message passed in as argument like catch_errors.
>
Yeah. I'm not exactly sure why catch_errors was marked
deprecated/superseded originally, but it does feel like
catch_exceptions_with_msg isn't ideal either.
Thanks,
Pedro Alves
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH] Do not pass NULL for the string in catch_errors
2015-10-22 13:39 ` Pedro Alves
@ 2015-10-22 13:39 ` Luis Machado
2015-10-22 15:00 ` Pedro Alves
0 siblings, 1 reply; 10+ messages in thread
From: Luis Machado @ 2015-10-22 13:39 UTC (permalink / raw)
To: Pedro Alves, gdb-patches
On 10/22/2015 09:50 AM, Pedro Alves wrote:
> On 10/22/2015 12:23 PM, Luis Machado wrote:
>> On 10/22/2015 09:07 AM, Pedro Alves wrote:
>>> On 10/21/2015 12:14 PM, Luis Machado wrote:
>>>> On 09/10/2015 10:16 AM, Pedro Alves wrote:
>>>>> On 09/09/2015 03:45 PM, Luis Machado wrote:
>>>>>> I caught a segmentation fault while running gdb.reverse/sigall-reverse.exp,
>>>>>> in a mingw32 GDB, in this code path. It boils down to the code trying to
>>>>>> strlen () a NULL pointer. I tracked things down and it looks like
>>>>>> record_full_message_wrapper_safe is the only occurrence.
>>>>>>
>>>>>> We could also change catch_errors to check the char pointer and pass the
>>>>>> empty string automatically if the pointer is NULL. Then again, it seems like
>>>>>> catch_errors is going away at any time now, being potentially replaced
>>>>>> with catch_exceptions.
>>>>>
>>>>> It's been marked superseded for years. If you had fixed this by
>>>>> converting this one instance, we'd be a little closer. ;-)
>>>>>
>>>>
>>>> Well, we shouldn't rush! :-)
>>>>
>>>> Seriously, i've been looking into this and it doesn't look like
>>>> catch_exceptions/catch_exceptions_with_msg is something we'll want to
>>>> use in the long run either. Those couple functions also do not directly
>>>> replace catch_errors.
>>>>
>>>> I thought about replacing the remaining catch_errors occurrences with
>>>> TRY/CATCH/END_CATCH blocks, which sounds better aligned with what we
>>>> want to do in the future - migrating to C++ etc. Then we can finally get
>>>> rid of catch_errors and a few useless wrappers. How does that sound?
>>>
>>> Sounds like better leave it be then. It may be that with proper C++/RAII
>>> the try/catches would disappear altogether in the end, for instance.
>>
>> I see. Unfortunately, for the cases where catch_exceptions supposedly
>> acts similarly to catch_errors, it still doesn't work correctly because
>> catch_exceptions doesn't seem to cope well with error () calls, like the
>> case inside record-full.c.
>
> Now I'm confused -- why doesn't it?
>
> But TBC, by "leave it be", I meant "just go with your original patch".
>
> If you do want to go through and replace all catch_errors with
> TRY/CATCH, I don't oppose it at all. I guess I was just trying to
> avoid imposing extra work on you.
>
That would be fine by me. I was just experimenting with
TRY/CATCH/END_CATCH after my unsuccessful replacement of catch_errors
with catch_exceptions. See below.
>>
>> With catch_exceptions, instead of catching the error and letting the
>> inferior continue, it will just cause the inferior to terminate.
>
> I don't understand. Why do you say this will happen?
>
I replaced catch_errors with catch_exceptions in record-full.c. I saw a
bunch of failures in gdb.reverse/sigall-reverse.exp, starting at this point:
Breakpoint 142, handle_TERM (sig=15) at
../../../gdb-head-ro/gdb/testsuite/gdb.reverse/sigall-reverse.c:378^M
378 }^M
(gdb) PASS: gdb.reverse/sigall-reverse.exp: send signal TERM
continue^M
Continuing.^M
The next instruction is syscall exit_group. It will make the program
exit. Do you want to stop the program?([y] or n) yes^M
Process record: inferior program stopped.^M
^M
[process 21188] #1 stopped.^M
The above is a normal run. If i replace catch_errors with
catch_exceptions, instead of stopping the inferior, it will terminate.
Maybe there is a bug somewhere, or something is being mishandled.
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH] Do not pass NULL for the string in catch_errors
2015-10-22 13:39 ` Luis Machado
@ 2015-10-22 15:00 ` Pedro Alves
2015-10-24 22:39 ` Luis Machado
0 siblings, 1 reply; 10+ messages in thread
From: Pedro Alves @ 2015-10-22 15:00 UTC (permalink / raw)
To: Luis Machado, gdb-patches
On 10/22/2015 01:36 PM, Luis Machado wrote:
> On 10/22/2015 09:50 AM, Pedro Alves wrote:
>> On 10/22/2015 12:23 PM, Luis Machado wrote:
> That would be fine by me. I was just experimenting with
> TRY/CATCH/END_CATCH after my unsuccessful replacement of catch_errors
> with catch_exceptions. See below.
>>>
>>> With catch_exceptions, instead of catching the error and letting the
>>> inferior continue, it will just cause the inferior to terminate.
>>
>> I don't understand. Why do you say this will happen?
>>
>
> I replaced catch_errors with catch_exceptions in record-full.c. I saw a
> bunch of failures in gdb.reverse/sigall-reverse.exp, starting at this point:
>
> Breakpoint 142, handle_TERM (sig=15) at
> ../../../gdb-head-ro/gdb/testsuite/gdb.reverse/sigall-reverse.c:378^M
> 378 }^M
> (gdb) PASS: gdb.reverse/sigall-reverse.exp: send signal TERM
> continue^M
> Continuing.^M
> The next instruction is syscall exit_group. It will make the program
> exit. Do you want to stop the program?([y] or n) yes^M
> Process record: inferior program stopped.^M
> ^M
> [process 21188] #1 stopped.^M
>
> The above is a normal run. If i replace catch_errors with
> catch_exceptions, instead of stopping the inferior, it will terminate.
> Maybe there is a bug somewhere, or something is being mishandled.
It just sounds to me that you didn't take into account
that the return values of catch_errors and catch_exceptions
differ.
while one does:
if (exception.reason < 0)
{
...
return exception.reason;
}
the other does:
if (exception.reason != 0)
return 0;
This matters because the result is returned by
record_full_message_wrapper_safe, and checked here:
if (!record_full_message_wrapper_safe (regcache,
GDB_SIGNAL_0))
{
status->kind = TARGET_WAITKIND_STOPPED;
status->value.sig = GDB_SIGNAL_0;
break;
}
Thanks,
Pedro Alves
^ permalink raw reply [flat|nested] 10+ messages in thread* Re: [PATCH] Do not pass NULL for the string in catch_errors
2015-10-22 15:00 ` Pedro Alves
@ 2015-10-24 22:39 ` Luis Machado
2015-10-26 16:30 ` Luis Machado
0 siblings, 1 reply; 10+ messages in thread
From: Luis Machado @ 2015-10-24 22:39 UTC (permalink / raw)
To: Pedro Alves, gdb-patches
On 10/22/2015 11:43 AM, Pedro Alves wrote:
> On 10/22/2015 01:36 PM, Luis Machado wrote:
>> On 10/22/2015 09:50 AM, Pedro Alves wrote:
>>> On 10/22/2015 12:23 PM, Luis Machado wrote:
>
>> That would be fine by me. I was just experimenting with
>> TRY/CATCH/END_CATCH after my unsuccessful replacement of catch_errors
>> with catch_exceptions. See below.
>>>>
>
>>>> With catch_exceptions, instead of catching the error and letting the
>>>> inferior continue, it will just cause the inferior to terminate.
>>>
>>> I don't understand. Why do you say this will happen?
>>>
>>
>> I replaced catch_errors with catch_exceptions in record-full.c. I saw a
>> bunch of failures in gdb.reverse/sigall-reverse.exp, starting at this point:
>>
>> Breakpoint 142, handle_TERM (sig=15) at
>> ../../../gdb-head-ro/gdb/testsuite/gdb.reverse/sigall-reverse.c:378^M
>> 378 }^M
>> (gdb) PASS: gdb.reverse/sigall-reverse.exp: send signal TERM
>> continue^M
>> Continuing.^M
>> The next instruction is syscall exit_group. It will make the program
>> exit. Do you want to stop the program?([y] or n) yes^M
>> Process record: inferior program stopped.^M
>> ^M
>> [process 21188] #1 stopped.^M
>>
>> The above is a normal run. If i replace catch_errors with
>> catch_exceptions, instead of stopping the inferior, it will terminate.
>> Maybe there is a bug somewhere, or something is being mishandled.
>
> It just sounds to me that you didn't take into account
> that the return values of catch_errors and catch_exceptions
> differ.
>
> while one does:
>
> if (exception.reason < 0)
> {
> ...
> return exception.reason;
> }
>
> the other does:
>
> if (exception.reason != 0)
> return 0;
>
> This matters because the result is returned by
> record_full_message_wrapper_safe, and checked here:
>
> if (!record_full_message_wrapper_safe (regcache,
> GDB_SIGNAL_0))
> {
> status->kind = TARGET_WAITKIND_STOPPED;
> status->value.sig = GDB_SIGNAL_0;
> break;
> }
>
Indeed this is the case. I think i'll keep catch_errors and only fix the
NULL parameter then. Having to adjust return values from unrelated
functions sounds error-prone and maybe not worth it if we're moving away
from these types of constructs in the future.
^ permalink raw reply [flat|nested] 10+ messages in thread* Re: [PATCH] Do not pass NULL for the string in catch_errors
2015-10-24 22:39 ` Luis Machado
@ 2015-10-26 16:30 ` Luis Machado
0 siblings, 0 replies; 10+ messages in thread
From: Luis Machado @ 2015-10-26 16:30 UTC (permalink / raw)
To: Pedro Alves, gdb-patches
[-- Attachment #1: Type: text/plain, Size: 2590 bytes --]
On 10/23/2015 02:48 PM, Luis Machado wrote:
> On 10/22/2015 11:43 AM, Pedro Alves wrote:
>> On 10/22/2015 01:36 PM, Luis Machado wrote:
>>> On 10/22/2015 09:50 AM, Pedro Alves wrote:
>>>> On 10/22/2015 12:23 PM, Luis Machado wrote:
>>
>>> That would be fine by me. I was just experimenting with
>>> TRY/CATCH/END_CATCH after my unsuccessful replacement of catch_errors
>>> with catch_exceptions. See below.
>>>>>
>>
>>>>> With catch_exceptions, instead of catching the error and letting the
>>>>> inferior continue, it will just cause the inferior to terminate.
>>>>
>>>> I don't understand. Why do you say this will happen?
>>>>
>>>
>>> I replaced catch_errors with catch_exceptions in record-full.c. I saw a
>>> bunch of failures in gdb.reverse/sigall-reverse.exp, starting at this
>>> point:
>>>
>>> Breakpoint 142, handle_TERM (sig=15) at
>>> ../../../gdb-head-ro/gdb/testsuite/gdb.reverse/sigall-reverse.c:378^M
>>> 378 }^M
>>> (gdb) PASS: gdb.reverse/sigall-reverse.exp: send signal TERM
>>> continue^M
>>> Continuing.^M
>>> The next instruction is syscall exit_group. It will make the program
>>> exit. Do you want to stop the program?([y] or n) yes^M
>>> Process record: inferior program stopped.^M
>>> ^M
>>> [process 21188] #1 stopped.^M
>>>
>>> The above is a normal run. If i replace catch_errors with
>>> catch_exceptions, instead of stopping the inferior, it will terminate.
>>> Maybe there is a bug somewhere, or something is being mishandled.
>>
>> It just sounds to me that you didn't take into account
>> that the return values of catch_errors and catch_exceptions
>> differ.
>>
>> while one does:
>>
>> if (exception.reason < 0)
>> {
>> ...
>> return exception.reason;
>> }
>>
>> the other does:
>>
>> if (exception.reason != 0)
>> return 0;
>>
>> This matters because the result is returned by
>> record_full_message_wrapper_safe, and checked here:
>>
>> if (!record_full_message_wrapper_safe (regcache,
>> GDB_SIGNAL_0))
>> {
>> status->kind = TARGET_WAITKIND_STOPPED;
>> status->value.sig = GDB_SIGNAL_0;
>> break;
>> }
>>
>
> Indeed this is the case. I think i'll keep catch_errors and only fix the
> NULL parameter then. Having to adjust return values from unrelated
> functions sounds error-prone and maybe not worth it if we're moving away
> from these types of constructs in the future.
>
>
I've pushed the following now as 7cc53fba0a4e5c316a6e86fdae28f8cc9d0f9a68.
[-- Attachment #2: null_ptr.diff --]
[-- Type: text/x-patch, Size: 607 bytes --]
2015-10-26 Luis Machado <lgustavo@codesourcery.com>
* record-full.c (record_full_message_wrapper_safe): Pass empty string to
catch_errors call instead of NULL.
diff --git a/gdb/record-full.c b/gdb/record-full.c
index cd47dfa..595e357 100644
--- a/gdb/record-full.c
+++ b/gdb/record-full.c
@@ -667,7 +667,7 @@ record_full_message_wrapper_safe (struct regcache *regcache,
args.regcache = regcache;
args.signal = signal;
- return catch_errors (record_full_message_wrapper, &args, NULL,
+ return catch_errors (record_full_message_wrapper, &args, "",
RETURN_MASK_ALL);
}
^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2015-10-26 13:22 UTC | newest]
Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-09-09 14:45 [PATCH] Do not pass NULL for the string in catch_errors Luis Machado
2015-09-10 13:16 ` Pedro Alves
2015-10-21 11:19 ` Luis Machado
2015-10-22 13:39 ` Pedro Alves
2015-10-22 13:39 ` Luis Machado
2015-10-22 13:39 ` Pedro Alves
2015-10-22 13:39 ` Luis Machado
2015-10-22 15:00 ` Pedro Alves
2015-10-24 22:39 ` Luis Machado
2015-10-26 16:30 ` Luis Machado
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox