История изменений
Исправление xwicked, (текущая версия) :
access("/home/user/.Xauthority", R_OK) = 0
openat(AT_FDCWD, "/home/user/.Xauthority", O_RDONLY) = 5</home/user/.Xauthority>
fstat(5</home/user/.Xauthority>, {st_mode=S_IFREG|0600, st_size=51, ...}) = 0
read(5</home/user/.Xauthority>, "\1\0\0\6Comp\0\0010\0\22MIT-MAGIC-COOKIE-"..., 4096) = 51
read(5</home/user/.Xauthority>, "", 4096) = 0
close(5</home/user/.Xauthority>) = 0
getsockname(4<socket:[133314]>, {sa_family=AF_UNIX}, [124->2]) = 0
brk(0x2303000) = 0x2303000
fcntl(4<socket:[133314]>, F_GETFL) = 0x2 (flags O_RDWR)
fcntl(4<socket:[133314]>, F_SETFL, O_RDWR|O_NONBLOCK) = 0
fcntl(4<socket:[133314]>, F_SETFD, FD_CLOEXEC) = 0
poll([{fd=4<socket:[133314]>, events=POLLIN|POLLOUT}], 1, -1) = 1 ([{fd=4, revents=POLLOUT}])
writev(4<socket:[133314]>, [{iov_base="l\0\v\0\0\0\22\0\20\0\0\0", iov_len=12}, {iov_base="", iov_len=0}, {iov_base="MIT-MAGIC-COOKIE-1", iov_len=18}, {iov_base="\0\0", iov_len=2}, {iov_base="^\21\275\252\1x\304\17'\355\214\254\254\246\4\267", iov_len=16}, {iov_base="", iov_len=0}], 6) = 48
recvfrom(4<socket:[133314]>, "\1\0\v\0\0\0K\3", 8, 0, NULL, NULL) = 8
recvfrom(4<socket:[133314]>, "\320\253\265\0\0\0 \5\377\377\37\0\0\1\0\0\24\0\377\377\1\7\0\0 \10\377\0\0\0\0"..., 3372, 0, NULL, NULL) = 3372
poll([{fd=4<socket:[133314]>, events=POLLIN|POLLOUT}], 1, -1) = 1 ([{fd=4, revents=POLLOUT}])
writev(4<socket:[133314]>, [{iov_base="b\0\5\0\f\0\0\0BIG-REQUESTS", iov_len=20}], 1) = 20
poll([{fd=4<socket:[133314]>, events=POLLIN}], 1, -1) = 1 ([{fd=4, revents=POLLIN}])
recvmsg(4<socket:[133314]>, {msg_name=NULL, msg_namelen=0, msg_iov=[{iov_base="\1\0\1\0\0\0\0\0\1\205\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
poll([{fd=4<socket:[133314]>, events=POLLIN|POLLOUT}], 1, -1) = 1 ([{fd=4, revents=POLLOUT}])
writev(4<socket:[133314]>, [{iov_base="\205\0\1\0", iov_len=4}], 1) = 4
poll([{fd=4<socket:[133314]>, events=POLLIN}], 1, -1) = 1 ([{fd=4, revents=POLLIN}])
recvmsg(4<socket:[133314]>, {msg_name=NULL, msg_namelen=0, msg_iov=[{iov_base="\1\0\2\0\0\0\0\0\377\377?\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
recvmsg(4<socket:[133314]>, {msg_namelen=0}, 0) = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=4<socket:[133314]>, events=POLLIN|POLLOUT}], 1, -1) = 1 ([{fd=4, revents=POLLOUT}])
writev(4<socket:[133314]>, [{iov_base="7\0\5\0\0\0 \5\320\1\0\0\10\0\0\0\377\377\377\0\24\0\6\0\320\1\0\0\27\0\0\0"..., iov_len=44}, {iov_base=NULL, iov_len=0}, {iov_base="", iov_len=0}], 3) = 44
poll([{fd=4<socket:[133314]>, events=POLLIN}], 1, -1) = 1 ([{fd=4, revents=POLLIN}])
recvmsg(4<socket:[133314]>, {msg_name=NULL, msg_namelen=0, msg_iov=[{iov_base="\1\10\4\0\36\0\0\0\37\0\0\0\0\0\0\0u\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) = 152
recvmsg(4<socket:[133314]>, {msg_namelen=0}, 0) = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=4<socket:[133314]>, events=POLLIN|POLLOUT}], 1, -1) = 1 ([{fd=4, revents=POLLOUT}])
writev(4<socket:[133314]>, [{iov_base="b\0\5\0\t\0 \5", iov_len=8}, {iov_base="XKEYBOARD", iov_len=9}, {iov_base="\0\0\0", iov_len=3}], 3) = 20
poll([{fd=4<socket:[133314]>, events=POLLIN}], 1, -1) = 1 ([{fd=4, revents=POLLIN}])
recvmsg(4<socket:[133314]>, {msg_name=NULL, msg_namelen=0, msg_iov=[{iov_base="\1\0\5\0\0\0\0\0\1\207U\211\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
recvmsg(4<socket:[133314]>, {msg_namelen=0}, 0) = -1 EAGAIN (Resource temporarily unavailable)
recvmsg(4<socket:[133314]>, {msg_namelen=0}, 0) = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=4<socket:[133314]>, events=POLLIN|POLLOUT}], 1, -1) = 1 ([{fd=4, revents=POLLOUT}])
writev(4<socket:[133314]>, [{iov_base="\207\0\2\0\1\0\0\0", iov_len=8}, {iov_base=NULL, iov_len=0}, {iov_base="", iov_len=0}], 3) = 8
poll([{fd=4<socket:[133314]>, events=POLLIN}], 1, -1) = 1 ([{fd=4, revents=POLLIN}])
recvmsg(4<socket:[133314]>, {msg_name=NULL, msg_namelen=0, msg_iov=[{iov_base="\1\1\6\0\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
recvmsg(4<socket:[133314]>, {msg_namelen=0}, 0) = -1 EAGAIN (Resource temporarily unavailable)
recvmsg(4<socket:[133314]>, {msg_namelen=0}, 0) = -1 EAGAIN (Resource temporarily unavailable)
futex(0x7f58de027f38, FUTEX_WAKE_PRIVATE, 2147483647) = 0
poll([{fd=4<socket:[133314]>, events=POLLIN|POLLOUT}], 1, -1) = 1 ([{fd=4, revents=POLLOUT}])
writev(4<socket:[133314]>, [{iov_base="\20\0\5\0\v\0\0\0UTF8_STRING\0\20\0\6\0\20\0\0\0WM_C"..., iov_len=916}, {iov_base=NULL, iov_len=0}, {iov_base="", iov_len=0}], 3) = 916
poll([{fd=4<socket:[133314]>, events=POLLIN}], 1, -1) = 1 ([{fd=4, revents=POLLIN}])
recvmsg(4<socket:[133314]>, {msg_name=NULL, msg_namelen=0, msg_iov=[{iov_base="\1\0\7\0\0\0\0\0006\1\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) = 1088
recvmsg(4<socket:[133314]>, {msg_namelen=0}, 0) = -1 EAGAIN (Resource temporarily unavailable)
recvmsg(4<socket:[133314]>, {msg_namelen=0}, 0) = -1 EAGAIN (Resource temporarily unavailable)
recvmsg(4<socket:[133314]>, {msg_namelen=0}, 0) = -1 EAGAIN (Resource temporarily unavailable)
recvmsg(4<socket:[133314]>, {msg_namelen=0}, 0) = -1 EAGAIN (Resource temporarily unavailable)
recvmsg(4<socket:[133314]>, {msg_namelen=0}, 0) = -1 EAGAIN (Resource temporarily unavailable)
recvmsg(4<socket:[133314]>, {msg_namelen=0}, 0) = -1 EAGAIN (Resource temporarily unavailable)
recvmsg(4<socket:[133314]>, {msg_namelen=0}, 0) = -1 EAGAIN (Resource temporarily unavailable)
recvmsg(4<socket:[133314]>, {msg_namelen=0}, 0) = -1 EAGAIN
Полный лог
Давайте без всяких параной и обзываний разберёмся что на самом деле происходит?
Судя по данному участку понятно, что идёт взаимодействие с иксами. Но тут 2 вопроса возникают: Почему моя программа напрямую взаимодейтсвует с ними не через API или почему это отражается в strace моей программы?
В оффтопике я понял программа отражает события только моей программы, а GNU /Linux нет такого понятия и взаимодействие идёт только как с другой программой, не частью системы? Если так, то мне нужно написать такую же синтетику на C++ + Qt и тогда станет ясно где собака порылась. Сейчас попробую.
Исходная версия xwicked, :
access("/home/user/.Xauthority", R_OK) = 0
openat(AT_FDCWD, "/home/user/.Xauthority", O_RDONLY) = 5</home/user/.Xauthority>
fstat(5</home/user/.Xauthority>, {st_mode=S_IFREG|0600, st_size=51, ...}) = 0
read(5</home/user/.Xauthority>, "\1\0\0\6Comp\0\0010\0\22MIT-MAGIC-COOKIE-"..., 4096) = 51
read(5</home/user/.Xauthority>, "", 4096) = 0
close(5</home/user/.Xauthority>) = 0
getsockname(4<socket:[133314]>, {sa_family=AF_UNIX}, [124->2]) = 0
brk(0x2303000) = 0x2303000
fcntl(4<socket:[133314]>, F_GETFL) = 0x2 (flags O_RDWR)
fcntl(4<socket:[133314]>, F_SETFL, O_RDWR|O_NONBLOCK) = 0
fcntl(4<socket:[133314]>, F_SETFD, FD_CLOEXEC) = 0
poll([{fd=4<socket:[133314]>, events=POLLIN|POLLOUT}], 1, -1) = 1 ([{fd=4, revents=POLLOUT}])
writev(4<socket:[133314]>, [{iov_base="l\0\v\0\0\0\22\0\20\0\0\0", iov_len=12}, {iov_base="", iov_len=0}, {iov_base="MIT-MAGIC-COOKIE-1", iov_len=18}, {iov_base="\0\0", iov_len=2}, {iov_base="^\21\275\252\1x\304\17'\355\214\254\254\246\4\267", iov_len=16}, {iov_base="", iov_len=0}], 6) = 48
recvfrom(4<socket:[133314]>, "\1\0\v\0\0\0K\3", 8, 0, NULL, NULL) = 8
recvfrom(4<socket:[133314]>, "\320\253\265\0\0\0 \5\377\377\37\0\0\1\0\0\24\0\377\377\1\7\0\0 \10\377\0\0\0\0"..., 3372, 0, NULL, NULL) = 3372
poll([{fd=4<socket:[133314]>, events=POLLIN|POLLOUT}], 1, -1) = 1 ([{fd=4, revents=POLLOUT}])
writev(4<socket:[133314]>, [{iov_base="b\0\5\0\f\0\0\0BIG-REQUESTS", iov_len=20}], 1) = 20
poll([{fd=4<socket:[133314]>, events=POLLIN}], 1, -1) = 1 ([{fd=4, revents=POLLIN}])
recvmsg(4<socket:[133314]>, {msg_name=NULL, msg_namelen=0, msg_iov=[{iov_base="\1\0\1\0\0\0\0\0\1\205\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
poll([{fd=4<socket:[133314]>, events=POLLIN|POLLOUT}], 1, -1) = 1 ([{fd=4, revents=POLLOUT}])
writev(4<socket:[133314]>, [{iov_base="\205\0\1\0", iov_len=4}], 1) = 4
poll([{fd=4<socket:[133314]>, events=POLLIN}], 1, -1) = 1 ([{fd=4, revents=POLLIN}])
recvmsg(4<socket:[133314]>, {msg_name=NULL, msg_namelen=0, msg_iov=[{iov_base="\1\0\2\0\0\0\0\0\377\377?\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
recvmsg(4<socket:[133314]>, {msg_namelen=0}, 0) = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=4<socket:[133314]>, events=POLLIN|POLLOUT}], 1, -1) = 1 ([{fd=4, revents=POLLOUT}])
writev(4<socket:[133314]>, [{iov_base="7\0\5\0\0\0 \5\320\1\0\0\10\0\0\0\377\377\377\0\24\0\6\0\320\1\0\0\27\0\0\0"..., iov_len=44}, {iov_base=NULL, iov_len=0}, {iov_base="", iov_len=0}], 3) = 44
poll([{fd=4<socket:[133314]>, events=POLLIN}], 1, -1) = 1 ([{fd=4, revents=POLLIN}])
recvmsg(4<socket:[133314]>, {msg_name=NULL, msg_namelen=0, msg_iov=[{iov_base="\1\10\4\0\36\0\0\0\37\0\0\0\0\0\0\0u\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) = 152
recvmsg(4<socket:[133314]>, {msg_namelen=0}, 0) = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=4<socket:[133314]>, events=POLLIN|POLLOUT}], 1, -1) = 1 ([{fd=4, revents=POLLOUT}])
writev(4<socket:[133314]>, [{iov_base="b\0\5\0\t\0 \5", iov_len=8}, {iov_base="XKEYBOARD", iov_len=9}, {iov_base="\0\0\0", iov_len=3}], 3) = 20
poll([{fd=4<socket:[133314]>, events=POLLIN}], 1, -1) = 1 ([{fd=4, revents=POLLIN}])
recvmsg(4<socket:[133314]>, {msg_name=NULL, msg_namelen=0, msg_iov=[{iov_base="\1\0\5\0\0\0\0\0\1\207U\211\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
recvmsg(4<socket:[133314]>, {msg_namelen=0}, 0) = -1 EAGAIN (Resource temporarily unavailable)
recvmsg(4<socket:[133314]>, {msg_namelen=0}, 0) = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=4<socket:[133314]>, events=POLLIN|POLLOUT}], 1, -1) = 1 ([{fd=4, revents=POLLOUT}])
writev(4<socket:[133314]>, [{iov_base="\207\0\2\0\1\0\0\0", iov_len=8}, {iov_base=NULL, iov_len=0}, {iov_base="", iov_len=0}], 3) = 8
poll([{fd=4<socket:[133314]>, events=POLLIN}], 1, -1) = 1 ([{fd=4, revents=POLLIN}])
recvmsg(4<socket:[133314]>, {msg_name=NULL, msg_namelen=0, msg_iov=[{iov_base="\1\1\6\0\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
recvmsg(4<socket:[133314]>, {msg_namelen=0}, 0) = -1 EAGAIN (Resource temporarily unavailable)
recvmsg(4<socket:[133314]>, {msg_namelen=0}, 0) = -1 EAGAIN (Resource temporarily unavailable)
futex(0x7f58de027f38, FUTEX_WAKE_PRIVATE, 2147483647) = 0
poll([{fd=4<socket:[133314]>, events=POLLIN|POLLOUT}], 1, -1) = 1 ([{fd=4, revents=POLLOUT}])
writev(4<socket:[133314]>, [{iov_base="\20\0\5\0\v\0\0\0UTF8_STRING\0\20\0\6\0\20\0\0\0WM_C"..., iov_len=916}, {iov_base=NULL, iov_len=0}, {iov_base="", iov_len=0}], 3) = 916
poll([{fd=4<socket:[133314]>, events=POLLIN}], 1, -1) = 1 ([{fd=4, revents=POLLIN}])
recvmsg(4<socket:[133314]>, {msg_name=NULL, msg_namelen=0, msg_iov=[{iov_base="\1\0\7\0\0\0\0\0006\1\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) = 1088
recvmsg(4<socket:[133314]>, {msg_namelen=0}, 0) = -1 EAGAIN (Resource temporarily unavailable)
recvmsg(4<socket:[133314]>, {msg_namelen=0}, 0) = -1 EAGAIN (Resource temporarily unavailable)
recvmsg(4<socket:[133314]>, {msg_namelen=0}, 0) = -1 EAGAIN (Resource temporarily unavailable)
recvmsg(4<socket:[133314]>, {msg_namelen=0}, 0) = -1 EAGAIN (Resource temporarily unavailable)
recvmsg(4<socket:[133314]>, {msg_namelen=0}, 0) = -1 EAGAIN (Resource temporarily unavailable)
recvmsg(4<socket:[133314]>, {msg_namelen=0}, 0) = -1 EAGAIN (Resource temporarily unavailable)
recvmsg(4<socket:[133314]>, {msg_namelen=0}, 0) = -1 EAGAIN (Resource temporarily unavailable)
recvmsg(4<socket:[133314]>, {msg_namelen=0}, 0) = -1 EAGAIN
Полный лог
Давайте без всяких параной и обзываний разберёмся что на самом деле происходит?
Сюдя по данному участку понятно, что идёт взаимодействие с иксами. Но тут 2 вопроса возникают: Почему моя программа напрямую взаимодейтсвует с ними не через API или почему это отражается в strace моей программы?
В оффтопике я понял программа отражает события только моей программы, а GNU /Linux нет такого понятия и взаимодействие идёт только как с другой программой, не частью системы? Если так, то мне нужно написать такую же синтетику на C++ + Qt и тогда станет ясно где собака порылась. Сейчас попробую.