Re: [PATCH] Revert "dbus: correctly build reply message"

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Mon, Sep 09, 2019 at 02:11:36PM +0100, Daniel P. Berrangé wrote:
> On Mon, Sep 09, 2019 at 03:47:21PM +0400, Marc-André Lureau wrote:
> > Hi
> > 
> > On Fri, Sep 6, 2019 at 7:37 PM Michal Privoznik <mprivozn@xxxxxxxxxx> wrote:
> > >
> > > This reverts commit 39dded7bb61444bb608fadd3f82f6fe93d08fd0e.
> > >
> > > This commit broke virpolkittest on Ubuntu 18 which has an old
> > > dbus (v1.12.2). Any other distro with the recent one works
> > > (v1.12.16) which hints its a bug in dbus somewhere. Revert the
> > > commit to stop tickling it.
> > >
> > > Signed-off-by: Michal Privoznik <mprivozn@xxxxxxxxxx>
> > 
> > This patch is no longer necessary for dbus-vmstate in this series. I
> > found this "bug" when implementing an alternative solution. So
> > reverting it is fine by me.
> > 
> > However, it may be revealing a transient bug in
> > virDBusMessageIterDecode() rather than libdbus. It would be worth to
> > have VIR_DEBUG() output from the failing test.
> 
> It is not really a bug - rather its due to the short cut taken by
> the test suite.
> 
> virpolkittest is mocking the dbus_connection_send_with_reply_and_block
> method.
> 
> This method accepts a DBusMessage input (the MethodCall) and has to
> create  DBusMessage as output (the MethodReply)
> 
> The DBusMessage input has no serial number set, since this is the job
> of the real dbus_connection_send_with_reply_and_block() method impl.
> 
> The dbus_message_new_method_return() impl expects the original message
> to have a valid serial number though.
> 
> Thus when we create the DBusMessage output, we hit an assertion failure
> when calling dbus_message_new_method_return().
> 
> This is in fact why the code intentionally uses
> 
>   dbus_message_new(DBUS_MESSAGE_TYPE_METHOD_RETURN)
> 
> in the first place.
> 
> What's strange though is why it ever succeeds on any distro. The
> assertion we're seeing should *always* hit us on every distro.

Oh, I missed that we now have a mock dbus_message_set_reply_serial
method that does nothing.

I wonder if on certain builds the compiler decided to inline that
method when called from dbus_message_new_method_return, so our mock
didn't take effect.  Oddly I can't reproduce it even on Ubuntu 18
using 'make ci-test@ubuntu-18'

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 :|

--
libvir-list mailing list
libvir-list@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/libvir-list




[Index of Archives]     [Virt Tools]     [Libvirt Users]     [Lib OS Info]     [Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [KDE Users]     [Fedora Tools]

  Powered by Linux