The following reply was made to PR kern/159179; it has been noted by GNATS.
From: Jilles Tjoelker <jil...@stack.nl> To: bug-follo...@freebsd.org, free...@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 _______________________________________________ freebsd-bugs@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-bugs To unsubscribe, send any mail to "freebsd-bugs-unsubscr...@freebsd.org"