GNU bug report logs -
#29170
Emacs freezes when doing a gui-get-selection on OpenBSD
Previous Next
Reported by: daimrod <at> omecha.info (Grégoire Jadi)
Date: Mon, 6 Nov 2017 14:22:02 UTC
Severity: normal
Tags: confirmed
Merged with 45544
Found in versions 26.0.90, 27.1.90
Fixed in version 28.1
Done: Lars Ingebrigtsen <larsi <at> gnus.org>
Bug is archived. No further changes may be made.
Full log
View this message in rfc822 format
Eli Zaretskii <eliz <at> gnu.org> writes:
> Can you debug the cause which causes the freeze? What is the code
> that freezes?
I haven't debugged it, but Manuel said previously in this thread that
the following patch sort of fixes the problem (included below), but it
then leads to other issues.
But the problem is in that area, I take it.
-----
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);
--
(domestic pets only, the antidote for overdose, milk.)
bloggy blog: http://lars.ingebrigtsen.no
This bug report was last modified 3 years and 338 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.