[ovs-dev] ovs-vswitchd 2.8.0 failed to start because dpdk ctors called multiple times
Yousong Zhou
yszhou4tech at gmail.com
Fri Sep 22 12:16:32 UTC 2017
Hi, I just compiled ovs 2.8.0 with dpdk 17.05.1 and the result
ovs-vswitchd failed at the dynamic linking stage
➜ ~ ovs-vswitchd --version
EAL: VFIO_RESOURCE_LIST tailq is already registered
PANIC in tailqinitfn_rte_vfio_tailq():
Cannot initialize tailq: VFIO_RESOURCE_LIST
6: [ovs-vswitchd() [0x4284d1]]
5: [/lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0x90) [0x7fc8ce3d3e40]]
4: [ovs-vswitchd() [0x6ecbfd]]
3: [ovs-vswitchd() [0x425e1c]]
2: [ovs-vswitchd(__rte_panic+0xba) [0x420008]]
1: [ovs-vswitchd(rte_dump_stack+0x28) [0x44e1d8]]
[1] 5745 abort ovs-vswitchd --version
It seems that both ovs-vswitchd and libopenvswitch.so link to libdpdk
and pull in __attribute__((constructor)) func there
➜ ~/.usr/lib nm libopenvswitch-2.8.so.0.0.0 | grep initfn
0000000000083f00 t businitfn_PCI_BUS_NAME
0000000000083f60 t tailqinitfn_rte_mempool_tailq
0000000000083fd0 t tailqinitfn_rte_ring_tailq
0000000000083f20 t tailqinitfn_rte_uio_tailq
0000000000083e20 t tailqinitfn_rte_vfio_tailq
0000000000083fa0 t vdrvinitfn_pmd_ring_drv
➜ ~/.usr/lib nm ../sbin/ovs-vswitchd | grep tailqinitfn_rte_vfio_tailq
0000000000425de0 t tailqinitfn_rte_vfio_tailq
In case it matters, both dpdk and ovs were built with gcc 4.7.2 on debian wheezy
➜ ~/.usr/lib gcc --version
gcc (Debian 4.7.2-5) 4.7.2
Copyright (C) 2012 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Regards,
yousong
More information about the dev
mailing list