bug-gnu-emacs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

bug#29170: Infinite loop noticed on Emacs in OpenBSD


From: Manuel Giraud
Subject: bug#29170: Infinite loop noticed on Emacs in OpenBSD
Date: Thu, 09 Nov 2017 16:06:22 +0100
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.90 (berkeley-unix)

Hi,

Here is a patch against HEAD to avoid the hang in infinite loop. The
'x-selection-timeout' pause will still be there even with this patch.

My understandings:

On OpenBSD, most of the time, the function
"xselect.c/x_get_foreign_selection" won't get a SelectNotify with
(SECONDARY, TEXT) as arguments (that I did not understand and it might
never happen on other oses).

But then, while waiting at most 'x-selection-timeout' into
"process.c/wait_reading_process_output" the 'now' variable won't have a
chance of being invalidated or updated and that is what cause the
infinite loop.

Someone more knowledgeable of "process.c/wait_reading_process_output"
might have a better solution to this problem.

diff --git a/src/process.c b/src/process.c
index fc46e74332..25bd28a82b 100644
--- a/src/process.c
+++ b/src/process.c
@@ -5115,8 +5115,7 @@ wait_reading_process_output (intmax_t time_limit, int 
nsecs, int read_kbd,
       /* Exit if already run out.  */
       if (wait == TIMEOUT)
        {
-         if (!timespec_valid_p (now))
-           now = current_timespec ();
+         now = current_timespec ();
          if (timespec_cmp (end_time, now) <= 0)
            break;
          timeout = timespec_sub (end_time, now);
-- 
Manuel Giraud





reply via email to

[Prev in Thread] Current Thread [Next in Thread]