dbus-daemonのCPU使用率が高いので調べました

dbus-daemonのCPU使用率が高いので調査依頼を受けました。
何はともあれトレースして見ます。
straceの出番です。

$ sudo strace -o dbus.log -ttf -s 512 -p `pidof dbus-daemon`
712   10:58:37.914418 fcntl(-1, F_GETFD) = -1 EBADF (Bad file descriptor)
712   10:58:37.914546 epoll_wait(4, [{EPOLLIN, {u32=3, u64=5298502605327040515}}], 64, -1) = 1
712   10:58:37.914623 accept4(3, 0x7ffd7c185110, 0x7ffd7c18510c, SOCK_CLOEXEC) = -1 EMFILE (Too many open files)
712   10:58:37.914693 fcntl(-1, F_GETFD) = -1 EBADF (Bad file descriptor)
712   10:58:37.914751 epoll_wait(4, [{EPOLLIN, {u32=3, u64=5298502605327040515}}], 64, -1) = 1
712   10:58:37.914812 accept4(3, 0x7ffd7c185110, 0x7ffd7c18510c, SOCK_CLOEXEC) = -1 EMFILE (Too many open files)
712   10:58:37.914871 fcntl(-1, F_GETFD) = -1 EBADF (Bad file descriptor)
712   10:58:37.914928 epoll_wait(4, [{EPOLLIN, {u32=3, u64=5298502605327040515}}], 64, -1) = 1
712   10:58:37.914987 accept4(3, 0x7ffd7c185110, 0x7ffd7c18510c, SOCK_CLOEXEC) = -1 EMFILE (Too many open files)
712   10:58:37.915046 fcntl(-1, F_GETFD) = -1 EBADF (Bad file descriptor)
712   10:58:37.915096 epoll_wait(4, [{EPOLLIN, {u32=3, u64=5298502605327040515}}], 64, -1) = 1
712   10:58:37.915156 accept4(3, 0x7ffd7c185110, 0x7ffd7c18510c, SOCK_CLOEXEC) = -1 EMFILE (Too many open files)
712   10:58:37.915217 fcntl(-1, F_GETFD) = -1 EBADF (Bad file descriptor)
712   10:58:37.915276 epoll_wait(4, [{EPOLLIN, {u32=3, u64=5298502605327040515}}], 64, -1) = 1
712   10:58:37.915338 accept4(3, 0x7ffd7c185110, 0x7ffd7c18510c, SOCK_CLOEXEC) = -1 EMFILE (Too many open files)
712   10:58:37.915399 fcntl(-1, F_GETFD) = -1 EBADF (Bad file descriptor)
712   10:58:37.915457 epoll_wait(4, [{EPOLLIN, {u32=3, u64=5298502605327040515}}], 64, -1) = 1
712   10:58:37.915518 accept4(3, 0x7ffd7c185110, 0x7ffd7c18510c, SOCK_CLOEXEC) = -1 EMFILE (Too many open files)
712   10:58:37.915578 fcntl(-1, F_GETFD) = -1 EBADF (Bad file descriptor)

結果はこれ。ディスクリプタリークっぽいような気がします。
ググったら以下がヒット。
[https://bugzilla.redhat.com/show_bug.cgi?id=1325870]
もうすでに修正が入っているみたいでバージョンを上げれば直りそうです。
修正内容を確認してみます。

dbus/dbus - a lightweight ipc mechanism

diff --git a/dbus/dbus-sysdeps-util-unix.c b/dbus/dbus-sysdeps-util-unix.c
index 6cff3fe..bbc3f34 100644
--- a/dbus/dbus-sysdeps-util-unix.c
+++ b/dbus/dbus-sysdeps-util-unix.c
@@ -1144,6 +1144,7 @@ _dbus_command_for_pid (unsigned long  pid,
                       "Failed to read from \"%s\": %s",
                       _dbus_string_get_const_data (&path),
                       _dbus_strerror (errno));      
+      _dbus_close (fd, NULL);
       goto fail;
     }

定期的にアップデートはしないといけませんね。
気をつけます。