So indeed this turned out to be true. The daemon is getting something bad (an invalid message) from my process B. <br><br>Turning debug verbose on the daemon shows this...<br><br>289: handling read watch 0xcfe30 flags = 1<br>
289: do_reading: fd = 6<br>289: check_read_watch: fd = 6<br>289: setting read watch enabled = 1<br>289: UNLOCK: protected_change_watch<br>289: LOCK: protected_change_watch<br>289: read 844 bytes<br>289: Initial peek at header says we don't have a whole message yet, or data broken with invalid code 13
<br>289: Corrupted message stream, disconnecting<br>289: _dbus_transport_disconnect start<br>289: socket_disconnect<br><br>Since my process B just handles the filter message and does not send anything, i can only think of two things...
<br><br>1. Some thread in my process has a socket descriptor wrong, hence is dumping things by mistake into the dbus socket fd.<br><br>2. There is some bug in dbus code, that is sending this invalid message.<br><br>To rule out 2. i have a question that may be someone can help with.
<br><br>If we assume process B just has code to set an addmatch and recv a signal and<br>If the daemon passes a signal message to B, B does not have to ack or send anything back correct?. It should just get the message and handle it and go its way. When things work correctly i see this is indeed the case, the daemon sends something and does not hear back from Process B.
<br><br>The whole thing seems to be very time sensitive w.r.t process B, if dbus_verbose is turned on B this does not happen. <br><br>Thanks.<br>-K<br><br><br><div><span class="gmail_quote">On 4/11/07, <b class="gmail_sendername">
Thiago Macieira</b> <<a href="mailto:thiago@kde.org" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">thiago@kde.org</a>> wrote:</span><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
Krishna R wrote:<br>>Further probing lead to disconnect signal being the cause of<br>> do_io_error() in dbus-transport-socket.c, it was called because<br>> do_reading() which reads from the socket and gets bytes_read = 0. That
<br>> means the socket was closed on the other end?<br><br>Yes.<br><br>>The question i have is why is the dbus-daemon closing the socket? Or is<br>> it?<br><br>It is and it does so because it received an invalid message. If you strace
<br>the daemon or if you run it in debug mode, it should say why it did that.<br><br>>dbus-daemon, A and B are started one after another at boot in the<br>>foreground. Is there some problem where the session bus is not fully
<br>>initialized? That may not be because atleast one signal from A reaches<br>> B.<br><br>I don't think so.<br><br>--<br> Thiago Macieira - thiago (AT) <a href="http://macieira.info" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">
macieira.info</a> - thiago (AT)
<a href="http://kde.org" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">kde.org</a><br> PGP/GPG: 0x6EF45358; fingerprint:<br> E067 918B B660 DBD1 105C 966C 33F5 F005 6EF4 5358<br><br></blockquote>
</div><br><br clear="all"><br>-- <br>P.R.Krishna