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é <berra...@redhat.com> > > --- > > ci/cirrus/build.yml | 2 +- > > 1 file changed, 1 insertion(+), 1 deletion(-) > > Reviewed-by: Andrea Bolognani <abolo...@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 :|