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