[libvirt PATCH] ci: print test suite logs on failure for Cirrus jobs
Daniel P. Berrangé
berrange at redhat.com
Tue Apr 26 12:15:31 UTC 2022
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 at redhat.com>
> > ---
> > ci/cirrus/build.yml | 2 +-
> > 1 file changed, 1 insertion(+), 1 deletion(-)
>
> Reviewed-by: Andrea Bolognani <abologna at 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 :|
More information about the libvir-list
mailing list