virtio/fs/macos: duplicate fd for fdopendir#540
Closed
slp wants to merge 1 commit intocontainers:mainfrom
Closed
Conversation
fdopendir() takes ownership of the fd passed as argument to it, so passing the fd of the HandleData->File will cause the fd to be closed twice, first when closedir() is called and second when Arc<HandleData> is dropped. If the library is built with debug-assertions enabled, this issue will trigger an error like: fatal runtime error: IO Safety violation: owned file descriptor already closed, aborting To avoid this issue, let's use dup() to obtain a new descriptor from HandleData->File to be donated to fdopendir(). Fixes: containers#539 Signed-off-by: Sergio Lopez <slp@redhat.com>
Contributor
|
Checked this PR on my system, the assertion no longer happens, so the change is good. But the ghost files still appear so it is probably a separate issue. |
Collaborator
Author
|
Let's put this one on hold, because I'm preparing another one that fixes both this and the ghost files. |
Collaborator
Author
|
Superseded by #542 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
fdopendir() takes ownership of the fd passed as argument to it, so passing the fd of the HandleData->File will cause the fd to be closed twice, first when closedir() is called and second when Arc is dropped.
If the library is built with debug-assertions enabled, this issue will trigger an error like:
fatal runtime error: IO Safety violation: owned file descriptor already closed, aborting
To avoid this issue, let's use dup() to obtain a new descriptor from HandleData->File to be donated to fdopendir().
Fixes: #539