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

Bug#913237: xterm: exec-formatted yields a tilde character in zsh and emacs



On 2018-12-05 09:58:21 +0100, Vincent Lefevre wrote:
> On 2018-12-04 21:50:47 -0500, Thomas Dickey wrote:
> > That looks as expected, if you've got two different things writing to
> > the terminal at the same time:
> > 
> > https://invisible-island.net/xterm/ctlseqs/ctlseqs.html#h2-Bracketed-Paste-Mode
> 
> So, perhaps I can see something with zsh (without Ctrl-V first) and
> Emacs because bracketed paste is enabled or something like that.
> 
> > but the execvp command by itself doesn't do the writing
> 
> So, what is doing the writing?

According to strace, it is xterm:

9778  10:04:41.227873 execve("/usr/bin/xterm", ["/usr/bin/xterm"], 0x7ffe02b1f450 /* 130 vars */) = 0
[...]
9778  10:04:49.481306 clone(child_stack=NULL, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, child_tidptr=0x7f25aa037850) = 9880
9880  10:04:49.481629 set_robust_list(0x7f25aa037860, 24 <unfinished ...>
9778  10:04:49.481637 write(4, "\33[201~", 6 <unfinished ...>
[...]

The full "strace -f -tt" output after the Ctrl-Meta-click that
triggers the exec-formatted:

9778  10:04:47.351453 recvmsg(3, {msg_name=NULL, msg_namelen=0, msg_iov=[{iov_base="\2%\321\4\3715\253\31\354\2\0\0\33\0@\4\0\0\0\0i\10\377\0\323\0}\0\0\0\1\0", iov_len=4096}], msg_iovlen=1, msg_controllen=0, msg_flags=0}, 0) = 32
9778  10:04:47.351782 recvmsg(3, {msg_namelen=0}, 0) = -1 EAGAIN (Resource temporarily unavailable)
9778  10:04:47.352239 poll([{fd=3, events=POLLIN}], 1, 0) = 0 (Timeout)
9778  10:04:47.352691 poll([{fd=3, events=POLLIN}], 1, 0) = 0 (Timeout)
9778  10:04:47.353263 poll([{fd=3, events=POLLIN|POLLOUT}], 1, -1) = 1 ([{fd=3, revents=POLLOUT}])
9778  10:04:47.353418 writev(3, [{iov_base="-\32\4\0004\0@\4\4\0@\4nil2/\335\2\0004\0@\4", iov_len=24}, {iov_base=NULL, iov_len=0}, {iov_base="", iov_len=0}], 3) = 24
9778  10:04:47.353772 poll([{fd=3, events=POLLIN}], 1, -1) = 1 ([{fd=3, revents=POLLIN}])
9778  10:04:47.354220 recvmsg(3, {msg_name=NULL, msg_namelen=0, msg_iov=[{iov_base="\1\0\323\0041\3\0\0\0\0\0\0\1\0\0\0\377\377\0\0\0\0\0\0\0\0\1\0\1\0\2\0"..., iov_len=4096}], msg_iovlen=1, msg_controllen=0, msg_flags=0}, 0) = 3300
9778  10:04:47.354712 poll([{fd=3, events=POLLIN|POLLOUT}], 1, -1) = 1 ([{fd=3, revents=POLLOUT}])
9778  10:04:47.355050 writev(3, [{iov_base="/\32\2\0004\0@\4", iov_len=8}, {iov_base=NULL, iov_len=0}, {iov_base="", iov_len=0}], 3) = 8
9778  10:04:47.355221 poll([{fd=3, events=POLLIN}], 1, -1) = 1 ([{fd=3, revents=POLLIN}])
9778  10:04:47.355322 recvmsg(3, {msg_name=NULL, msg_namelen=0, msg_iov=[{iov_base="\1\0\324\0041\3\0\0\0\0\0\0\1\0\0\0\377\377\0\0\0\0\0\0\0\0\1\0\1\0\2\0"..., iov_len=4096}], msg_iovlen=1, msg_controllen=0, msg_flags=0}, 0) = 3300
9778  10:04:47.355472 poll([{fd=3, events=POLLIN|POLLOUT}], 1, -1) = 1 ([{fd=3, revents=POLLOUT}])
9778  10:04:47.355542 writev(3, [{iov_base="\20\0\4\0\6\0@\4cursorl2", iov_len=16}, {iov_base=NULL, iov_len=0}, {iov_base="", iov_len=0}], 3) = 16
9778  10:04:47.355621 poll([{fd=3, events=POLLIN}], 1, -1) = 1 ([{fd=3, revents=POLLIN}])
9778  10:04:47.355704 recvmsg(3, {msg_name=NULL, msg_namelen=0, msg_iov=[{iov_base="\1\0\325\4\0\0\0\0\231\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0", iov_len=4096}], msg_iovlen=1, msg_controllen=0, msg_flags=0}, 0) = 32
9778  10:04:47.355799 recvmsg(3, {msg_namelen=0}, 0) = -1 EAGAIN (Resource temporarily unavailable)
9778  10:04:47.355861 recvmsg(3, {msg_namelen=0}, 0) = -1 EAGAIN (Resource temporarily unavailable)
9778  10:04:47.355923 poll([{fd=3, events=POLLIN|POLLOUT}], 1, -1) = 1 ([{fd=3, revents=POLLOUT}])
9778  10:04:47.355987 writev(3, [{iov_base="^\0\10\0005\0@\0044\0@\0044\0@\4X\0 \0\0\0\0\0\0\0\0\0\0\0\0\0"..., iov_len=72}, {iov_base=NULL, iov_len=0}, {iov_base="", iov_len=0}], 3) = 72
9778  10:04:47.356062 recvmsg(3, {msg_namelen=0}, 0) = -1 EAGAIN (Resource temporarily unavailable)
9778  10:04:47.356122 recvmsg(3, {msg_namelen=0}, 0) = -1 EAGAIN (Resource temporarily unavailable)
9778  10:04:47.356182 poll([{fd=3, events=POLLIN}], 1, 0) = 0 (Timeout)
9778  10:04:47.356245 recvmsg(3, {msg_namelen=0}, 0) = -1 EAGAIN (Resource temporarily unavailable)
9778  10:04:47.356304 recvmsg(3, {msg_namelen=0}, 0) = -1 EAGAIN (Resource temporarily unavailable)
9778  10:04:47.356365 recvmsg(3, {msg_namelen=0}, 0) = -1 EAGAIN (Resource temporarily unavailable)
9778  10:04:47.356424 recvmsg(3, {msg_namelen=0}, 0) = -1 EAGAIN (Resource temporarily unavailable)
9778  10:04:47.356483 recvmsg(3, {msg_namelen=0}, 0) = -1 EAGAIN (Resource temporarily unavailable)
9778  10:04:47.356542 recvmsg(3, {msg_namelen=0}, 0) = -1 EAGAIN (Resource temporarily unavailable)
9778  10:04:47.356602 poll([{fd=3, events=POLLIN}], 1, 0) = 0 (Timeout)
9778  10:04:47.356661 select(5, [3 4], [], NULL, NULL) = 1 (in [3])
9778  10:04:47.375198 recvmsg(3, {msg_name=NULL, msg_namelen=0, msg_iov=[{iov_base="\2\205\331\4\0216\253\31\354\2\0\0\33\0@\4\0\0\0\0i\10\377\0\323\0}\0\4\0\1\0", iov_len=4096}], msg_iovlen=1, msg_controllen=0, msg_flags=0}, 0) = 32
9778  10:04:47.375643 recvmsg(3, {msg_namelen=0}, 0) = -1 EAGAIN (Resource temporarily unavailable)
9778  10:04:47.376094 poll([{fd=3, events=POLLIN}], 1, 0) = 0 (Timeout)
9778  10:04:47.376420 poll([{fd=3, events=POLLIN}], 1, 0) = 0 (Timeout)
9778  10:04:47.376667 recvmsg(3, {msg_namelen=0}, 0) = -1 EAGAIN (Resource temporarily unavailable)
9778  10:04:47.377104 recvmsg(3, {msg_namelen=0}, 0) = -1 EAGAIN (Resource temporarily unavailable)
9778  10:04:47.377450 poll([{fd=3, events=POLLIN}], 1, 0) = 0 (Timeout)
9778  10:04:47.377733 recvmsg(3, {msg_namelen=0}, 0) = -1 EAGAIN (Resource temporarily unavailable)
9778  10:04:47.377994 recvmsg(3, {msg_namelen=0}, 0) = -1 EAGAIN (Resource temporarily unavailable)
9778  10:04:47.378136 recvmsg(3, {msg_namelen=0}, 0) = -1 EAGAIN (Resource temporarily unavailable)
9778  10:04:47.378209 poll([{fd=3, events=POLLIN}], 1, 0) = 0 (Timeout)
9778  10:04:47.378285 select(5, [3 4], [], NULL, NULL) = 1 (in [3])
9778  10:04:49.479204 recvmsg(3, {msg_name=NULL, msg_namelen=0, msg_iov=[{iov_base="\10\1\331\4I>\253\31\354\2\0\0\r\0@\4\33\0@\4i\10\377\0\323\0}\0\f\1\1\3"..., iov_len=4096}], msg_iovlen=1, msg_controllen=0, msg_flags=0}, 0) = 96
9778  10:04:49.479468 recvmsg(3, {msg_namelen=0}, 0) = -1 EAGAIN (Resource temporarily unavailable)
9778  10:04:49.479684 poll([{fd=3, events=POLLIN}], 1, 0) = 0 (Timeout)
9778  10:04:49.479824 poll([{fd=3, events=POLLIN}], 1, 0) = 0 (Timeout)
9778  10:04:49.479857 poll([{fd=3, events=POLLIN|POLLOUT}], 1, -1) = 1 ([{fd=3, revents=POLLOUT}])
9778  10:04:49.479881 writev(3, [{iov_base="[\0\4\0 \0\0\0\0\0\377\0\0\0\0\0", iov_len=16}, {iov_base=NULL, iov_len=0}, {iov_base="", iov_len=0}], 3) = 16
9778  10:04:49.479912 poll([{fd=3, events=POLLIN}], 1, -1) = 1 ([{fd=3, revents=POLLIN}])
9778  10:04:49.479952 recvmsg(3, {msg_name=NULL, msg_namelen=0, msg_iov=[{iov_base="\1\0\332\4\4\0\0\0\2\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., iov_len=4096}], msg_iovlen=1, msg_controllen=0, msg_flags=0}, 0) = 48
9778  10:04:49.479988 poll([{fd=3, events=POLLIN}], 1, 0) = 0 (Timeout)
9778  10:04:49.480009 poll([{fd=3, events=POLLIN}], 1, 0) = 0 (Timeout)
9778  10:04:49.480049 poll([{fd=3, events=POLLIN|POLLOUT}], 1, -1) = 1 ([{fd=3, revents=POLLOUT}])
9778  10:04:49.480070 writev(3, [{iov_base="`\0\5\0\2\0@\4\377\377\0\0\0\0\0\0\0\0\0\0\2\0\4\0\33\0@\4\0@\0\0"..., iov_len=68}, {iov_base=NULL, iov_len=0}, {iov_base="", iov_len=0}], 3) = 68
9778  10:04:49.480095 poll([{fd=3, events=POLLIN}], 1, -1) = 1 ([{fd=3, revents=POLLIN}])
9778  10:04:49.480272 recvmsg(3, {msg_name=NULL, msg_namelen=0, msg_iov=[{iov_base="\1\0\336\4\0\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0", iov_len=4096}], msg_iovlen=1, msg_controllen=0, msg_flags=0}, 0) = 32
9778  10:04:49.480303 poll([{fd=3, events=POLLIN|POLLOUT}], 1, -1) = 1 ([{fd=3, revents=POLLOUT}])
9778  10:04:49.480324 writev(3, [{iov_base="\20\0\3\0\4\0@\4TEXT", iov_len=12}, {iov_base=NULL, iov_len=0}, {iov_base="", iov_len=0}], 3) = 12
9778  10:04:49.480349 poll([{fd=3, events=POLLIN}], 1, -1) = 1 ([{fd=3, revents=POLLIN}])
9778  10:04:49.480372 recvmsg(3, {msg_name=NULL, msg_namelen=0, msg_iov=[{iov_base="\1\0\337\4\0\0\0\0|\2\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0", iov_len=4096}], msg_iovlen=1, msg_controllen=0, msg_flags=0}, 0) = 32
9778  10:04:49.480398 poll([{fd=3, events=POLLIN|POLLOUT}], 1, -1) = 1 ([{fd=3, revents=POLLOUT}])
9778  10:04:49.480419 writev(3, [{iov_base="\20\0\6\0\r\0@\4COMPOUND_TEXT\0\4\0", iov_len=24}, {iov_base=NULL, iov_len=0}, {iov_base="", iov_len=0}], 3) = 24
9778  10:04:49.480443 poll([{fd=3, events=POLLIN}], 1, -1) = 1 ([{fd=3, revents=POLLIN}])
9778  10:04:49.480464 recvmsg(3, {msg_name=NULL, msg_namelen=0, msg_iov=[{iov_base="\1\0\340\4\0\0\0\0}\2\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0", iov_len=4096}], msg_iovlen=1, msg_controllen=0, msg_flags=0}, 0) = 32
9778  10:04:49.480493 poll([{fd=3, events=POLLIN|POLLOUT}], 1, -1) = 1 ([{fd=3, revents=POLLOUT}])
9778  10:04:49.480514 writev(3, [{iov_base="\20\0\3\0\4\0@\4INCR\20\0\4\0\10\0EXMULTIPLE\20\0\5\0"..., iov_len=72}, {iov_base=NULL, iov_len=0}, {iov_base="", iov_len=0}], 3) = 72
9778  10:04:49.480539 poll([{fd=3, events=POLLIN}], 1, -1) = 1 ([{fd=3, revents=POLLIN}])
9778  10:04:49.480560 recvmsg(3, {msg_name=NULL, msg_namelen=0, msg_iov=[{iov_base="\1\0\341\4\0\0\0\0\177\2\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., iov_len=4096}], msg_iovlen=1, msg_controllen=0, msg_flags=0}, 0) = 128
9778  10:04:49.480602 recvmsg(3, {msg_namelen=0}, 0) = -1 EAGAIN (Resource temporarily unavailable)
9778  10:04:49.480623 recvmsg(3, {msg_namelen=0}, 0) = -1 EAGAIN (Resource temporarily unavailable)
9778  10:04:49.480643 poll([{fd=3, events=POLLIN|POLLOUT}], 1, -1) = 1 ([{fd=3, revents=POLLOUT}])
9778  10:04:49.480664 writev(3, [{iov_base="\23\0\3\0\33\0@\4\221\2\0\0\30\0\6\0\33\0@\4\1\0\0\0W\1\0\0\221\2\0\0"..., iov_len=36}, {iov_base=NULL, iov_len=0}, {iov_base="", iov_len=0}], 3) = 36
9778  10:04:49.480689 recvmsg(3, {msg_namelen=0}, 0) = -1 EAGAIN (Resource temporarily unavailable)
9778  10:04:49.480709 recvmsg(3, {msg_namelen=0}, 0) = -1 EAGAIN (Resource temporarily unavailable)
9778  10:04:49.480728 poll([{fd=3, events=POLLIN}], 1, 0) = 0 (Timeout)
9778  10:04:49.480749 recvmsg(3, {msg_namelen=0}, 0) = -1 EAGAIN (Resource temporarily unavailable)
9778  10:04:49.480768 recvmsg(3, {msg_namelen=0}, 0) = -1 EAGAIN (Resource temporarily unavailable)
9778  10:04:49.480788 recvmsg(3, {msg_namelen=0}, 0) = -1 EAGAIN (Resource temporarily unavailable)
9778  10:04:49.480808 recvmsg(3, {msg_namelen=0}, 0) = -1 EAGAIN (Resource temporarily unavailable)
9778  10:04:49.480831 recvmsg(3, {msg_namelen=0}, 0) = -1 EAGAIN (Resource temporarily unavailable)
9778  10:04:49.480860 recvmsg(3, {msg_namelen=0}, 0) = -1 EAGAIN (Resource temporarily unavailable)
9778  10:04:49.480886 poll([{fd=3, events=POLLIN}], 1, 0) = 0 (Timeout)
9778  10:04:49.480912 select(5, [3 4], [], NULL, NULL) = 1 (in [3])
9778  10:04:49.481051 recvmsg(3, {msg_name=NULL, msg_namelen=0, msg_iov=[{iov_base="\34\0\346\4\33\0@\4\221\2\0\0L>\253\31\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., iov_len=4096}], msg_iovlen=1, msg_controllen=0, msg_flags=0}, 0) = 64
9778  10:04:49.481079 recvmsg(3, {msg_namelen=0}, 0) = -1 EAGAIN (Resource temporarily unavailable)
9778  10:04:49.481100 poll([{fd=3, events=POLLIN}], 1, 0) = 0 (Timeout)
9778  10:04:49.481121 poll([{fd=3, events=POLLIN}], 1, 0) = 0 (Timeout)
9778  10:04:49.481142 poll([{fd=3, events=POLLIN}], 1, 0) = 0 (Timeout)
9778  10:04:49.481166 poll([{fd=3, events=POLLIN|POLLOUT}], 1, -1) = 1 ([{fd=3, revents=POLLOUT}])
9778  10:04:49.481187 writev(3, [{iov_base="\24\0\6\0\33\0@\4\221\2\0\0\0\0\0\0\0\0\0\0\200\226\230\0", iov_len=24}, {iov_base=NULL, iov_len=0}, {iov_base="", iov_len=0}], 3) = 24
9778  10:04:49.481214 poll([{fd=3, events=POLLIN}], 1, -1) = 1 ([{fd=3, revents=POLLIN}])
9778  10:04:49.481235 recvmsg(3, {msg_name=NULL, msg_namelen=0, msg_iov=[{iov_base="\1\10\347\4\3\0\0\0W\1\0\0\0\0\0\0\n\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., iov_len=4096}], msg_iovlen=1, msg_controllen=0, msg_flags=0}, 0) = 44
9778  10:04:49.481269 readlink("/proc/9780/cwd", "/home/vinc17", 100) = 12
9778  10:04:49.481306 clone(child_stack=NULL, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, child_tidptr=0x7f25aa037850) = 9880
9880  10:04:49.481629 set_robust_list(0x7f25aa037860, 24 <unfinished ...>
9778  10:04:49.481637 write(4, "\33[201~", 6 <unfinished ...>
9880  10:04:49.481646 <... set_robust_list resumed> ) = 0
9778  10:04:49.481652 <... write resumed> ) = 6
9880  10:04:49.481669 chdir("/home/vinc17" <unfinished ...>
9778  10:04:49.481678 recvmsg(3,  <unfinished ...>
9880  10:04:49.481686 <... chdir resumed> ) = 0
9778  10:04:49.481693 <... recvmsg resumed> {msg_namelen=0}, 0) = -1 EAGAIN (Resource temporarily unavailable)
9780  10:04:49.481700 <... read resumed> "\33", 1) = 1
9778  10:04:49.481709 recvmsg(3,  <unfinished ...>
9880  10:04:49.481717 execve("/bin/true", ["/bin/true"], 0x55e69924beb0 /* 131 vars */ <unfinished ...>
[...]

(For the test, I replaced "browser %s" by "/bin/true" for simplicity.)

-- 
Vincent Lefèvre <vincent@vinc17.net> - Web: <https://www.vinc17.net/>
100% accessible validated (X)HTML - Blog: <https://www.vinc17.net/blog/>
Work: CR INRIA - computer arithmetic / AriC project (LIP, ENS-Lyon)


Reply to: