ddd
현재 X Window에 연결할 수 없어 중단되는 문제를 분석 중입니다 . 이것은 strace의 출력입니다.
connect(4, {sa_family=AF_LOCAL, sun_path=@"/tmp/.X11-unix/X0"}, 20) = 0
getpeername(4, {sa_family=AF_LOCAL, sun_path=@"/tmp/.X11-unix/X0"}, [20]) = 0
uname({sysname="Linux", nodename="terra-arch", ...}) = 0
access("/home/phil/.Xauthority", R_OK) = 0
open("/home/phil/.Xauthority", O_RDONLY) = 5
fstat(5, {st_mode=S_IFREG|0600, st_size=55, ...}) = 0
read(5, "\1\0\0\nterra-arch\0\0010\0\22MIT-MAGIC-COO"..., 4096) = 55
read(5, "", 4096) = 0
close(5) = 0
getsockname(4, {sa_family=AF_LOCAL, NULL}, [2]) = 0
fcntl(4, F_GETFL) = 0x2 (flags O_RDWR)
fcntl(4, F_SETFL, O_RDWR|O_NONBLOCK) = 0
fcntl(4, F_SETFD, FD_CLOEXEC) = 0
poll([{fd=4, events=POLLIN|POLLOUT}], 1, -1) = 1 ([{fd=4, revents=POLLOUT}])
writev(4, [{"...", 12}, {"", 0}, {"MIT-MAGIC-COOKIE-1", 18}, {"...", 2}, {"...", 16}, {"...", 0}], 6) = 48
recvmsg(4, 0x7ffc641c6e80, 0) = -1 EAGAIN (Resource temporarily unavailable)
recvmsg 호출 전에 "/tmp/.X11-unix/X0" 소켓과 통신하고 MIT-MAGIC-COOKIE-1
writev 호출을 통해 를 보냅니다. 그런 다음 영원히 반복됩니다(recvmsg 호출이 계속 실패합니다).
그것은 얼마 전에 작동했으며 ddd
영향을 받는 것으로 보이는 유일한 앱입니다. 불행하게도 나는 익숙하지 않다XWindow 라이센스 계약.
저는 아치 리눅스를 사용하고 있습니다. 관련성이 있는지 확실하지 않지만 xorg-server가 최근에 업데이트되었습니다.
ls -alhgtr /var/cache/pacman/pkg/xorg-*
...
-rw-r--r-- 1 root 27K Mar 25 10:01 /var/cache/pacman/pkg/xorg-server-common-1.18.2-4-x86_64.pkg.tar.xz
-rw-r--r-- 1 root 1.3M Mar 25 10:01 /var/cache/pacman/pkg/xorg-server-1.18.2-4-x86_64.pkg.tar.xz
-rw-r--r-- 1 root 708K Mar 25 10:01 /var/cache/pacman/pkg/xorg-server-xvfb-1.18.2-4-x86_64.pkg.tar.xz
-rw-r--r-- 1 root 17K Apr 1 18:25 /var/cache/pacman/pkg/xorg-xinit-1.3.4-4-x86_64.pkg.tar.xz
-rw-r--r-- 1 root 732K Apr 5 19:36 /var/cache/pacman/pkg/xorg-server-xvfb-1.18.3-1-x86_64.pkg.tar.xz
-rw-r--r-- 1 root 27K Apr 5 19:36 /var/cache/pacman/pkg/xorg-server-common-1.18.3-1-x86_64.pkg.tar.xz
-rw-r--r-- 1 root 1.3M Apr 5 19:36 /var/cache/pacman/pkg/xorg-server-1.18.3-1-x86_64.pkg.tar.xz
/tmp/.X11-unix/X0
존재하며 루트가 소유합니다.
$ ls -l /tmp/.X11-unix
total 0
srwxrwxrwx 1 root root 0 Apr 5 21:22 X0
을 실행하면 sudo ddd
작동합니다.
버그 보고서를 작성해야 할지, 아니면 이것이 내 로컬 시스템의 버그인지 잘 모르겠습니다.범위를 좁히는 데 도움을 주실 수 있나요?
답변1
구성 문제로 밝혀졌습니다. 새 구성을 사용하기 ~/.ddd
위해 디렉터리를 이동하면 ddd
문제가 해결되었습니다.
이는 루트로 실행되고 지저분한 구성이 없기 때문에 sudo와 함께 작동하는 이유를 설명합니다.
strace
출력에 대한 나의 해석도 틀렸다는 점을 언급할 가치가 있습니다 . recvmsg
반환 루프 EAGAIN
("리소스를 일시적으로 사용할 수 없음") 가 나타나는 것은 정상적인 동작입니다. 이는 단지 애플리케이션이 이벤트에 대해 소켓을 폴링하고 있음을 의미합니다. 이것이 X11과 통신하는 방식입니다.