ports/151725: sysutils/hal: hald fails to start with dbus-1.4
Andriy Gapon
avg at freebsd.org
Tue Nov 9 06:00:29 UTC 2010
The following reply was made to PR ports/151725; it has been noted by GNATS.
From: Andriy Gapon <avg at freebsd.org>
To: Joe Marcus Clarke <marcus at freebsd.org>
Cc: Kevin Oberman <oberman at es.net>, gnome at freebsd.org,
bug-followup at freebsd.org
Subject: Re: ports/151725: sysutils/hal: hald fails to start with dbus-1.4
Date: Tue, 09 Nov 2010 07:54:32 +0200
on 09/11/2010 07:52 Andriy Gapon said the following:
> on 09/11/2010 07:47 Joe Marcus Clarke said the following:
>> On 11/9/10 12:36 AM, Andriy Gapon wrote:
>>> on 09/11/2010 02:14 Kevin Oberman said the following:
>>>> I'll try this as soon as I can. I'm not too sure that it will happen as
>>>> I think that this is somehow timing related. I suspect that the entry is
>>>> disappearing too quickly with 1.4 in some cases but is not a problem
>>>> with 1.2. Perhaps some optimization?
>>>>
>>>> I suggest this because on at least rare occasion, 1.4 did run
>>>> successfully, not because I have any clue what was happening under the
>>>> covers.
>>>
>>> I guess that I already explained this part.
>>> The problem happened because we tried to write something (even if it's just zero
>>> sized something) into stdin of a child process that already exited.
>>> Sometimes the child process was quicker, sometimes the parent process was
>>> quicker, hence the non-determinism.
>>>
>>
>> Ah, I missed that. I wonder if it would be safer then to ignore SIGPIPE
>> around the write block.
>
> Maybe.
Actually, please read the above as "probably no".
If a child process that is supposed to get input would crash, then such a change
would obfuscate diagnostics.
> But not calling write(2) when we don't have anything to write (zero
> length) also looks like a good solution (for me personally).
>
> My point is: zero-sized write in nothing but testing OS implementation details
> of handling zero-sized writes, it doesn't perform any useful function.
> OTOH, if a child process is supposed to get any actual input, then it won't exit
> prematurely, but would block reading from its stdin until the input arrives.
>
> But I think I am starting to repeat what I have already wrote before.
>
--
Andriy Gapon
More information about the freebsd-gnome
mailing list