all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: Mike Crowe <mac@mcrowe.com>
To: Emacs Development <Emacs-devel@gnu.org>,
	Paul Eggert <eggert@cs.ucla.edu>
Cc: "Alex Bennée" <alex.bennee@linaro.org>
Subject: Re: [PATCH] Re-enable SIGIO when waiting for events
Date: Wed, 5 Aug 2015 15:28:14 +0100	[thread overview]
Message-ID: <20150805142814.GA6222@mcrowe.com> (raw)
In-Reply-To: <877fpghnic.fsf@linaro.org>

[-- Attachment #1: Type: text/plain, Size: 1082 bytes --]

Paul Eggert wrote:
>>>>> Thanks for checking.  I installed a similar patch as Emacs master
>>>>> commit 0592cefd03f1de2f04b721d07a16e6e0a9e48f73; could you please
>>>>> give it a try?  It is like Mike Crowe's patch, except it avoids a
>>>>> race that could lose SIGIOs.  I'll also send a heads-up email to the
>>>>> relevant bug reports.

I wrote:
>>> I've been testing with 0592cefd03f1de2f04b721d07a16e6e0a9e48f73
>>> applied to Debian Jessie's emacs24 (24.4+1-5) for over a week now
>>> without seeing any problems so I think we can call the bug fixed.
 
On Friday 31 July 2015 at 07:03:39 +0100, Alex Bennée wrote:
> Will it get applied to the emacs-24 branch or is that considered dead now?

I'm sort of hoping that I can get this fix into a Debian Jessie stable
update. It being in upstream emacs-24 would make this more rather more
likely. (Debian doesn't allow stuff to be fixed in stable that isn't
already fixed in unstable.)

Is there any chance of committing the fix to emacs-24? It doesn't
cherry-pick cleanly but only requires minor fixing (attached.)

Thanks.

Mike.

[-- Attachment #2: 0001-Fix-hang-with-large-yanks.patch --]
[-- Type: text/x-diff, Size: 3407 bytes --]

From d47c5b810123c6cbd14dd38ac461aa01a4eabacf Mon Sep 17 00:00:00 2001
From: Paul Eggert <eggert@cs.ucla.edu>
Date: Fri, 17 Jul 2015 11:54:24 -0700
Subject: [PATCH] Fix hang with large yanks

Backport of emacs-25 0592cefd03f1de2f04b721d07a16e6e0a9e48f73. Upstream
comment follows:

Fix hang with large yanks This should fix the bug fixed by Mike

Crowe's patch in:
https://lists.gnu.org/archive/html/emacs-devel/2015-07/msg00106.html
A problem in this area has been reported by several users; see
Bug#16737, Bug#17101, Bug#17026, Bug#17172, Bug#19320, Bug#20283.
This fix differs from Mike Crowe's patch in that it should avoid a
race condition that could lose SIGIO signals.  ignore_sigio dates
back to the 1980s when some platforms couldn't block signals, and
could only ignore them, which led to races when signals arrived
while being ignored.  We shouldn't have to worry about those old
platforms now.
* src/dispextern.h, src/sysdep.c (ignore_sigio): Remove.
* src/emacs.c (shut_down_emacs):
Don't call ignore_sigio; unrequest_sigio should suffice.
* src/keyboard.c (kbd_buffer_store_buffered_event):
Use unrequest_sigio, not ignore_sigio.
(kbd_buffer_get_event):
Call request_sigio when getting the ball rolling again.

Conflicts:
	src/sysdep.c
---
 src/dispextern.h | 1 -
 src/emacs.c      | 1 -
 src/keyboard.c   | 4 ++--
 src/sysdep.c     | 9 ---------
 4 files changed, 2 insertions(+), 13 deletions(-)

diff --git a/src/dispextern.h b/src/dispextern.h
index 239c442..cf3d1ec 100644
--- a/src/dispextern.h
+++ b/src/dispextern.h
@@ -3349,7 +3349,6 @@ void unrequest_sigio (void);
 bool tabs_safe_p (int);
 void init_baud_rate (int);
 void init_sigio (int);
-void ignore_sigio (void);
 
 /* Defined in xfaces.c.  */
 
diff --git a/src/emacs.c b/src/emacs.c
index 9b78a70..b5d3ab4 100644
--- a/src/emacs.c
+++ b/src/emacs.c
@@ -2028,7 +2028,6 @@ shut_down_emacs (int sig, Lisp_Object stuff)
   /* There is a tendency for a SIGIO signal to arrive within exit,
      and cause a SIGHUP because the input descriptor is already closed.  */
   unrequest_sigio ();
-  ignore_sigio ();
 
   /* Do this only if terminating normally, we want glyph matrices
      etc. in a core dump.  */
diff --git a/src/keyboard.c b/src/keyboard.c
index 945019e..77af44a 100644
--- a/src/keyboard.c
+++ b/src/keyboard.c
@@ -3663,8 +3663,7 @@ kbd_buffer_store_event_hold (register struct input_event *event,
           /* Don't read keyboard input until we have processed kbd_buffer.
              This happens when pasting text longer than KBD_BUFFER_SIZE/2.  */
           hold_keyboard_input ();
-          if (!noninteractive)
-            ignore_sigio ();
+          unrequest_sigio ();
           stop_polling ();
         }
 #endif	/* subprocesses */
@@ -3829,6 +3828,7 @@ kbd_buffer_get_event (KBOARD **kbp,
       /* Start reading input again because we have processed enough to
          be able to accept new events again.  */
       unhold_keyboard_input ();
+      request_sigio ();
       start_polling ();
     }
 #endif	/* subprocesses */
diff --git a/src/sysdep.c b/src/sysdep.c
index 01692c2..4b4801d 100644
--- a/src/sysdep.c
+++ b/src/sysdep.c
@@ -649,15 +649,6 @@ unrequest_sigio (void)
   interrupts_deferred = 1;
 #endif
 }
-
-void
-ignore_sigio (void)
-{
-#ifdef USABLE_SIGIO
-  signal (SIGIO, SIG_IGN);
-#endif
-}
-
 \f
 /* Saving and restoring the process group of Emacs's terminal.  */
 
-- 
2.1.4


  reply	other threads:[~2015-08-05 14:28 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-07-11 11:58 [PATCH] Re-enable SIGIO when waiting for events Mike Crowe
2015-07-17  8:45 ` Alex Bennée
2015-07-17  8:50   ` Tassilo Horn
2015-07-17 19:00     ` Paul Eggert
2015-07-21 12:42       ` Mike Crowe
2015-07-30 16:31         ` Mike Crowe
2015-07-30 18:49           ` bug#16737: " Tassilo Horn
2015-07-30 18:49           ` Tassilo Horn
2015-07-31  6:03             ` Alex Bennée
2015-08-05 14:28               ` Mike Crowe [this message]
2015-08-05 17:46                 ` Paul Eggert
2015-09-13 18:57                   ` [PATCH] Re-enable SIGIO when waiting for events (bug# 16737) Alan D. Salewski
2015-09-13 19:14                     ` bug#16737: " Alan D. Salewski
2015-07-31  6:03             ` bug#16737: [PATCH] Re-enable SIGIO when waiting for events Alex Bennée

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=20150805142814.GA6222@mcrowe.com \
    --to=mac@mcrowe.com \
    --cc=Emacs-devel@gnu.org \
    --cc=alex.bennee@linaro.org \
    --cc=eggert@cs.ucla.edu \
    /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.
Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/emacs.git
	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.