From: Mathieu Desnoyers Date: Sun, 8 Dec 2013 15:31:04 +0000 (-0500) Subject: Fix: urcu-bp interaction with threads vs constructors/destructors X-Git-Tag: v0.9.0~116 X-Git-Url: https://git.liburcu.org/?p=urcu.git;a=commitdiff_plain;h=76d6a95136c6879dfc262b08aabf3c0a81126ffe;hp=76d6a95136c6879dfc262b08aabf3c0a81126ffe Fix: urcu-bp interaction with threads vs constructors/destructors Add a reference counter for threads using urcu-bp, thus ensuring that even if the urcu destructor is executed before each thread using RCU read-side critical sections exit, those threads will not see a corrupted thread list. Also, don't use URCU_TLS() within urcu_bp_thread_exit_notifier(). It appears that this is racy (although this was probably due to the issue fixed by reference counting). Anyway, play safe, and pass the rcu_key received as parameter instead. Those issues only reproduce when threads are still active when the urcu-bp destructor is called. Signed-off-by: Mathieu Desnoyers ---