From: Khoo Yit Phang <khooyp@cs.umd.edu>
To: Tom Tromey <tromey@redhat.com>
Cc: Khoo Yit Phang <khooyp@cs.umd.edu>, gdb-patches@sourceware.org
Subject: Re: Handle SIGINT in Python
Date: Sun, 22 Jan 2012 16:36:00 -0000 [thread overview]
Message-ID: <DD1B3076-4BD0-469E-9A24-20316F919E6E@cs.umd.edu> (raw)
In-Reply-To: <m3ehuut5xe.fsf@fleche.redhat.com>
Hi,
On Jan 20, 2012, at 4:33 PM, Tom Tromey wrote:
>>>>>> "Yit" == Khoo Yit Phang <khooyp@cs.umd.edu> writes:
>
> Tom> Could we possibly solve this problem without constantly resetting the
> Tom> SIGINT handler? Maybe via a combination of a global flag plus a call
> Tom> into Python from handle_sigint?
>
> Yit> It is possible, I just need a way to call PySet_Interrupt. But it
> Yit> seems to be that it would require adding hooks to events-top.c and,
> Yit> which seems like a separate project.
>
> I think of it more as a different implementation of the feature...
In the long run, I do think that changing events-top.c is better, but I've to figure out how it should look like, for Python and other clients.
> Tom> Our python->gdb exception story is not super. And, we lose information
> Tom> in the round trip. This might (or might not...) be a prerequisite to
> Tom> solving this problem.
>
> Yit> I don't think it's a problem, unless for nested calls to python like
> Yit> "py gdb.execute('py ...')".
>
> You can't fully predict what gdb actions will cause Python code to run.
Actually, I don't think I understand what you mean. Can you give an example? (Is it related to scenario 1 below?)
> Also, Python frequently calls into gdb. Any place in gdb that invokes
> QUIT could potentially see a C-c. However, IIUC, with your patch these
> QUITs will be inactive if there is Python code up the stack -- but this
> means that some slow things in gdb will be uninterruptible.
I think there are two scenarios here:
1. When the call stack is GDB -> Python, Ctrl-C will only interrupt the Python part (unless there's special handling in the GDB part to treat KeyboardInterrupt). You would have to press Ctrl-C again to interrupt the GDB part immediately after. I wondered whether to have Ctrl-C interrupt the entire stack; it's fairly easy to do, since every Python entry is wrapped by ensure_python_env (just check for KeyboardInterrupt during cleanup and raise QUIT).
Though, there was some debate earlier in the mailing list on something related: whether Ctrl-C during gdb.execute should interrupt Python too. The concern was that there may be legitimate reasons to interrupt only part of the call stack, and the decision should depend on the particulars of the task.
2. When the call stack is GDB -> Only gdb.execute is interruptible now, since that's the only place I've suspended Python's interrupt handler. There may be other Python methods that call into GDB that is slow that could use the same treatment.
Yit
January 22, 2012
next prev parent reply other threads:[~2012-01-22 16:32 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-01-10 21:31 Khoo Yit Phang
2012-01-10 21:47 ` Doug Evans
2012-01-10 22:09 ` Khoo Yit Phang
2012-01-11 20:59 ` Tom Tromey
2012-01-11 21:06 ` Paul_Koning
2012-01-11 21:23 ` Tom Tromey
2012-01-12 0:54 ` Doug Evans
2012-01-12 15:52 ` Kevin Pouget
2012-01-12 16:48 ` Paul_Koning
2012-01-13 10:55 ` Kevin Pouget
2012-01-13 12:11 ` Paul_Koning
2012-01-10 21:49 ` Tom Tromey
2012-01-11 21:15 ` Tom Tromey
2012-01-11 21:49 ` Khoo Yit Phang
2012-01-11 22:46 ` Khoo Yit Phang
2012-01-20 21:40 ` Tom Tromey
2012-01-22 16:36 ` Khoo Yit Phang [this message]
2012-01-22 20:54 ` Khoo Yit Phang
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=DD1B3076-4BD0-469E-9A24-20316F919E6E@cs.umd.edu \
--to=khooyp@cs.umd.edu \
--cc=gdb-patches@sourceware.org \
--cc=tromey@redhat.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