<div dir="ltr">Thanks again Alistair for these reports!<div><br></div><div>I totally agree with you. Forking (rightfully) breaks DBus connections among other things, and we can't tell who's been putting DBus in which of the libs we're using -- better safe than sorry. :)</div>
</div><div class="gmail_extra"><br><br><div class="gmail_quote">2014-05-04 23:55 GMT+01:00 Alistair Buxton <span dir="ltr"><<a href="mailto:a.j.buxton@gmail.com" target="_blank">a.j.buxton@gmail.com</a>></span>:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi all,<br>
<br>
It has recently come to my attention that a lot of the programs in<br>
Xfce that have a daemon mode call gtk_init() before fork()ing. This is<br>
unsafe, and when it goes wrong this will typically manifest as the<br>
daemon hanging shortly after forking, and appearing to simply do<br>
nothing at all.<br>
<br>
Some examples of this bug:<br>
<br>
<a href="https://bugs.launchpad.net/ubuntu/+source/xfce4-volumed/+bug/1314782" target="_blank">https://bugs.launchpad.net/ubuntu/+source/xfce4-volumed/+bug/1314782</a><br>
<br>
<a href="https://bugs.launchpad.net/ubuntu/+source/xfce4-settings/+bug/1239014" target="_blank">https://bugs.launchpad.net/ubuntu/+source/xfce4-settings/+bug/1239014</a><br>
<br>
<a href="https://bugs.launchpad.net/ubuntu/+source/xfce4-power-manager/+bug/973778" target="_blank">https://bugs.launchpad.net/ubuntu/+source/xfce4-power-manager/+bug/973778</a><br>
<br>
<a href="https://bugs.launchpad.net/ubuntu/+source/xfce4-appfinder/+bug/1048805" target="_blank">https://bugs.launchpad.net/ubuntu/+source/xfce4-appfinder/+bug/1048805</a><br>
<br>
I also suspect this might be the cause of all the weird thunar<br>
crashes, but I have no evidence for this currently.<br>
<br>
So you're probably going to say "but Al, those are all Xubuntu<br>
specific bugs caused by Ubuntu modifications" - while this is true, we<br>
believe the underlying cause of all of them is the fork() after<br>
gtk_init(). The modded Gtk stuff in Ubuntu merely exposes the problem.<br>
<br>
fork() after gtk_init() has always been problematic, and the only<br>
reason it works is by luck - or at least, that is what our research<br>
into the problem has told us. For example:<br>
<a href="http://lists.freedesktop.org/archives/dbus/2007-April/007496.html" target="_blank">http://lists.freedesktop.org/archives/dbus/2007-April/007496.html</a><br>
<br>
So if you're maintaining an application in Xfce that forks in order to<br>
become a daemon, please do it as early on as possible. It isn't<br>
necessary to call gtk_init() to parse arguments with glib, so ideally<br>
you would parse for the "no-daemon" argument, possibly fork, then call<br>
gtk_init, then do everything else. This is the order of operations in<br>
the fix I proposed for xfce4-volumed-pulse. Note that the original<br>
xfce4-volumed isn't affected by this bug, but potentially there could<br>
be others I haven't mentioned.<br>
<br>
Thanks,<br>
<span class="HOEnZb"><font color="#888888">--<br>
Alistair Buxton<br>
<a href="mailto:a.j.buxton@gmail.com">a.j.buxton@gmail.com</a><br>
_______________________________________________<br>
Xfce4-dev mailing list<br>
<a href="mailto:Xfce4-dev@xfce.org">Xfce4-dev@xfce.org</a><br>
<a href="https://mail.xfce.org/mailman/listinfo/xfce4-dev" target="_blank">https://mail.xfce.org/mailman/listinfo/xfce4-dev</a><br>
</font></span></blockquote></div><br><br clear="all"><div><br></div>-- <br>Steve Dodier-Lazaro<br>PhD Student in Information Security<br>University College London<br>Free Software Developer<br>OpenPGP : 1B6B1670
</div>