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

Daniel Eischen deischen at freebsd.org
Mon Dec 11 17:09:03 PST 2006


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.

Common sense leads me to think that a close() should release
threads in IO operations (reads/writes/selects/polls) and
return EBADF or something appropriate.  At least when behavior
is not dictated by POSIX or other historical/defactor behavior.

-- 
DE


More information about the freebsd-arch mailing list