Comment 7 for bug 1053910

Revision history for this message
In , kenorb (kenorb) wrote :

Basically I've huge problems with dbus.
My main problem is that different binaries like kdialog and plasma-desktop are freezing and crashing all the time, so I can't use my Linux (Ubuntu) desktop properly.

Problems include:
https://bugs.kde.org/show_bug.cgi?id=307049
https://bugs.kde.org/show_bug.cgi?id=307048

Here is strace example of sent message by kdialog:
8549 sendmsg(7, {msg_name(0)=NULL, msg_iov(2)=[{"l\1\0\1\21\0\0\0\20\0\0\0\177\0\0\0\1\1o\0\25\0\0\0/org/fre"..., 144}, {"\f\0\0\0org.kde.kded\0", 17}], msg_controllen=0, msg_flags=0}, MSG_NOSIGNAL) = 161 <0.000015>
8549 poll([{fd=7, events=POLLIN}], 1, 25000) = 1 ([{fd=7, revents=POLLIN}]) <0.000061>
8549 recvmsg(7, {msg_name(0)=NULL, msg_iov(1)=[{"l\2\1\1\t\0\0\0\6\0\0\0=\0\0\0\6\1s\0\6\0\0\0:1.169\0\0"..., 2048}], msg_controllen=0, msg_flags=MSG_CMSG_CLOEXEC}, MSG_CMSG_CLOEXEC) = 89 <0.000009>
8549 recvmsg(7, 0x7fff71c561e0, MSG_CMSG_CLOEXEC) = -1 EAGAIN (Resource temporarily unavailable) <0.000010>
8549 sendmsg(7, {msg_name(0)=NULL, msg_iov(2)=[{"l\1\0\1\0\0\0\0\21\0\0\0k\0\0\0\1\1o\0\5\0\0\0/kded\0\0\0"..., 128}, {"", 0}], msg_controllen=0, msg_flags=0}, MSG_NOSIGNAL) = 128 <0.000010>
8549 poll([{fd=7, events=POLLIN}], 1, 25000) = 0 (Timeout) <25.020763>

Last <number> show the time spent in system calls.
poll() = 25 seconds
I've 4 of these in one run:
8549 poll([{fd=7, events=POLLIN}], 1, 25000) = 0 (Timeout) <25.020763>
8549 poll([{fd=7, events=POLLIN}], 1, 25000) = 0 (Timeout) <25.008094>
8549 poll([{fd=7, events=POLLIN}], 1, 25000) = 0 (Timeout) <25.025128>
8549 poll([{fd=7, events=POLLIN}], 1, 25000) = 0 (Timeout) <25.025123>
25 second each = 1 minute to run single popup window (kdialog).

The same happening with plasma-desktop, once I click on panel, it takes few minutes to react on my click!

Here are some socket statistics:
$ netstat -na | grep dbus | grep CONNECTED | wc -l
124

Is there any connection limit to dbus before the timeout?

$ sudo netstat -nap | grep dbus | grep CONNECTED | awk '{print $8}' | sort | uniq -c
      2 1932/dbus-launch
     95 1933/dbus-daemon
      4 2490/gvfsd-trash
      2 2492/gvfsd-burn
     44 865/dbus-daemon

I was playing with dbus-monitor, but it didn't help anything, because it doesn't show even which process (PID) is connecting to it. I found some references to (--print-pid), but I didn't know how to use this feature.

Here is something, that I found as possible cause of it.

When starting dbus-daemon manually, I've the following error:

$ /bin/dbus-daemon --print-pid 5 --print-address 7 --session
Failed to start message bus: Writing to pipe: Bad file descriptor

Running with sudo doesn't help either.

strace gives me this:

stat("/usr/share/dbus-1/services/org.gnome.Rhythmbox3.service", {st_mode=S_IFREG|0644, st_size=66, ...}) = 0
stat("/usr/share/dbus-1/services/org.ayatana.bamf.service", {st_mode=S_IFREG|0644, st_size=68, ...}) = 0
open("/usr/share/dbus-1/services/org.ayatana.bamf.service", O_RDONLY) = 5
fstat(5, {st_mode=S_IFREG|0644, st_size=68, ...}) = 0
read(5, ""..., 68) = 68
close(5) = 0
stat("/usr/share/dbus-1/services/org.ayatana.bamf.service", {st_mode=S_IFREG|0644, st_size=68, ...}) = 0
stat("/usr/share/dbus-1/services/org.gnome.evince.Daemon.service", {st_mode=S_IFREG|0644, st_size=74, ...}) = 0
open("/usr/share/dbus-1/services/org.gnome.evince.Daemon.service", O_RDONLY) = 5
fstat(5, {st_mode=S_IFREG|0644, st_size=74, ...}) = 0
read(5, ""..., 74) = 74
close(5) = 0
stat("/usr/share/dbus-1/services/org.gnome.evince.Daemon.service", {st_mode=S_IFREG|0644, st_size=74, ...}) = 0
getdents(4, /* 0 entries */, 32768) = 0
close(4) = 0
write(7, ""..., 73) = -1 EBADF (Bad file descriptor)
close(3) = 0
write(2, ""..., 67Failed to start message bus: Writing to pipe: Bad file descriptor

) = 67
exit_group(1) = ?

First I thought it's failing because of the last file, but the file is fine and after moving it, it's still failing, so it must something else.

Currently it's up-and-running as:
102 872 0.0 0.0 25028 1884 ? Ss Sep19 0:00 dbus-daemon --system --fork --activation=upstart
kenorb 1969 0.0 0.0 26548 388 ? S Sep19 0:00 /usr/bin/dbus-launch --exit-with-session /usr/bin/startkde
kenorb 1970 0.0 0.0 27792 3580 ? Ss Sep19 0:02 //bin/dbus-daemon --fork --print-pid 5 --print-address 7 --session

Any reboot or dbus service restart doesn't help.
After reboot, I've only first 10 seconds after KDE startup when it does actually work.

It's a bug? And how do I fix it? Or how to diagnose it?
How do I make my dbus running properly?
Any suggestions?
Thanks.