close() of active socket does not work on FreeBSD 6

Kostik Belousov kostikbel at gmail.com
Tue Dec 12 05:59:24 PST 2006


On Tue, Dec 12, 2006 at 08:18:32AM -0500, Daniel Eischen wrote:
> On Mon, 11 Dec 2006, Daniel Eischen wrote:
> 
> >On Tue, 12 Dec 2006, Arne H. Juul wrote:
> >
> >>On Tue, 12 Dec 2006, David Xu wrote:
> >>>On Tuesday 12 December 2006 06:34, Arne H. Juul wrote:
> >>><snip>
> >>>>This is exactly the sort of issue that should be solved by the
> >>>>thread library / kernel threads implementation and not in every
> >>>>threaded application that needs it, in my view.
> >>>>
> >>>It should not be done in new thread library, do you want a bloat
> >>>and error-prone thread library ? Instead if this semantic is really
> >>>necessary, it should be done in kernel.
> >>
> >>Well, it depends on the alternatives.
> >>If a clean kernel implementation is possible - yes please, of course.
> >>If only a complex, error-prone kernel implementation is possible,
> >>I would prefer to have the complexity in the thread library.
> >
> >Hacking libthr or libpthread to do this for you is not
> >an option.  They would then look like libc_r since all
> >fd's accesses would need to be wrapped.  If this needs
> >to be done, it must be in the kernel.
> 
> It's also couldn't be entirely solved by fixing it in the
> threads library.  You could still have a non-threaded
> application that waits on a read operation, but receives
> a signal and closes the socket in the signal handler.

This is not the problem. The read (as syscall being executed) is aborted
when signal is delivered. Original poster considered situation where
read() is active (in particular, f_count of struct file is incremented
by fget, that caused the reported behaviour).
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 187 bytes
Desc: not available
Url : http://lists.freebsd.org/pipermail/freebsd-arch/attachments/20061212/160c664f/attachment.pgp


More information about the freebsd-arch mailing list