[libvirt] Entering freeze for libvirt-1.1.2

Viktor Mihajlovski mihajlov at linux.vnet.ibm.com
Fri Aug 30 10:47:09 UTC 2013


On 08/29/2013 07:08 PM, Eric Blake wrote:
> We are already providing an LD_PRELOAD override of
> dbus_message_set_reply_serial as part of that test, which SHOULD be
> avoiding that assert (at least, it did so on both RHEL 5 and current
> Fedora) (see commit 524f52c).  Can you do some debugging under gdb to
> see why the preload is not being used on Ubuntu's version of dbus?
> 
The mechanism itself is working fine, but looking at the backtrace it
seems that dbus_message_set_reply_serial is called from within a
function that's not part of the mock library:

Breakpoint 1, 0x00007ffff5aaf8e0 in dbus_message_set_reply_serial () from /lib/x86_64-linux-gnu/libdbus-1.so.3
(gdb) bt
#0  0x00007ffff5aaf8e0 in dbus_message_set_reply_serial () from /lib/x86_64-linux-gnu/libdbus-1.so.3
#1  0x00007ffff5ab2a28 in dbus_message_new_method_return () from /lib/x86_64-linux-gnu/libdbus-1.so.3
#2  0x00007ffff770c71f in virDBusCallMethod (conn=0x1, replyout=0x0, destination=<optimized out>, 
    path=<optimized out>, iface=0x7ffff791c8f0 "org.freedesktop.machine1.Manager", member=<optimized out>, 
    types=0x7ffff791c9cb "sayssusa(sv)") at ../../src/util/virdbus.c:1151
#3  0x00007ffff77459c1 in virSystemdCreateMachine (name=<optimized out>, drivername=0x411d3d "lxc", 
    privileged=<optimized out>, 
    uuid=0x7fffffffded0 "\001\001\001\001\002\002\002\002\003\003\003\003\004\004\004\004", 
    rootdir=<optimized out>, pidleader=123, iscontainer=true, partition=0x411db2 "highpriority.slice")
    at ../../src/util/virsystemd.c:213
#4  0x00000000004031e9 in testCreateContainer (opaque=<optimized out>) at ../../tests/virsystemdtest.c:39
#5  0x0000000000403f9d in virtTestRun (title=<optimized out>, nloops=1, body=0x403150 <testCreateContainer>, 
    data=0x0) at ../../tests/testutils.c:169
#6  0x0000000000402bc1 in mymain () at ../../tests/virsystemdtest.c:178
#7  0x000000000040468b in virtTestMain (argc=1, argv=<optimized out>, func=0x402b90 <mymain>)
    at ../../tests/testutils.c:772
#8  0x00000000004029e0 in main (argc=1, argv=0x7fffffffe168) at ../../tests/virsystemdtest.c:207

as can be seen here:

ldd -r .libs/virsystemdmock.so
undefined symbol: dbus_set_error	(.libs/virsystemdmock.so)
	linux-vdso.so.1 =>  (0x00007fff69bb2000)
	libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fd46ecf0000)
	/lib64/ld-linux-x86-64.so.2 (0x00007fd46f2d2000)
undefined symbol: dbus_message_new_error	(.libs/virsystemdmock.so)
undefined symbol: dbus_message_new_method_return	(.libs/virsystemdmock.so)

although the callstack seems to have fallen prey to the optimizer, 
virDBusCallMethod calls the mock dbus_connection_send_with_reply_and_block
which in turn calls the real dbus_message_new_method_return which again
calls dbus_message_set_reply_serial, but the real one instead of the mock
version. On RHEL it's calling the mock ...reply_serial.

On other occcasions I have observed that libtool on Ubuntu behaves differently
than on RHEL or Fedora and maybe that's why the LD_PRELOAD works differently
for intra-library calls there. But here I am entering the realm of wild
speculations...

-- 

Mit freundlichen Grüßen/Kind Regards
   Viktor Mihajlovski

IBM Deutschland Research & Development GmbH
Vorsitzender des Aufsichtsrats: Martina Köderitz
Geschäftsführung: Dirk Wittkopp
Sitz der Gesellschaft: Böblingen
Registergericht: Amtsgericht Stuttgart, HRB 243294   




More information about the libvir-list mailing list