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ライセンス契約。
私はアーチLinuxを使用しています。関連性があるかどうかはわかりませんが、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
問題が修正されました。
これは、rootとして実行され、汚れた設定がないため、sudoと連携する理由を説明します。
strace
出力に関する私の解釈も間違っていることに言及する価値があります。recvmsg
戻りループEAGAIN
(「リソースを一時的に使用できません」)が表示されるのは通常の動作です。これは、アプリケーションがイベントに対してソケットをポーリングしていることを意味します。これがX11と通信する方法です。