eal: fix threads block on barrier
authorJianfeng Tan <jianfeng.tan@intel.com>
Fri, 27 Apr 2018 16:41:42 +0000 (16:41 +0000)
committerThomas Monjalon <thomas@monjalon.net>
Fri, 27 Apr 2018 19:47:43 +0000 (21:47 +0200)
commit3d09a6e26d8b1650c0c55b064c6f8033c65c3a06
tree2c9bbcc9984aa979873bfb2e40e1fd479d4cc1e2
parent06d5038a472f07385f58c82eba6aadb162a5b4f1
eal: fix threads block on barrier

Below commit introduced pthread barrier for synchronization.
But two IPC threads block on the barrier, and never wake up.

  (gdb) bt
  #0  futex_wait (private=0, expected=0, futex_word=0x7fffffffcff4)
      at ../sysdeps/unix/sysv/linux/futex-internal.h:61
  #1  futex_wait_simple (private=0, expected=0, futex_word=0x7fffffffcff4)
      at ../sysdeps/nptl/futex-internal.h:135
  #2  __pthread_barrier_wait (barrier=0x7fffffffcff0) at pthread_barrier_wait.c:184
  #3  rte_thread_init (arg=0x7fffffffcfe0)
      at ../dpdk/lib/librte_eal/common/eal_common_thread.c:160
  #4  start_thread (arg=0x7ffff6ecf700) at pthread_create.c:333
  #5  clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:109

Through analysis, we find the barrier defined on the stack could be the
root cause. This patch will change to use heap memory as the barrier.

Fixes: d651ee4919cd ("eal: set affinity for control threads")

Signed-off-by: Jianfeng Tan <jianfeng.tan@intel.com>
Acked-by: Shreyansh Jain <shreyansh.jain@nxp.com>
lib/librte_eal/common/eal_common_thread.c