-
Notifications
You must be signed in to change notification settings - Fork 27
test flake error: opening repo: opendir(/proc/self/fd/3): No such file or directory
#664
Comments
Might help with ostreedev#664 But I didn't manage to reliably reproduce this.
Put up #676 |
I was able to get this to reproduce under
At a glance I think the third one would be the most likely problem, since we're under |
Ohhhh man I think I figured it out, look at this smoking gun in strace:
Most of the time, the fd we allocate here won't be 3. But sometimes, it will be. That code though is relying on dup2 to strip off So this would be a bug in https://github.com/coreos/cap-std-ext/blob/bfbb355a81ea47236c412d6fdc73bab99bcb078c/src/cmdext.rs#L33 Testing out a change... |
See ostreedev/ostree-rs-ext#664 Basically in the case when the source fd number is the same as the target, `dup2` is a no-op. This is an astoundingly evil bug because it means we just don't pass the expected fd to the child process. Fix this by detecting this situation and just stripping off `O_CLOEXEC`. Signed-off-by: Colin Walters <[email protected]>
Yep this works for me coreos/cap-std-ext#59 |
See ostreedev/ostree-rs-ext#664 Basically in the case when the source fd number is the same as the target, `dup2` is a no-op. This is an astoundingly evil bug because it means we just don't pass the expected fd to the child process. Fix this by detecting this situation and just stripping off `O_CLOEXEC`. Signed-off-by: Colin Walters <[email protected]>
See ostreedev/ostree-rs-ext#664 Basically in the case when the source fd number is the same as the target, `dup2` is a no-op. This is an astoundingly evil bug because it means we just don't pass the expected fd to the child process. Fix this by detecting this situation and just stripping off `O_CLOEXEC`. Signed-off-by: Colin Walters <[email protected]>
Closing this as fixed by coreos/cap-std-ext#59 |
We see this pretty often, it's a bit concerning as I have no idea how it could just be flaky.
The text was updated successfully, but these errors were encountered: