[Pkg-libvirt-maintainers] Bug#737267: libvirt-bin: libvirtd-1.2.1 crash/abort in libnl3 at startup (but libvirtd-1.2.0-2 don't)

François Scala debian at arcenik.net
Fri Jan 31 23:00:10 UTC 2014


Package: libvirt-bin
Version: 1.2.1-1~bpo70+1
Severity: grave
Justification: renders package unusable

Hello,

When upgrade libvirt from 1.2.0-2 to 1.2.1-1 it no longer start. An assert fail
in libnl3.
I've upgrade libnl3 to the latest version from testing with the same result.
So I've patched the assert in libnl3 as it test twi things.

# libvirtd -vvvvv

OK lib/route/tc.c:978 : ops->to_type = 2, RTNL_TC_TYPE_MAX = 2
OK lib/route/tc.c:978 : ops->to_type = 2, RTNL_TC_TYPE_MAX = 2
OK lib/route/tc.c:978 : ops->to_type = 2, RTNL_TC_TYPE_MAX = 2
OK lib/route/tc.c:978 : ops->to_type = 2, RTNL_TC_TYPE_MAX = 2
lib/route/tc.c:978 : ops->to_type = 650356128, RTNL_TC_TYPE_MAX = 2

libvirtd: /usr/src/tmp/libnl3-3.2.21/./lib/route/tc.c:980: rtnl_tc_register:
Assertion `0' failed.
Caught abort signal dumping internal log buffer:


    ====== start of log =====

2014-01-31 22:16:10.698+0000: 17795: debug : virLogParseOutputs:1346 :
outputs=3:stderr
2014-01-31 22:16:10.698+0000: 17795: debug : virObjectNew:199 : OBJECT_NEW:
obj=0x7f13328351b0 classname=virAccessManagerClass
2014-01-31 22:16:10.698+0000: 17795: debug : virAccessManagerNewDriver:105 :
Initialized with stack
2014-01-31 22:16:10.698+0000: 17795: debug : virObjectNew:199 : OBJECT_NEW:
obj=0x7f1332836380 classname=virAccessManagerClass
2014-01-31 22:16:10.698+0000: 17795: debug : virAccessManagerNewDriver:105 :
Initialized with none
2014-01-31 22:16:10.698+0000: 17795: debug : virObjectRef:293 : OBJECT_REF:
obj=0x7f13328351b0
2014-01-31 22:16:10.698+0000: 17795: debug : virObjectUnref:256 : OBJECT_UNREF:
obj=0x7f13328351b0
2014-01-31 22:16:10.698+0000: 17795: debug : main:1299 : Decided on pid file
path '/var/run/libvirtd.pid'
2014-01-31 22:16:10.698+0000: 17795: debug : main:1309 : Decided on socket
paths '/var/run/libvirt/libvirt-sock' and '/var/run/libvirt/libvirt-sock-ro'
2014-01-31 22:16:10.698+0000: 17795: debug : main:1345 : Ensuring run dir
'/var/run/libvirt' exists
2014-01-31 22:16:10.698+0000: 17795: debug : virFileMakePathHelper:2279 :
path=/var/run/libvirt mode=0777
2014-01-31 22:16:10.698+0000: 17795: debug : virNetlinkStartup:136 : Running
global netlink initialization
2014-01-31 22:16:10.698+0000: 17795: debug : virObjectNew:199 : OBJECT_NEW:
obj=0x7f1332836770 classname=virNetServer
2014-01-31 22:16:10.699+0000: 17795: debug : virEventRegisterDefaultImpl:259 :
registering default event implementation
2014-01-31 22:16:10.699+0000: 17795: debug : virEventPollAddHandle:111 : Used 0
handle slots, adding at least 10 more
2014-01-31 22:16:10.699+0000: 17795: debug : virEventPollInterruptLocked:713 :
Skip interrupt, 0 0
2014-01-31 22:16:10.699+0000: 17795: debug : virEventPollAddHandle:136 :
EVENT_POLL_ADD_HANDLE: watch=1 fd=6 events=1 cb=0x7f1331786080 opaque=(nil)
ff=(nil)
2014-01-31 22:16:10.699+0000: 17795: debug : virEventRegisterImpl:229 :
addHandle=0x7f1331786e70 updateHandle=0x7f1331786cf0
removeHandle=0x7f1331786560 addTimeout=0x7f13317866f0
updateTimeout=0x7f1331786920 removeTimeout=0x7f1331786af0
2014-01-31 22:16:10.699+0000: 17795: debug : main:1385 : Dropping privileges
(if required)
2014-01-31 22:16:10.699+0000: 17795: debug : virDriverModuleInitialize:54 :
Module dir /usr/lib/libvirt/connection-driver
2014-01-31 22:16:10.699+0000: 17795: debug : virDriverLoadModule:67 : Module
load network
2014-01-31 22:16:10.699+0000: 17795: debug : virRegisterNetworkDriver:554 :
registering Network as network driver 2
2014-01-31 22:16:10.699+0000: 17795: debug : virDriverLoadModule:67 : Module
load storage
2014-01-31 22:16:10.701+0000: 17795: debug : virRegisterStorageDriver:610 :
registering storage as storage driver 2
2014-01-31 22:16:10.701+0000: 17795: debug : virDriverLoadModule:67 : Module
load nodedev
2014-01-31 22:16:10.702+0000: 17795: debug : udevNodeRegister:1823 :
Registering udev node device backend
2014-01-31 22:16:10.702+0000: 17795: debug : virRegisterNodeDeviceDriver:638 :
registering udevNodeDeviceDriver as device driver 2
2014-01-31 22:16:10.702+0000: 17795: debug : virDriverLoadModule:67 : Module
load secret
2014-01-31 22:16:10.703+0000: 17795: debug : virRegisterSecretDriver:666 :
registering secret as secret driver 2
2014-01-31 22:16:10.703+0000: 17795: debug : virDriverLoadModule:67 : Module
load nwfilter
2014-01-31 22:16:10.704+0000: 17795: debug : virRegisterNWFilterDriver:694 :
registering nwfilter as network filter driver 2
2014-01-31 22:16:10.704+0000: 17795: debug : virDriverLoadModule:67 : Module
load interface


     ====== end of log =====

Aborted

(gdb) run -vvvv
Starting program: /usr/sbin/libvirtd -vvvv
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
[New Thread 0x7ffff35bb700 (LWP 21795)]
[New Thread 0x7ffff2dba700 (LWP 21796)]
[New Thread 0x7ffff25b9700 (LWP 21797)]
[New Thread 0x7ffff1db8700 (LWP 21798)]
[New Thread 0x7ffff15b7700 (LWP 21799)]
[New Thread 0x7ffff0db6700 (LWP 21800)]
[New Thread 0x7ffff05b5700 (LWP 21801)]
[New Thread 0x7fffefdb4700 (LWP 21802)]
[New Thread 0x7fffef5b3700 (LWP 21803)]
[New Thread 0x7fffeedb2700 (LWP 21804)]


OK lib/route/tc.c:978 : ops->to_type = 2, RTNL_TC_TYPE_MAX = 2
OK lib/route/tc.c:978 : ops->to_type = 2, RTNL_TC_TYPE_MAX = 2
OK lib/route/tc.c:978 : ops->to_type = 2, RTNL_TC_TYPE_MAX = 2
OK lib/route/tc.c:978 : ops->to_type = 2, RTNL_TC_TYPE_MAX = 2
lib/route/tc.c:978 : ops->to_type = -325134944, RTNL_TC_TYPE_MAX = 2

libvirtd: /usr/src/tmp/libnl3-3.2.21/./lib/route/tc.c:980: rtnl_tc_register:
Assertion `0' failed.

Program received signal SIGABRT, Aborted.
0x00007ffff486d475 in raise () from /lib/x86_64-linux-gnu/libc.so.6

(gdb) bt
#0  0x00007ffff486d475 in *__GI_raise (sig=<optimized out>) at
../nptl/sysdeps/unix/sysv/linux/raise.c:64
#1  0x00007ffff48706f0 in *__GI_abort () at abort.c:92
#2  0x00007ffff4866621 in *__GI___assert_fail (assertion=0x7fffec7d91bc "0",
file=<optimized out>, line=980, function=0x7fffec7d8a80 "rtnl_tc_register") at
assert.c:81
#3  0x00007fffec7c4554 in rtnl_tc_register () from /usr/lib/x86_64-linux-gnu
/libnl-route-3.so.200
#4  0x00007ffff7deaf80 in ?? () from /lib64/ld-linux-x86-64.so.2
#5  0x00007ffff7deb077 in ?? () from /lib64/ld-linux-x86-64.so.2
#6  0x00007ffff7def363 in ?? () from /lib64/ld-linux-x86-64.so.2
#7  0x00007ffff7deabd6 in ?? () from /lib64/ld-linux-x86-64.so.2
#8  0x00007ffff7deeb4a in ?? () from /lib64/ld-linux-x86-64.so.2
#9  0x00007ffff4bc5f66 in dlopen_doit (a=<optimized out>) at dlopen.c:67
#10 0x00007ffff7deabd6 in ?? () from /lib64/ld-linux-x86-64.so.2
#11 0x00007ffff4bc62ec in _dlerror_run (operate=0x7ffff4bc5f00 <dlopen_doit>,
args=0x7fffffffdec0) at dlerror.c:164
#12 0x00007ffff4bc5ee1 in __dlopen (file=<optimized out>, mode=<optimized out>,
mode at entry=258) at dlopen.c:88
#13 0x00007ffff75eda1e in virDriverLoadModule (name=name at entry=0x55555559e4b2
"interface") at ../../../src/driver.c:77
#14 0x0000555555568a13 in daemonInitialize () at ../../../daemon/libvirtd.c:388
#15 main (argc=<optimized out>, argv=<optimized out>) at
../../../daemon/libvirtd.c:1391


#13 0x00007ffff75eda1e in virDriverLoadModule (name=name at entry=0x55555559e4b2
"interface") at ../../../src/driver.c:77
        modfile = 0x5555557e6ba0 "/usr/lib/libvirt/connection-
driver/libvirt_driver_interface.so"
        regfunc = 0x0
        handle = 0x0
        regsym = <optimized out>
        __func__ = "virDriverLoadModule"




The patch for libnl3, it split the assert and add some debug printf

/usr/src/tmp/libnl3-3.2.21/./lib/route/tc.c:980

===============================================================================
/**
 * Register a traffic control module
 * @arg ops             traffic control module operations
 */
int rtnl_tc_register(struct rtnl_tc_ops *ops)
{
        static int init = 0;

        /*
         * Initialiation hack, make sure list is initialized when
         * the first tc module registers. Putting this in a
         * separate __init would required correct ordering of init
         * functions
         */
        if (!init) {
                int i;

                for (i = 0; i < __RTNL_TC_TYPE_MAX; i++)
                        nl_init_list_head(&tc_ops_list[i]);

                init = 1;
        }

        // if (!ops->to_kind || ops->to_type > RTNL_TC_TYPE_MAX) {
        if (!ops->to_kind ) {
                printf("\n\nlib/route/tc.c:973 : !ops->to_kind = %x \n\n");
                BUG();
        }

        if (ops->to_type > RTNL_TC_TYPE_MAX ) {
                printf("\n\nlib/route/tc.c:978 : ops->to_type = %d,
RTNL_TC_TYPE_MAX = %d\n\n", ops->to_type, RTNL_TC_TYPE_MAX);
                BUG();
        } else {
                printf("\n\nOK lib/route/tc.c:978 : ops->to_type = %d,
RTNL_TC_TYPE_MAX = %d\n\n", ops->to_type, RTNL_TC_TYPE_MAX);
        }

        if (rtnl_tc_lookup_ops(ops->to_type, ops->to_kind))
                return -NLE_EXIST;

        nl_list_add_tail(&ops->to_list, &tc_ops_list[ops->to_type]);

        return 0;
}
===============================================================================


Regards.






-- System Information:
Debian Release: 7.3
  APT prefers stable-updates
  APT policy: (500, 'stable-updates'), (500, 'stable')
Architecture: amd64 (x86_64)
Foreign Architectures: i386

Kernel: Linux 3.10.28.iota (SMP w/8 CPU cores)
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash

Versions of packages libvirt-bin depends on:
ii  adduser              3.113+nmu3
ii  gettext-base         0.18.1.1-9
ii  init-system-helpers  1.11~bpo70.1
ii  libapparmor1         2.7.103-4
ii  libaudit0            1:1.7.18-1.1
ii  libavahi-client3     0.6.31-2
ii  libavahi-common3     0.6.31-2
ii  libblkid1            2.20.1-5.3
ii  libc6                2.13-38
ii  libcap-ng0           0.6.6-2
ii  libdbus-1-3          1.6.8-1+deb7u1
ii  libdevmapper1.02.1   2:1.02.74-8
ii  libfuse2             2.9.0-2+deb7u1
ii  libgcrypt11          1.5.0-5+deb7u1
ii  libgnutls26          2.12.20-7
ii  libnetcf1            1:0.2.3-3
ii  libnl1               1.1-7
ii  libnuma1             2.0.8~rc4-1
ii  libparted0debian1    2.3-12
ii  libpcap0.8           1.3.0-1
ii  libpciaccess0        0.13.1-2
ii  libreadline6         6.2+dfsg-0.1
ii  libsasl2-2           2.1.25.dfsg1-6+deb7u1
ii  libselinux1          2.1.9-5
ii  libssh2-1            1.4.2-1.1
ii  libudev0             175-7.2
ii  libvirt0             1.2.1-1~bpo70+1
ii  libxenstore3.0       4.3.0-3
ii  libxml2              2.8.0+dfsg1-7+nmu2
ii  libyajl2             2.0.4-2
ii  logrotate            3.8.1-4

Versions of packages libvirt-bin recommends:
ii  bridge-utils    1.5-6
ii  dmidecode       2.11-9
ii  dnsmasq-base    2.62-3+deb7u1
ii  ebtables        2.0.10.4-1
ii  iproute         20120521-3+b3
ii  iptables        1.4.14-3.1
ii  libxml2-utils   2.8.0+dfsg1-7+nmu2
ii  netcat-openbsd  1.105-7
ii  parted          2.3-12
pn  pm-utils        <none>
ii  qemu            1.1.2+dfsg-6a
ii  qemu-kvm        1.1.2+dfsg-6

Versions of packages libvirt-bin suggests:
pn  apparmor     <none>
pn  auditd       <none>
ii  policykit-1  0.105-4
ii  radvd        1:1.8.5-1
pn  systemd      <none>
ii  systemtap    1.7-1+deb7u1

-- Configuration Files:
/etc/default/libvirt-bin changed:
start_libvirtd="yes"
libvirtd_opts=" -v "

/etc/default/libvirt-guests changed:
ON_BOOT=start

/etc/libvirt/qemu.conf [Errno 13] Permission denied: u'/etc/libvirt/qemu.conf'

-- no debconf information



More information about the Pkg-libvirt-maintainers mailing list