<div dir="ltr">In node there is standard way of handling backpressure ( automatically via `pipe()` chains or by checking write() result and reacting on "drain" event.<div><br></div><div>Have not added fix as problem disappeared for user after updating to daemon <span style="color:rgb(80,0,80);font-size:12.8000001907349px">1.8.16</span> , but it's in my todo </div></div><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Jun 3, 2015 at 9:59 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">Hmm. Did you have a fix for that in mind?<br>
<br>
I should be able to manufacture a better test case for that here by<br>
adding even more dbus calls when our script starts up.<br>
<span class="HOEnZb"><font color="#888888"><br>
Chris<br>
</font></span><div class="HOEnZb"><div class="h5"><br>
<br>
<br>
On Tue, Jun 2, 2015 at 7:54 PM, Andrey Sidorov <<a href="mailto:andrey.sidorov@gmail.com">andrey.sidorov@gmail.com</a>> wrote:<br>
> In node-dbus I buffer all outgoing messages until underlying transport<br>
> stream is established and then send them all at once. My guess was that<br>
> EPIPE is caused by not checking backpressure properly<br>
><br>
> On Wed, Jun 3, 2015 at 9:48 AM, Chris Morgan <<a href="mailto:chmorgan@gmail.com">chmorgan@gmail.com</a>> wrote:<br>
>><br>
>> 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<br>
>> > pipe<br>
>> > reader. For sockets, that happens only when a connected socket's peer<br>
>> > 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<br>
>> > 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,<br>
>> > 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<br>
>> > the<br>
>> > all the messages sent after the last time the bus sent anything to you.<br>
>> > 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>
>> 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>
>><br>
>> Chris<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></blockquote></div><br></div>