[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