From: ludo@gnu.org (Ludovic Courtès)
To: Doug Evans <xdje42@gmail.com>
Cc: Eli Zaretskii <eliz@gnu.org>,
gdb-patches@sourceware.org, guile-devel@gnu.org
Subject: Re: [PATCH v2] Improved ^c support for gdb/guile
Date: Tue, 18 Feb 2014 11:20:00 -0000 [thread overview]
Message-ID: <871tz0d5vc.fsf@gnu.org> (raw)
In-Reply-To: <CAP9bCMQiZurfMyU-qA9LEy_6_BOyRE1-dke93_m505EHuNZrAA@mail.gmail.com> (Doug Evans's message of "Mon, 17 Feb 2014 16:37:30 -0800")
Doug Evans <xdje42@gmail.com> skribis:
> On Mon, Feb 17, 2014 at 1:13 PM, Eli Zaretskii <eliz@gnu.org> wrote:
>>> Date: Mon, 17 Feb 2014 12:59:22 -0800
>>> From: Doug Evans <xdje42@gmail.com>
>>> Cc: "gdb-patches@sourceware.org" <gdb-patches@sourceware.org>, guile-devel@gnu.org
>>>
>>> >> +void
>>> >> +gdbscm_initialize_sigint (void)
>>> >> +{
>>> >> + siscm_sigint_pipe[0] = siscm_sigint_pipe[1] = -1;
>>> >> +
>>> >> + if (!SCM_USE_PTHREAD_THREADS)
>>> >> + {
>>> >> + warning (_("Guile does not have pthreads support."));
>>> >> + warning (_("Proper SIGINT handling for Guile will be unavailable."));
>>> >> + return;
>>> >> + }
>>> >
>>> > The above is what worries me. Guile currently doesn't work in the
>>> > native MinGW build if configured with threads (it crashes, hangs,
>>> > etc.). Can't we have decent SIGINT handling without pthreads?
I don’t remember, Eli: do you have patches pending review for these
issues and other MinGW issues in Guile?
>>> With 2.0.x, no.
>>> I'm ok with changing the warning, e.g., not printing it at all on
>>> systems where it would otherwise always be printed, and instead
>>> documenting the issue for such systems.
>>>
>>> The downside is that while Scheme code is running SIGINT is ignored
>>> (unless one is in the repl, or sets up a SIGINT handler oneself).
>>
>> Ignored why? because GDB sets the handler to SIG_IGN? Or for some
>> other reason?
>
> A better way to phrase that is the SIGINT is deferred until the call
> out to Guile returns.
> Why? Because Guile's SIGINT handling in 2.0.x requires a separate
> thread: that's how all async signals are handled in Guile.
> ref: guile-2.0.9/libguile/scmsigs.c
Right, when Guile is built with pthread support, it has a signal
delivery thread. The actual SIGINT handler (‘take_signal’ in scmsigs.c)
just write one byte to a pipe; the signal delivery thread reads from
that pipe, and queues an async in the destination thread for later
execution.
> I'll let guile-devel take over at this point - I understand the code,
> but may miss something noteworthy.
> There is code in scmsigs.c to handle the non-pthread case but it's not
> clear how much is exported nor how well it works.
The non-pthread code is used when Guile is built without pthread
support. In that case, the async is queued directly from the signal
handler.
(I think we should aim to get rid of the signal-delivery thread
eventually, and I remember Mark mentioned it before too.)
HTH,
Ludo’.
next prev parent reply other threads:[~2014-02-18 11:20 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-02-17 7:39 [PATCH] " Doug Evans
2014-02-17 9:27 ` Mark Kettenis
2014-02-17 16:06 ` Ludovic Courtès
2014-02-17 20:26 ` [PATCH v2] " Doug Evans
2014-02-17 20:43 ` Eli Zaretskii
2014-02-17 20:59 ` Doug Evans
2014-02-17 21:13 ` Eli Zaretskii
2014-02-18 0:37 ` Doug Evans
2014-02-18 11:20 ` Ludovic Courtès [this message]
2014-02-18 16:02 ` Eli Zaretskii
2014-02-18 16:45 ` Ludovic Courtès
2014-02-18 16:56 ` Eli Zaretskii
2014-02-18 17:46 ` Ludovic Courtès
2014-02-18 17:58 ` Eli Zaretskii
2014-02-18 23:08 ` Ludovic Courtès
2014-02-19 7:51 ` Mark H Weaver
2014-02-19 16:42 ` Eli Zaretskii
2014-02-18 17:31 ` Doug Evans
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=871tz0d5vc.fsf@gnu.org \
--to=ludo@gnu.org \
--cc=eliz@gnu.org \
--cc=gdb-patches@sourceware.org \
--cc=guile-devel@gnu.org \
--cc=xdje42@gmail.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