[libvirt PATCH] tests: don't mix FILE* and UNIX FD I/O on same stream
Eric Blake
eblake at redhat.com
Mon Sep 21 18:37:50 UTC 2020
On 9/21/20 12:36 PM, Daniel P. Berrangé wrote:
> There is currently a hand in test27 that exhibits itself on FreeBSD 11.4
s/hand/hang/
> 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.
regardless
POSIX has rules for when it is safe (it has a notion of an active
handle, and what must be done to a FILE* that is currently the active
handle before doing further I/O via an fd that wants to become the
active handle
https://pubs.opengroup.org/onlinepubs/9699919799/functions/V2_chap02.html#tag_15_05).
But you're right that not mixing is the easiest approach.
>
> Signed-off-by: Daniel P. Berrangé <berrange at redhat.com>
> ---
> tests/commandhelper.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
With typos fixed,
Reviewed-by: Eric Blake <eblake at redhat.com>
--
Eric Blake, Principal Software Engineer
Red Hat, Inc. +1-919-301-3226
Virtualization: qemu.org | libvirt.org
More information about the libvir-list
mailing list