Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
From: Pedro Alves <palves@redhat.com>
To: Tom Tromey <tom@tromey.com>, gdb-patches@sourceware.org
Subject: Re: [RFA 09/10] Return EXT_LANG_BT_ERROR in one more spot in py-framefilter.c
Date: Tue, 27 Jun 2017 19:08:00 -0000	[thread overview]
Message-ID: <86211a34-85c4-312f-37dd-6541219d0e6b@redhat.com> (raw)
In-Reply-To: <b18d66dc-d93f-871b-6c17-b10a62011c6d@redhat.com>

On 06/27/2017 06:31 PM, Pedro Alves wrote:
> On 04/25/2017 08:41 PM, Tom Tromey wrote:
>> While reading py-framefilter.c, I found one spot where an exception
>> could be caught but then not be turned into EXT_LANG_BT_ERROR.  This
>> patch fixes this spot.
> 
> Eek.  LGTM.
> 
> I wonder whether we could wrap the TRY/CATCHes in something
> that would do this exception handling systematically/automatically.
> Maybe:
> 
> template<typename Func>
> enum ext_lang_bt_status success
> try_py (Func &&f)
> {
>   TRY
>     {
>       f ();
>     }
>   CATCH (except, RETURN_MASK_ALL)
>     {
>       gdbpy_convert_exception (except);
>       return EXT_LANG_BT_ERROR;
>     }
>   END_CATCH  
> 
>   return EXT_LANG_BT_OK;
> }
> 
> Used like:
> 
>  return try_py ([] 
>    {
>      // old body of TRY goes here.
>    });

I gave this a quick try, but it looked ugly, not much
of an improvement.  Maybe with statement expressions
or macros it'd look better...

The way to go is actually probably to follow up on the idea
of patch #6, and actually just remove the TRY/CATCHes,
letting the exceptions propagate and catch them somewhere
higher up the chain.  Other than marshalling C++ exceptions near
Python/ext_lang entry point code, is there another reason we need
all the TRY/CATCHes?  [assuming local resource management has
been RAII-fied.]

Thanks,
Pedro Alves


  reply	other threads:[~2017-06-27 19:08 UTC|newest]

Thread overview: 40+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-04-25 19:41 [RFA 00/10] various frame filter fixes and cleanups Tom Tromey
2017-04-25 19:41 ` [RFA 06/10] Allow C-c to work in backtrace in more cases Tom Tromey
2017-04-28 14:55   ` Phil Muldoon
2017-06-27 16:46   ` Pedro Alves
2017-04-25 19:41 ` [RFA 01/10] Rationalize "backtrace" command line parsing Tom Tromey
2017-06-27 16:25   ` Pedro Alves
2017-07-09 22:34     ` Tom Tromey
2017-07-10 16:48       ` Eli Zaretskii
2017-07-14 12:08       ` Pedro Alves
2017-04-25 19:41 ` [RFA 04/10] Remove EXT_LANG_BT_COMPLETED Tom Tromey
2017-04-28 14:52   ` Phil Muldoon
2017-06-27 16:40     ` Pedro Alves
2017-04-25 19:42 ` [RFA 07/10] Throw a "quit" on a KeyboardException in py-framefilter.c Tom Tromey
2017-04-28 15:06   ` Phil Muldoon
2017-06-27 16:59   ` Pedro Alves
2017-04-25 19:42 ` [RFA 03/10] Allow elision of some filtered frames Tom Tromey
2017-04-26 10:35   ` Eli Zaretskii
2017-04-28 14:50   ` Phil Muldoon
2017-06-27 16:40   ` Pedro Alves
2017-06-27 20:01     ` Tom Tromey
2017-04-25 19:42 ` [RFA 05/10] Avoid manual resource management in py-framefilter.c Tom Tromey
2017-04-28 14:53   ` Phil Muldoon
2017-06-27 16:43   ` Pedro Alves
2017-04-25 19:42 ` [RFA 10/10] Call wrap_hint in one more spot " Tom Tromey
2017-04-28 15:09   ` Phil Muldoon
2017-06-27 17:35     ` Pedro Alves
2017-04-25 19:42 ` [RFA 09/10] Return EXT_LANG_BT_ERROR " Tom Tromey
2017-04-28 15:08   ` Phil Muldoon
2017-06-27 17:31   ` Pedro Alves
2017-06-27 19:08     ` Pedro Alves [this message]
2017-04-25 19:43 ` [RFA 08/10] Move some code later in backtrace_command_1 Tom Tromey
2017-04-28 15:08   ` Phil Muldoon
2017-06-27 17:18   ` Pedro Alves
2017-04-25 19:43 ` [RFA 02/10] Change backtrace_command_1 calling to use flags Tom Tromey
2017-04-28 14:40   ` Phil Muldoon
2017-06-27 16:29   ` Pedro Alves
2017-07-09 22:22     ` Tom Tromey
2017-07-14 12:02       ` Pedro Alves
2017-07-14 19:16         ` Tom Tromey
2017-05-29 17:21 ` [RFA 00/10] various frame filter fixes and cleanups Tom Tromey

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=86211a34-85c4-312f-37dd-6541219d0e6b@redhat.com \
    --to=palves@redhat.com \
    --cc=gdb-patches@sourceware.org \
    --cc=tom@tromey.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox