Adding in Corinna Vinshcen, one of the Cygwin developers. She had problems trying to post directly on the bug page, so we can use email replies and summarize the results back to the bug.
On Mon, Jan 22, 2024 at 03:30:20PM +0000, Austin Group Bug Tracker via austin-group-l at The Open Group wrote: > > A NOTE has been added to this issue. > ====================================================================== > https://austingroupbugs.net/view.php?id=1798 > ====================================================================== > Reported By: eblake > Assigned To: > ====================================================================== > Project: Issue 8 drafts > Issue ID: 1798 > Category: System Interfaces > Type: Clarification Requested > Severity: Objection > Priority: normal > Status: New > Name: Eric Blake > Organization: Red Hat > User Reference: ebb.posix_getdents > Section: XSH posix_getdents > Page Number: 1567 > Line Number: 52609 > Final Accepted Text: > ====================================================================== > Date Submitted: 2024-01-22 15:13 UTC > Last Modified: 2024-01-22 15:30 UTC > ====================================================================== > Summary: Must posix_getdents remember file offsets across > exec? > ====================================================================== > > ---------------------------------------------------------------------- > (0006632) eblake (manager) - 2024-01-22 15:30 > https://austingroupbugs.net/view.php?id=1798#c6632 > ---------------------------------------------------------------------- > Correction - I'm told that the attempted Cygwin implementation also has > problems after dup(); it is unclear whether the states should be linked > (reading an entry on one fd, grabbing its offset, then using the other fd > to read entries, it is unclear whether the second fd starts reading from > the point where the fd was at the time of dup() or at the shared point > reached by the first fd, and whether the second fd can safely lseek() to > the offset read by the first fd). Easiest would be to state that dup() has > the same limitations as fork()/exec - namely, that any mid-stream directory > traversal in either side of the split is unspecified, and the only portable > thing is to start a new traversal by lseek'ing back to 0 (at which point, > the implementation no longer has to worry about sharing a half-read DIR* > across fd copies or processes). > > Issue History > Date Modified Username Field Change > ====================================================================== > 2024-01-22 15:13 eblake New Issue > 2024-01-22 15:13 eblake Name => Eric Blake > 2024-01-22 15:13 eblake Organization => Red Hat > 2024-01-22 15:13 eblake User Reference => > ebb.posix_getdents > 2024-01-22 15:13 eblake Section => XSH > posix_getdents > 2024-01-22 15:13 eblake Page Number => 1567 > 2024-01-22 15:13 eblake Line Number => 52609 > 2024-01-22 15:30 eblake Note Added: 0006632 > ====================================================================== > > -- Eric Blake, Principal Software Engineer Red Hat, Inc. Virtualization: qemu.org | libguestfs.org
