-
Notifications
You must be signed in to change notification settings - Fork 170
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
cmdlib.sh: feed /dev/zero
as qemu stdin
#3793
Conversation
Skipping CI for Draft Pull Request. |
/test all |
/retest |
/test all |
/test rhcos |
/test all |
This reverts commit 79b15c8. I found a workaround for the issue that prompted that commit. See next commit.
This is a follow-up to 79b15c8 ("cmdlib.sh: go back to using `tail -F` for command output") which was subsequently reverted. To summarize, it seems like in QEMU v8.2 (in f40), the guest sometimes would hang when writing over virtio-serial if the device is hooked up to the QEMU's stdio. In testing, removing the `<&-` hack to close QEMU's stdin fixed it for CoreOS CI but not Prow: coreos#3785 (comment) I think I've narrowed it down to CoreOS CI (i.e. Jenkins) allocating a tty and Prow not. When stdin is not a tty, QEMU would immediately gets EOF if it tries to read anything. I'm not sure exactly what happens, but I think the virtio-serial hang is linked to this (even though there's no userspace code in the guest trying to read from the virtio-serial port). Work around this by explicitly feeding `/dev/zero` to QEMU's stdin.
/test all |
tail -F
for command output"/dev/zero
as qemu stdin
OK sweet! CI is happy. 🎉 Yes, I should try to get a minimal reproducer of the underlying issue and file a bug at some point, but... time. :( |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM
This is a follow-up to 79b15c8 ("cmdlib.sh: go back to using
tail -F
for command output") which was subsequently reverted.
To summarize, it seems like in QEMU v8.2 (in f40), the guest sometimes
would hang when writing over virtio-serial if the device is hooked up to
the QEMU's stdio.
In testing, removing the
<&-
hack to close QEMU's stdin fixed it forCoreOS CI but not Prow:
#3785 (comment)
I think I've narrowed it down to CoreOS CI (i.e. Jenkins) allocating a
tty and Prow not. When stdin is not a tty, QEMU would immediately gets
EOF if it tries to read anything. I'm not sure exactly what happens, but
I think the virtio-serial hang is linked to this (even though there's no
userspace code in the guest trying to read from the virtio-serial port).
Work around this by explicitly feeding
/dev/zero
to QEMU's stdin.