Subject: Re: bug#12450: Remove configure's --without-sync-input option.

From: Eli Zaretskii <[email-masked]>
Date: Sun, 16 Sep 2012 08:55:14 +0300

> From: Stefan Monnier <[email-masked]>
> Cc: Eli Zaretskii <[email-masked]>,  [email-masked],  [email-masked]
> Date: Sat, 15 Sep 2012 17:12:13 -0400
> 
> >> If someone can describe in detail what SYNC_INPUT means
> 
> Maybe not quite, because it was implemented rather than designed.
> But SYNC_INPUT's purpose is to reduce the code run during POSIX's signal
> handling to its minimum (since it's basically unsafe to do anything in
> there, due to POSIX's definition of signal handling), so it only sets
> a global var (pending_signals) which is then polled by QUIT, so that the
> real code reacting to the arrival of a signal is run synchronously.
> 
> This avoids problems such as malloc being called in the middle of
> another malloc invocation.
> 
> The downside of SYNC_INPUT is that we may fail to poll pending_signals
> often enough and hence become unresponsive.  Since SYNC_INPUT has been
> the default for a long while now, I think we can drop the non-SYNC_INPUT
> case, indeed, as suggested by Paul.  But I don't know how it interacts
> with the non-X11 code.

Could you please describe how the SYNC_INPUT code is supposed to work
in the following situations:

  . keyboard input on a TTY that comes while Lisp is running

  . an X event that exposes an Emacs frame in a GUI session, coming
    while Lisp is running

Thanks.