Vim застрял при открытии файла с обратной трассировкой «EAGAIN (ресурс временно недоступен)»

#vim

#vim

Вопрос:

Vim застрял при открытии файла. Это выход с strace. Кто-нибудь может посоветовать здесь?

 strace vim test.py
....
poll([{fd=3, events=POLLIN|POLLOUT}], 1, -1) = 1 ([{fd=3, revents=POLLOUT}])
writev(3, [{"lv2220", 12}, {"", 0}, {"MIT-MAGIC-COOKIE-1", 18}, {"", 2}, {"231r1377"025371232264nj%:32277", 16}, {"", 0}], 6) = 48
recvfrom(3, 0x2bec270, 8, 0, NULL, NULL) = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=3, events=POLLIN}], 1, -1
 

Ответ №1:

Я пострадал от этого и немного покопался в этом. Вот мой журнал.

 09:46:07.386053 socket(AF_INET6, SOCK_STREAM|SOCK_CLOEXEC, IPPROTO_TCP) = 3
09:46:07.386078 setsockopt(3, SOL_TCP, TCP_NODELAY, [1], 4) = 0
09:46:07.386102 setsockopt(3, SOL_SOCKET, SO_KEEPALIVE, [1], 4) = 0
09:46:07.386125 connect(3, {sa_family=AF_INET6, sin6_port=htons(6010), inet_pton(AF_INET6, "::1", amp;sin6_addr), sin6_flowinfo=htonl(0), sin6_scope_id=0}, 28) = 0
09:46:07.386225 getpeername(3, {sa_family=AF_INET6, sin6_port=htons(6010), inet_pton(AF_INET6, "::1", amp;sin6_addr), sin6_flowinfo=htonl(0), sin6_scope_id=0}, [124->28]) = 0
09:46:07.386258 uname({sysname="Linux", nodename="localhost.localdomain", ...}) = 0
09:46:07.386324 access("/root/.Xauthority", R_OK) = 0
09:46:07.386385 openat(AT_FDCWD, "/root/.Xauthority", O_RDONLY) = 4
09:46:07.386414 fstat(4, {st_mode=S_IFREG|0600, st_size=469, ...}) = 0
09:46:07.386439 read(4, "125localhost.localdomain021622M"..., 4096) = 469
09:46:07.386548 close(4)                = 0
09:46:07.386611 getsockname(3, {sa_family=AF_INET6, sin6_port=htons(49466), inet_pton(AF_INET6, "::1", amp;sin6_addr), sin6_flowinfo=htonl(0), sin6_scope_id=0}, [124->28]) = 0
09:46:07.386688 fcntl(3, F_GETFL)       = 0x2 (flags O_RDWR)
09:46:07.386773 fcntl(3, F_SETFL, O_RDWR|O_NONBLOCK) = 0
09:46:07.386831 fcntl(3, F_SETFD, FD_CLOEXEC) = 0
09:46:07.386853 poll([{fd=3, events=POLLIN|POLLOUT}], 1, -1) = 1 ([{fd=3, revents=POLLOUT}])
09:46:07.386968 writev(3, [{iov_base="lv2220", iov_len=12}, {iov_base="", iov_len=0}, {iov_base="MIT-MAGIC-COOKIE-1", iov_len=18}, {iov_base="", iov_len=2}, {iov_base="yD310A20220233232242~/351E260336", iov_len=16}, {iov_base="", iov_len=0}], 6) = 48
09:46:07.387053 recvfrom(3, 0x561e505ded90, 8, 0, NULL, NULL) = -1 EAGAIN (Resource temporarily unavailable)
09:46:07.387081 poll([{fd=3, events=POLLIN}], 1, -1) = 1 ([{fd=3, revents=POLLIN}])
09:46:09.393095 recvfrom(3, "1v362", 8, 0, NULL, NULL) = 8
09:46:09.393186 recvfrom(3, "277B24132003773773711637737717  1037720377202"..., 968, 0, NULL, NULL) = 968
09:46:09.393266 poll([{fd=3, events=POLLIN|POLLOUT}], 1, -1

<<===========type enter when it stucks.

) = 1 ([{fd=3, revents=POLLOUT}])
09:46:09.393314 writev(3, [{iov_base="b5fBIG-REQUESTS", iov_len=20}], 1) = 20

 

И я gdb его и нахожу источник (https://github.com/stapelberg/libxcb/blob/master/src/xcb_in.c#L267 ).
И печальное сообщение заключается в том, что проблемы нет, и он просто ожидает данных от xserver.

Обходным решением будет отключить xterm. Мне нравится функция xterm_clipboard, поэтому я должен это терпеть.