[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: pkg/48071: qemu 1.5.1 serial console output lossage
The following reply was made to PR pkg/48071; it has been noted by GNATS.
From: Andreas Gustafsson <gson%gson.org@localhost>
Greg Troxel <gdt%ir.bbn.com@localhost>
Subject: Re: pkg/48071: qemu 1.5.1 serial console output lossage
Date: Sun, 22 Jun 2014 20:55:26 +0300
I have now analyzed this problem further by adding some debug logging
to the character device handling code in qemu, and found that it is a
bug in qemu, not NetBSD.
What happens is that qemu is setting its standard output to
non-blocking mode, causing writes to return EAGAIN when the tty output
buffer fills up. When that happens, qemu is supposed to retry the
write once the file descriptor becomes ready for output, but it fails
to retry and ends up discarding the data.
This problem is easily triggered on NetBSD hosts where the default tty
buffer size is only 1 kB, which means that even a relatively small
write() to a tty or pty can cause the buffer to fill up and EAGAIN to
be returned. That it is not happening on Linux hosts may be due to
the larger size of the Linux tty output buffer, or there may be other
differences that make Linux less likely than NetBSD to return EAGAIN
from a write to a tty.
Increasing the tty output buffer size on the NetBSD host using
sysctl -w kern.tty.qsize=65536
alleviates the problem significantly, but does not fix it completely:
with this setting, "anita install" completes successfully, but
"anita test" sometimes fails because the final summary of the ATF test
results still fails to appear in its entirety.
Andreas Gustafsson, gson%gson.org@localhost
Main Index |
Thread Index |