[libvirt PATCH] tests: don't mix FILE* and UNIX FD I/O on same stream

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



There is currently a hand in test27 that exhibits itself on FreeBSD 11.4
only. The behaviour is that virCommandProcessIO gets POLLIN on the
FD for stdout, but read() blocks. Meanwhile commandtest also blocks
in write for stderr because the pipe buffers are full.

This fix in commandhelper likely does not really address the root cause
just hides it due to the buffering done by FILE *. Mixing UNIX FD I/O
and FILE * I/O is bad practice regardles.

Signed-off-by: Daniel P. Berrangé <berrange@xxxxxxxxxx>
---
 tests/commandhelper.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/tests/commandhelper.c b/tests/commandhelper.c
index 05f577730f..7c260c4e13 100644
--- a/tests/commandhelper.c
+++ b/tests/commandhelper.c
@@ -221,9 +221,9 @@ int main(int argc, char **argv) {
     }
 
     for (i = 0; i < numpollfds; i++) {
-        if (write(STDOUT_FILENO, buffers[i], buflen[i]) != buflen[i])
+        if (fwrite(buffers[i], 1, buflen[i], stdout) != buflen[i])
             goto cleanup;
-        if (write(STDERR_FILENO, buffers[i], buflen[i]) != buflen[i])
+        if (fwrite(buffers[i], 1, buflen[i], stderr) != buflen[i])
             goto cleanup;
     }
 
-- 
2.26.2




[Index of Archives]     [Virt Tools]     [Libvirt Users]     [Lib OS Info]     [Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [KDE Users]     [Fedora Tools]

  Powered by Linux