On Sat, Oct 23, 2021 at 11:47:41PM +0300, Nir Soffer wrote:
Go syscall package does not handle EINTR like higher level packages, so we need to handle it when using syscall.Select().
The test always fails when running:
$ GOLANG=go pkg=libguestfs.org/libnbd ./run-tests.sh ... === RUN Test590AioCopy libnbd_590_aio_copy_test.go:160: select: interrupted system call
Strangely, it never fails when running "make check".
It may be a situation where executing the test directly causes a different set of default signal handlers to be inherited into the child process than when running under make (never a fun situation to debug or actually prove). Syscalls should only be able to fail with EINTR based on when a program has installed non-default signal handlers, but whether they do that may in turn depend on what they inherit from the parent process. -- Eric Blake, Principal Software Engineer Red Hat, Inc. +1-919-301-3266 Virtualization: qemu.org | libvirt.org