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