Re: [RFC v1] man/man2/close.2: CAVEATS: Document divergence from POSIX.1-2024
From: Vincent Lefevre <hidden>
Date: 2026-02-06 15:20:17
Also in:
linux-fsdevel
On 2025-05-17 09:32:52 -0400, Rich Felker wrote:
On Fri, May 16, 2025 at 04:39:57PM +0200, Vincent Lefevre wrote:quoted
On 2025-05-16 09:05:47 -0400, Rich Felker wrote:quoted
FWIW musl adopted the EINPROGRESS as soon as we were made aware of the issue, and later changed it to returning 0 since applications (particularly, any written prior to this interpretation) are prone to interpret EINPROGRESS as an error condition rather than success and possibly misinterpret it as meaning the fd is still open and valid to pass to close again.If I understand correctly, this is a poor choice. POSIX.1-2024 says: ERRORS The close() and posix_close() functions shall fail if: [...] [EINPROGRESS] The function was interrupted by a signal and fildes was closed but the close operation is continuing asynchronously. But this does not mean that the asynchronous close operation will succeed.There are no asynchronous behaviors specified for there to be a conformance distinction here. The only observable behaviors happen instantly, mainly the release of the file descriptor and the process's handle on the underlying resource. Abstractly, there is no async operation that could succeed or fail.
Sorry, this is old. But a consequence may be memory leak if something unexpected occurred during what was done asynchronously. There is no guarantee that *every* resource has been released. -- Vincent Lefèvre [off-list ref] - Web: <https://www.vinc17.net/> 100% accessible validated (X)HTML - Blog: <https://www.vinc17.net/blog/> Work: CR INRIA - computer arithmetic / Pascaline project (LIP, ENS-Lyon)