kern/62524: SIGALRM is not delivered when res_send() hangs
waiting in kevent()
Ian Dowse
iedowse at FreeBSD.org
Sun Feb 8 08:14:50 PST 2004
Synopsis: SIGALRM is not delivered when res_send() hangs waiting in kevent()
State-Changed-From-To: open->closed
State-Changed-By: iedowse
State-Changed-When: Sun Feb 8 08:07:35 PST 2004
State-Changed-Why:
Submitter confirms that it was a problem with the application, not
kevent or the resolver:
>>Are you sure that there isn't something more needed for the problem
>>to occur? I can't reproduce this as you describe with the program
>>below; the SIGARLM handler keeps getting called as expected.
>>
>>Ian
> You got it quite right.
> I saw two separate calls to gethostbyaddr() one of which was
> not properly inside the region of code which is interruptible
> by SIGALRM.
> Obviously enough the one outside of the interruptible region
> had no signal delivered because the signal was blocked from
> delivery.
>
>
> Cheers,
> // jau
...
>Quoting Ian Dowse:
>>
>> Does that mean the PR can be closed? I'm not sure if it's related,
>> but there is another PR, bin/4696, which reports this problem in
>> ping(8). Ping will hang in a state where it ignores ^C and sends
>> no packets until a gethostbyaddr() call completes. I think it only
>> happens when ping gets an error reply and tries to look up the IP
>> that sent the error.
>
> Right, my complaint should have never been written. The code
> just happened to be big and complex enough to hide the fact
> there were calls to gethostbyaddr() also inside a region that
> was protected from signals. All name resolution should have
> been considered "nice to have" and done only when there was
> nothing more important to do.
...
http://www.freebsd.org/cgi/query-pr.cgi?pr=62524
More information about the freebsd-bugs
mailing list