Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 15 Mar 2006 09:16:07 -0500 (EST)
From:      Daniel Eischen <deischen@freebsd.org>
To:        Sven Berkvens-Matthijsse <sven@ilse.net>
Cc:        FreeBSD-gnats-submit@freebsd.org, freebsd-threads@freebsd.org
Subject:   Re: threads/94467: send(), sendto() and sendmsg() are not correct in libc_r
Message-ID:  <Pine.GSO.4.43.0603150914060.27666-100000@sea.ntplx.net>
In-Reply-To: <200603151109.k2FB9pCN037532@serv7.ilse.net>

next in thread | previous in thread | raw e-mail | index | archive | help
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@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




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?Pine.GSO.4.43.0603150914060.27666-100000>