On Tue, Nov 27, 2018 at 10:35 PM Paolo Bonzini <pbonz...@redhat.com> wrote: > > Subprocesses are created by glib without leaving the file descriptors > open. Therefore, g_test_message (and assertion failures, but those > trigger when things are going bad anyway) will think that it is writing > to the log file descriptor, but while actually stomping on the QMP > file descriptor or similar. This causes spurious failures, which are > as nice to debug as the reader can imagine. While I have opened a > pull request on GLib, this will probably take a while to propagate > to distros. > > I found this while working on qgraph, but the fix is generic. > > Signed-off-by: Paolo Bonzini <pbonz...@redhat.com>
good catch! makes me wonder if g_test_message() is supposed to be usable in a subprocess.. Let see the review comments on upstream bug. At least, documentation should be updated. Reviewed-by: Marc-André Lureau <marcandre.lur...@redhat.com> > --- > include/glib-compat.h | 6 ++++++ > 1 file changed, 6 insertions(+) > > diff --git a/include/glib-compat.h b/include/glib-compat.h > index fdf95a2..989b9ef 100644 > --- a/include/glib-compat.h > +++ b/include/glib-compat.h > @@ -113,4 +113,10 @@ gint g_poll_fixed(GPollFD *fds, guint nfds, gint > timeout); > > #pragma GCC diagnostic pop > > +/* See https://gitlab.gnome.org/GNOME/glib/merge_requests/501 */ > +#define g_test_message(...) > \ > + do { > \ > + if (!g_test_subprocess()) g_test_message(__VA_ARGS__); > \ > + } while (0) > + > #endif > -- > 1.8.3.1 >