OpenSUSE 13.2 で sudo が遅くなるときのメモ

OpenSUSE 13.2 の管理をしているけど,zipper refresh & update した時に(恐らく) dbus 関連がアップデートされたときの話. zipper ps で実行中のバイナリに関するファイルが変更されているとの warning が出るので,

$ sudo rcdbus restart

または

$ sudo systemctl restart dbus

と正直に対応した後に sudo を使うと,何故か毎回 30 〜 60 秒くらい待たされることがあった.

仕方ないので $ sudo strace -o trace.log -r sudo ls と調べてみると,以下のような結果が得られた(一部抜粋).

...
0.000075 recvmsg(9, {msg_name(0)=NULL, msg_iov(1)=[{"l\4\1\1\n\0\0\0\2\0\0\0\215\0\0\0\1\1o\0\25\0\0\0", 24}], msg_controllen=0, msg_flags=MSG_CMSG_CLOEXEC}, MSG_DONTWAIT|MSG_NOSIGNAL|MSG
_CMSG_CLOEXEC) = 24
0.000075 recvmsg(9, {msg_name(0)=NULL, msg_iov(1)=[{"/org/freedesktop/DBus\0\0\0\2\1s\0\24\0\0\0"..., 146}], msg_controllen=0, msg_flags=MSG_CMSG_CLOEXEC}, MSG_DONTWAIT|MSG_NOSIGNAL|MSG_C
MSG_CLOEXEC) = 146
0.000636 recvmsg(9, 0x7fff25a66e70, MSG_DONTWAIT|MSG_NOSIGNAL|MSG_CMSG_CLOEXEC) = -1 EAGAIN (Resource temporarily unavailable)
0.000054 ppoll([{fd=9, events=POLLIN}], 1, {24, 999236000}, NULL, 8) = 0 (Timeout)
25.004158 open("/usr/share/locale-langpack/en_US.UTF-8/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
...

何度やっても recvmsg にて /org/freedesktop/DBus にアクセスした後の ppoll の次の処理で時間がかかっているらしい. 色々調べた挙句,

$ sudo systemctl restart systemd-logind 

とコマンドを打つと sudo を使っても待たされることがなくなった. 参考にしたのは以下の URL.

55136 – DBus Timeout on poll(): kdialog, plasma-desktop and other binaries are freezing

unix.stackexchange.com