From owner-freebsd-threads@FreeBSD.ORG Wed Mar 15 14:20:25 2006 Return-Path: X-Original-To: freebsd-threads@hub.freebsd.org Delivered-To: freebsd-threads@hub.freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 9EFF016A425 for ; Wed, 15 Mar 2006 14:20:25 +0000 (UTC) (envelope-from gnats@FreeBSD.org) Received: from freefall.freebsd.org (freefall.freebsd.org [216.136.204.21]) by mx1.FreeBSD.org (Postfix) with ESMTP id EEEDA43D46 for ; Wed, 15 Mar 2006 14:20:24 +0000 (GMT) (envelope-from gnats@FreeBSD.org) Received: from freefall.freebsd.org (gnats@localhost [127.0.0.1]) by freefall.freebsd.org (8.13.4/8.13.4) with ESMTP id k2FEKOHT082286 for ; Wed, 15 Mar 2006 14:20:24 GMT (envelope-from gnats@freefall.freebsd.org) Received: (from gnats@localhost) by freefall.freebsd.org (8.13.4/8.13.4/Submit) id k2FEKOtC082285; Wed, 15 Mar 2006 14:20:24 GMT (envelope-from gnats) Date: Wed, 15 Mar 2006 14:20:24 GMT Message-Id: <200603151420.k2FEKOtC082285@freefall.freebsd.org> To: freebsd-threads@FreeBSD.org From: Daniel Eischen Cc: Subject: Re: threads/94467: send(), sendto() and sendmsg() are not correct in libc_r X-BeenThere: freebsd-threads@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list Reply-To: Daniel Eischen List-Id: Threading on FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 15 Mar 2006 14:20:25 -0000 The following reply was made to PR threads/94467; it has been noted by GNATS. From: Daniel Eischen To: Sven Berkvens-Matthijsse Cc: FreeBSD-gnats-submit@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@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