Subject: Re: bug#63865: 29.0.90; call-process while owning the X selection hangs other processes

From: Po Lu <[email-masked]>
Date: Sat, 03 Jun 2023 20:07:33 +0800

Spencer Baugh <[email-masked]> writes:

> Po Lu <[email-masked]> writes:
>
>> Eli Zaretskii <[email-masked]> writes:
>>
>>>> From: Spencer Baugh <[email-masked]>
>>>> Date: Fri, 02 Jun 2023 21:55:09 -0400
>>>> 
>>>> 
>>>> 1. Under X11, with the GTK or Lucid toolkits:
>>>>    emacs -Q
>>>> 2. Become owner of the clipboard selection by killing some text; the
>>>>    starting comments in the scratch buffer are a good candidate.
>>>> 3. Immediately afterwards (i.e. without copy and pasting text in another
>>>>    window), run:
>>>>    (call-process "sleep" nil nil nil "inf")
>>>> 4. Now other applications will hang when they attempt to paste text.
>>>>    Google Chrome and Slack are two examples.  (GTK-based applications
>>>>    seem to be fine.  So much for proprietary software...)
>>>
>>> Thanks.
>>>
>>> Does this happen also with the latest pretest, v29.0.91?
>>
>> I can't reproduce this, but the closest thing to Google Chrome on the
>> computer I am currently using is Firefox 10.0.7.
>
> BTW, this can also be reproduced using just Emacs.  If I try to paste in
> another Emacs instead of in Google Chrome, I get a hang, followed by:
>
> gui-get-selection: (error "Timed out waiting for reply from selection owner")

Emacs doesn't hang...

> With -DTRACE_SELECTION on both Emacsen, the selection-owner Emacs prints
> no logs, while the pasting Emacs prints the following log:
>
> 48866: Get selection UTF8_STRING, type _EMACS_TMP_
> 48866:   Start waiting 5 secs for SelectionNotify.
> 48866:     Waiting for 0 nsecs in addition.
> 48866:   Got event = NO
> 48866: Get selection TIMESTAMP, type _EMACS_TMP_
> 48866:   Start waiting 5 secs for SelectionNotify.
> 48866:     Waiting for 0 nsecs in addition.
> 48866:   Got event = NO
>
>> So would you also build Emacs with -DTRACE_SELECTION, and show what is
>> printed by Emacs when the requestor hangs?
>
> Emacs prints nothing while stuck in call-process and the requestor
> (Chrome) is hanging.

OK, but then this is not a bug: Emacs can not respond to selection
requests when it is not reading keyboard input.