mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-12-22 17:34:18 +03:00
tests: don't mix FILE* and UNIX FD I/O on same stream
There is currently a hang 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 regardless. Reviewed-by: Eric Blake <eblake@redhat.com> Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
This commit is contained in:
parent
cb09344a2c
commit
946c815024
@ -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;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user