Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 13 Apr 2014 21:20:00 GMT
From:      Jilles Tjoelker <jilles@stack.nl>
To:        freebsd-bugs@FreeBSD.org
Subject:   Re: kern/159179: [libc] close(2) emitting ECONNRESET is not POSIX compliant
Message-ID:  <201404132120.s3DLK0d8022574@freefall.freebsd.org>

next in thread | raw e-mail | index | archive | help
The following reply was made to PR kern/159179; it has been noted by GNATS.

From: Jilles Tjoelker <jilles@stack.nl>
To: bug-followup@FreeBSD.org, freebsd@grem.de
Cc:  
Subject: Re: kern/159179: [libc] close(2) emitting ECONNRESET is not POSIX
 compliant
Date: Sun, 13 Apr 2014 23:14:27 +0200

 In FreeBSD PR kern/159179, you wrote:
 > With the advent of FreeBSD 6.3 the close(2) call was changed to return
 > errno ECONNRESET under certain circumstances. The man page was changed
 > accordingly, but in my understanding errno = ECONNRESET is not covered
 > by POSIX.1-2008 (see
 > http://pubs.opengroup.org/onlinepubs/9699919799/functions/close.html).
 > Also all other implementations of close I've seen in the past do not
 > behave like this, which leads to actual problems in reality.
 
 > In practice this means that all projects ported to FreeBSD would need
 > to get reviewed if they can handle these situations gracefully, which
 > usually doesn't happen.
 
 POSIX permits additional errors. XSH 2.3 Error Numbers says:
 ] Implementations may generate error numbers listed here under
 ] circumstances other than those described, if and only if all those
 ] error conditions can always be treated identically to the error
 ] conditions as described in this volume of POSIX.1-2008.
 ] Implementations shall not generate a different error number from one
 ] required by this volume of POSIX.1-2008 for an error condition
 ] described in this volume of POSIX.1-2008, but may generate additional
 ] errors unless explicitly disallowed for a particular function.
 
 The page for close() does not exclude [ECONNRESET] or any other error.
 
 One problem with close() errors is that there may be confusion about
 whether the file descriptor is still valid. In FreeBSD (and also Linux),
 close() on a valid file descriptor always deallocates it, even if there
 is an error while closing.
 
 The problem reported in kern/146845 may cause [ECONNRESET] errors even
 when no data was lost. This may have been fixed.
 
 -- 
 Jilles Tjoelker



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201404132120.s3DLK0d8022574>