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

From: Spencer Baugh <[email-masked]>
Date: Sat, 03 Jun 2023 11:34:44 -0400

Eli Zaretskii <[email-masked]> writes:
>> I would be happy with a targeted, specific fix for the bad behavior I
>> reported.
>> 
>> Here's a specific instance that would be good to fix: If I run "M-!
>> sleep 30 RET", that will cause some applications to hang while Emacs is
>> waiting on the sleep; sometimes (as with Slack) without user
>> interaction, or sometimes only if the user tries to paste in them.  Do
>> you have a suggestion on how to fix that?
>
> No, I don't.  And I explained why at the very beginning.  I invite you
> to read xselect.c and see what kind of processing we do there to
> handle selection requests.

What about a new version of call-process, maybe
"call-process-allow-lisp", which doesn't stop timers/process
filters/Lisp/etc from running while Emacs is blocked in it?  Then any
caller which doesn't want to stop Lisp from running while they are
waiting for the subprocess can use "call-process-allow-lisp" instead of
"call-process".

I can implement that if it sounds desirable.  I can also send a mail to
emacs-devel if you want more discussion of it beforehand.