Re: [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]

 



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@xxxxxxxxxx>
---
  tests/commandhelper.c | 4 ++--
  1 file changed, 2 insertions(+), 2 deletions(-)

With typos fixed,
Reviewed-by: Eric Blake <eblake@xxxxxxxxxx>

--
Eric Blake, Principal Software Engineer
Red Hat, Inc.           +1-919-301-3226
Virtualization:  qemu.org | libvirt.org




[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