Re: Glib.IO.add_watch HUP signal issues on Mac OS X

Olivier Andrieu <[email protected]> Mon, 25 Nov 2013 10:45:07 +0100
Newsgroups gmane.comp.lang.ocaml.lib.gtk
Message-ID <CAD5gH1G4AdD5fFC_G4J_E_+6WUhWb3cCN-aVD1ovFbmeRQYuvg@mail.gmail.com>
--001a1134d7d219170404ebfd38e6
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable

Hi,

On Thu, Nov 14, 2013 at 12:40 AM, Piotr Esden-Tempski <[email protected]> wro=
te:
> Hi everyone,
>
> I am trying to debug an issue on Mac OS X. I tried to describe as much as=
 I could with a bunch of examples here: https://github.com/paparazzi/papara=
zzi/issues/290
>
> TLDR: When watching a pipe connected to a child process, Linux machines s=
end a IO_HUP signal when the child exits. On Darwin this is not happening. =
The alternative used to be to wait for the OUT signal instead that. Since 1=
0.8 the OUT signal is arriving immediately when a process starts, which bre=
aks the kludgy fix.
>
> I bet that waiting for the OUT signal was a kludge in the first place. It=
 was surprising that it was working in the first place, but it did the job.

yeah, I'm not surprised, it was bound to break eventually :-/

> Now my questions.
>
> 1) Did anyone of you guys encounter this problem too? (Maybe I am just mi=
ssing something very obvious.)
>
> 2) If there is no way of fixing this in lablgtk or glib and it actually i=
s a bug in Darwin itself, what alternatives would you guys propose? During =
my research I found the child_watch_add function in glib. From my understan=
ding this would be a perfect candidate to replace the way and purpose we ar=
e using add_watch for currently. But as far as I can tell it is not availab=
le through lablgtk2 bindings. So let me know if there is another way of asy=
nchronously monitoring child processes.

Yes, child_watch_add is exactly what you need ... and it turns out I
needed it too, a couple years ago ! I had written the bindings for the
g_spawn_* functions and g_child_watch_add. I cant remember why I
didn't integrate them in LablGTK though.

Here's the code, I'll see if I can integrate it in the current LablGTK.

Cheers,
--=20
  Olivier

--001a1134d7d219170404ebfd38e6
Content-Type: application/x-gzip; name="gspawn.tar.gz"
Content-Disposition: attachment; filename="gspawn.tar.gz"
Content-Transfer-Encoding: base64
X-Attachment-Id: f_hofj1tib0

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
67Zu67Zu63bv9n/N8kk/AFAAAA==
--001a1134d7d219170404ebfd38e6
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

_______________________________________________
Lablgtk-list mailing list
[email protected]
https://lists.ocamlcore.org/cgi-bin/listinfo/lablgtk-list

--001a1134d7d219170404ebfd38e6--