threads/94467: send(), sendto() and sendmsg() are not correct
in libc_r
Daniel Eischen
deischen at freebsd.org
Wed Mar 15 14:20:25 UTC 2006
The following reply was made to PR threads/94467; it has been noted by GNATS.
From: Daniel Eischen <deischen at freebsd.org>
To: Sven Berkvens-Matthijsse <sven at ilse.net>
Cc: FreeBSD-gnats-submit at freebsd.org, <freebsd-threads at freebsd.org>
Subject: Re: threads/94467: send(), sendto() and sendmsg() are not correct
in libc_r
Date: Wed, 15 Mar 2006 09:16:07 -0500 (EST)
On Wed, 15 Mar 2006, Sven Berkvens-Matthijsse wrote:
>
> >Number: 94467
> >Category: threads
> >Synopsis: send(), sendto() and sendmsg() are not correct in libc_r
> >Confidential: no
> >Severity: serious
> >Priority: medium
> >Responsible: freebsd-threads
> >State: open
> >Quarter:
> >Keywords:
> >Date-Required:
> >Class: sw-bug
> >Submitter-Id: current-users
> >Arrival-Date: Wed Mar 15 11:10:21 GMT 2006
> >Closed-Date:
> >Last-Modified:
> >Originator: Sven Berkvens-Matthijsse
> >Release: FreeBSD 4.10-STABLE i386
> >Organization:
> ilse media BV
> >Environment:
> System: FreeBSD serv7.ilse.net 4.10-STABLE FreeBSD 4.10-STABLE #23: Wed Aug 4 15:18:52 CEST 2004 root at tango.ilse.net:/usr/obj/usr/src/sys/BAROQUE i386
>
> >Description:
> send(), sendto() and sendmsg() can return prematurely in the libc_r
> implementation. If the socket has space available, but not enough to
> accommodate the whole data block at once, the kernel's sendto() will
> return with a premature byte count, because all the sockets are always
> put into nonblocking mode. However, unlike write(), which does
> implement this correctly, the implementation of sendto() and co do not
> check for this condition if the thread's notion of the socket was
> non-blocking. Instead, it just returns the permature bytecount instead
> of starting another sendto()/sendmsg() to complete the action (and
> possibly putting the thread to sleep until poll() says it's okay to
> try again), like a non-blocking version should.
We're not maintaining libc_r any longer, and 4.x is pretty
much a dead branch. If you need bug fixes, you need to upgrade
to 6.x stable and use libpthread or libthr.
--
DE
More information about the freebsd-threads
mailing list