Quoting Alfred Perlstein <[EMAIL PROTECTED]>:
> > I attach example program, which, when receives SIGUSR1 should close
> the socket,
> > but, in fact gets blocked in the close() function.
> > Obviously it's waiting to acquire some lock.
> > Does anyone have an idea?
> 
> Yes, I have an idea and an idea how to fix it, I'm wondering what
> the thread in accept() sees after this happens?
> 
> what is the errno from accept?
The point is, that when close() is called, accept doesn't break out.

from close(2)
IMPLEMENTATION NOTES
     In the non-threaded library close() is implemented as the close syscall.

     In the threaded library, the close syscall is assembled to
     _thread_sys_close() and close() is implemented as a function which locks
     d for read and write, then calls _thread_sys_close().  Before returning,
     close() unlocks d.


So from my point of view the close tries to acquire a lock.


--Roman Shterenzon, UNIX System Administrator and Consultant
[ Xpert UNIX Systems Ltd., Herzlia, Israel. Tel: +972-9-9522361 ]


To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-stable" in the body of the message

Reply via email to