Package: emacs;
Reported by: Spencer Baugh <sbaugh <at> janestreet.com>
Date: Sat, 3 Jun 2023 01:56:01 UTC
Severity: normal
Found in version 29.0.90
View this message in rfc822 format
From: Spencer Baugh <sbaugh <at> janestreet.com> To: Po Lu <luangruo <at> yahoo.com> Cc: Eli Zaretskii <eliz <at> gnu.org>, 63865 <at> debbugs.gnu.org Subject: bug#63865: 29.0.90; call-process while owning the X selection hangs other processes Date: Sat, 03 Jun 2023 07:10:41 -0400
Po Lu <luangruo <at> yahoo.com> writes: > Eli Zaretskii <eliz <at> gnu.org> writes: > >>> From: Spencer Baugh <sbaugh <at> janestreet.com> >>> 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") 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. After I interrupt call-process, this log prints. 48290: x_handle_selection_event 48290: XGetAtomName --> NULL 48290: XGetAtomName --> text/plain;charset=utf-8 48290: x_handle_selection_request: selection=CLIPBOARD, target=text/plain;charset=utf-8 48290: XInternAtom text/plain;charset=utf-8 48290: x_start_selection_transfer: transferring to 0x1600000. transfer consists of 70 bytes, quantum being 16777112 48290: x_start_selection_transfer: writing 70 elements directly to requestor window 48290: x_handle_selection_event 48290: x_handle_selection_request: selection=CLIPBOARD, target=TARGETS 48290: x_start_selection_transfer: transferring to 0x1600000. transfer consists of 92 bytes, quantum being 16777112 48290: x_start_selection_transfer: writing 23 elements directly to requestor window 48290: x_handle_selection_event 48290: x_handle_selection_request: selection=CLIPBOARD, target=TARGETS 48290: x_start_selection_transfer: transferring to 0x1600000. transfer consists of 92 bytes, quantum being 16777112 48290: x_start_selection_transfer: writing 23 elements directly to requestor window 48290: x_handle_selection_event 48290: x_handle_selection_request: selection=CLIPBOARD, target=UTF8_STRING 48290: x_start_selection_transfer: transferring to 0x1600000. transfer consists of 70 bytes, quantum being 16777112 48290: x_start_selection_transfer: writing 70 elements directly to requestor window 48290: x_handle_selection_event 48290: x_handle_selection_request: selection=CLIPBOARD, target=TARGETS 48290: x_start_selection_transfer: transferring to 0x1600000. transfer consists of 92 bytes, quantum being 16777112 48290: x_start_selection_transfer: writing 23 elements directly to requestor window 48290: x_handle_selection_event 48290: x_handle_selection_request: selection=CLIPBOARD, target=TARGETS 48290: x_start_selection_transfer: transferring to 0x1600000. transfer consists of 92 bytes, quantum being 16777112 48290: x_start_selection_transfer: writing 23 elements directly to requestor window 48290: x_handle_selection_event 48290: x_handle_selection_request: selection=CLIPBOARD, target=TARGETS 48290: x_start_selection_transfer: transferring to 0x1600000. transfer consists of 92 bytes, quantum being 16777112 48290: x_start_selection_transfer: writing 23 elements directly to requestor window 48290: x_handle_selection_event 48290: x_handle_selection_request: selection=CLIPBOARD, target=UTF8_STRING 48290: x_start_selection_transfer: transferring to 0x1600000. transfer consists of 70 bytes, quantum being 16777112 48290: x_start_selection_transfer: writing 70 elements directly to requestor window 48290: x_handle_selection_event 48290: x_handle_selection_request: selection=CLIPBOARD, target=TARGETS 48290: x_start_selection_transfer: transferring to 0x1600000. transfer consists of 92 bytes, quantum being 16777112 48290: x_start_selection_transfer: writing 23 elements directly to requestor window 48290: x_handle_selection_event 48290: x_handle_selection_request: selection=CLIPBOARD, target=TARGETS 48290: x_start_selection_transfer: transferring to 0x1600000. transfer consists of 92 bytes, quantum being 16777112 48290: x_start_selection_transfer: writing 23 elements directly to requestor window 48290: x_handle_selection_event 48290: x_handle_selection_request: selection=CLIPBOARD, target=TARGETS 48290: x_start_selection_transfer: transferring to 0x1600000. transfer consists of 92 bytes, quantum being 16777112 48290: x_start_selection_transfer: writing 23 elements directly to requestor window 48290: x_handle_selection_event 48290: x_handle_selection_request: selection=CLIPBOARD, target=UTF8_STRING 48290: x_start_selection_transfer: transferring to 0x1600000. transfer consists of 70 bytes, quantum being 16777112 48290: x_start_selection_transfer: writing 70 elements directly to requestor window 48290: x_handle_selection_event 48290: x_handle_selection_request: selection=CLIPBOARD, target=TARGETS 48290: x_start_selection_transfer: transferring to 0x1600000. transfer consists of 92 bytes, quantum being 16777112 48290: x_start_selection_transfer: writing 23 elements directly to requestor window 48290: x_handle_selection_event 48290: x_handle_selection_request: selection=CLIPBOARD, target=TARGETS 48290: x_start_selection_transfer: transferring to 0x1600000. transfer consists of 92 bytes, quantum being 16777112 48290: x_start_selection_transfer: writing 23 elements directly to requestor window 48290: x_handle_selection_event 48290: x_handle_selection_request: selection=CLIPBOARD, target=TARGETS 48290: x_start_selection_transfer: transferring to 0x1600000. transfer consists of 92 bytes, quantum being 16777112 48290: x_start_selection_transfer: writing 23 elements directly to requestor window 48290: x_handle_selection_event 48290: x_handle_selection_request: selection=CLIPBOARD, target=UTF8_STRING 48290: x_start_selection_transfer: transferring to 0x1600000. transfer consists of 70 bytes, quantum being 16777112 48290: x_start_selection_transfer: writing 70 elements directly to requestor window
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.