<div dir="ltr">In node-dbus I buffer all outgoing messages until underlying transport stream is established and then send them all at once. My guess was that EPIPE is caused by not checking backpressure properly</div><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Jun 3, 2015 at 9:48 AM, Chris Morgan <span dir="ltr"><<a href="mailto:chmorgan@gmail.com" target="_blank">chmorgan@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="HOEnZb"><div class="h5">On Tue, Jun 2, 2015 at 4:37 PM, Thiago Macieira <<a href="mailto:thiago@kde.org">thiago@kde.org</a>> wrote:<br>
> On Monday 01 June 2015 21:21:16 Chris Morgan wrote:<br>
>> Hello.<br>
>><br>
>> I'm using dbus-daemon on a systemd distro built under yocto on an arm<br>
>> system, a BBB (1GHz Arm), 512MB ram, emmc.<br>
>><br>
>> At startup we've got two clients, one c# using dbus-sharp, and another<br>
>> nodejs using node-dbus (<a href="https://github.com/sidorares/node-dbus" target="_blank">https://github.com/sidorares/node-dbus</a>) that<br>
>> are both seeing EPIPE from the dbus client socket as reported via<br>
>> strace.<br>
><br>
> For real pipes, EPIPE indicates that you're writing while there's no pipe<br>
> reader. For sockets, that happens only when a connected socket's peer has shut<br>
> down reception. In other words, the socket has disconnected.<br>
><br>
> dbus-daemon only disconnects you if you send invalid stuff. So I advise you to<br>
> check those two bindings for protocol correctness.<br>
><br>
>> I'm guessing that the high cpu and io load at startup may be the cause<br>
>> of the issue. Those clients are relatively heavy to startup, one being<br>
>> mono, the other node. This particular issue isn't seen on the desktop<br>
>> under F21 or Arch with the same software.<br>
><br>
> No, that can't be it. If the socket never connected, you'd get ENOTCONN, not<br>
> EPIPE.<br>
><br>
>> Is there some way to debug the reason behind the EPIPE from the<br>
>> dbus-daemon side? I tried compiling with the --enable-verbose-tracing<br>
>> and enabling DBUS_VERBOSE=1 but that produces a ton of output that<br>
>> seems unrelated to the EPIPE issue.<br>
><br>
> The message failed to parse. Use strace on your application and capture the<br>
> all the messages sent after the last time the bus sent anything to you. One of<br>
> those messages is invalid.<br>
><br>
> --<br>
> Thiago Macieira - thiago (AT) <a href="http://macieira.info" target="_blank">macieira.info</a> - thiago (AT) <a href="http://kde.org" target="_blank">kde.org</a><br>
>    Software Architect - Intel Open Source Technology Center<br>
>       PGP/GPG: 0x6EF45358; fingerprint:<br>
>       E067 918B B660 DBD1 105C  966C 33F5 F005 6EF4 5358<br>
><br>
> _______________________________________________<br>
> dbus mailing list<br>
> <a href="mailto:dbus@lists.freedesktop.org">dbus@lists.freedesktop.org</a><br>
> <a href="http://lists.freedesktop.org/mailman/listinfo/dbus" target="_blank">http://lists.freedesktop.org/mailman/listinfo/dbus</a><br>
<br>
<br>
</div></div>I'll do this and see if I can't get a working and non-working case. We<br>
did that before but I don't have it handy, I'll reproduce and report.<br>
<br>
Interestingly, same sw never has the issue running on the desktop<br>
environment. That would be the identical node-dbus and dbushsarp<br>
modules and code. And it appears to be related to system load.<br>
<br>
Is there anything that the comes to mind that the clients might not be<br>
handling in those particular cases? We looked into the gdbus code and<br>
didn't see any retries etc but if it is a protocol issue I'm wondering<br>
if its related to the high load and something not being handled in a<br>
corner case of the protocol.<br>
<span class="HOEnZb"><font color="#888888"><br>
Chris<br>
</font></span><div class="HOEnZb"><div class="h5">_______________________________________________<br>
dbus mailing list<br>
<a href="mailto:dbus@lists.freedesktop.org">dbus@lists.freedesktop.org</a><br>
<a href="http://lists.freedesktop.org/mailman/listinfo/dbus" target="_blank">http://lists.freedesktop.org/mailman/listinfo/dbus</a><br>
</div></div></blockquote></div><br></div>