On Tue, Apr 26, 2022 at 12:07:40PM +0000, Andrea Bolognani wrote:
On Tue, Apr 26, 2022 at 10:12:17AM +0100, Daniel P. Berrangé wrote:
> We don't have access to the 'testlog.txt' file, so we need meson to
> print the failures for any broken tests directly.
>
> Signed-off-by: Daniel P. Berrangé <berrange(a)redhat.com>
> ---
> ci/cirrus/build.yml | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
Reviewed-by: Andrea Bolognani <abologna(a)redhat.com>
> The CI pipeline for macOS started failing a few days ago. It was not
> triggered by any commit, as the pipeline immediately preceeding the
> first failure used the same commit hash on master. The logs show
> glib2 being updated from 2.72.0 to 2.72.1
>
> With this patch applied I can see the test logs
>
>
https://gitlab.com/berrange/libvirt/-/jobs/2376891003
>
> and all the failing tests are hitting:
>
> (process:50961): GLib-WARNING **: 01:56:14.162: poll(2) failed due to:
> Bad file descriptor.
>
> so something todo with the QEMU monitor/event loop AFAIK, but not
> sure what.
Looking at
https://gitlab.gnome.org/GNOME/glib/-/releases/2.72.1
the interesting change seems to be
* Fix detection of broken poll() function on macOS
which would correspond to
https://gitlab.gnome.org/GNOME/glib/-/merge_requests/2571
Yep, I since filed a bug
https://gitlab.com/libvirt/libvirt/-/issues/303
The problem is that poll handles bad file descriptors by setting
the event POLLNVAL. ie poll() syscall succeeds.
With the glib BROKEN_POLL macro set, it emulates poll() using
select() and with bad file descriptors that fails hard with
EBADF.
IOW, I suspect there's a latent bug hiding in libvirt tests (or
real code) that is passing a bad FD to poll(), and we've been
lucky that it was harmless with POLLNVAL, and now we're seeing
the bug exposed.
So it looks like this was very intentional, and motivated by the
needs of QEMU of all projects... I wonder what they're doing
differently from us?
Tracing the history back, poll() on macOS fails when used with
FDs associated with a device node under /dev/*. Not likely
something libvirt does, but certainly an issue for QEMU with
tap devices.
With regards,
Daniel
--
|:
https://berrange.com -o-
https://www.flickr.com/photos/dberrange :|
|:
https://libvirt.org -o-
https://fstop138.berrange.com :|
|:
https://entangle-photo.org -o-
https://www.instagram.com/dberrange :|