X-Git-Url: https://git.liburcu.org/?p=urcu.git;a=blobdiff_plain;f=urcu.c;h=69ebcaa9cb0fbfa07a264ab94fa5261513c72424;hp=1d5c06f53c565af243fb45c5e47c1ebb609dff97;hb=9ba261bd496f2dfac38a16e341259553335dd165;hpb=553b7eb9da3a223368abdf3f6a5ead35acf8a20b diff --git a/urcu.c b/urcu.c index 1d5c06f..69ebcaa 100644 --- a/urcu.c +++ b/urcu.c @@ -66,7 +66,7 @@ * RCU_MEMBARRIER is only possibly available on Linux. */ #if defined(RCU_MEMBARRIER) && defined(__linux__) -#include +#include #endif /* If the headers do not support SYS_membarrier, fall back on RCU_MB */ @@ -513,14 +513,14 @@ void rcu_init(void) void rcu_exit(void) { - struct sigaction act; - int ret; - - ret = sigaction(SIGRCU, NULL, &act); - if (ret) - urcu_die(errno); - assert(act.sa_sigaction == sigrcu_handler); - assert(cds_list_empty(®istry)); + /* + * Don't unregister the SIGRCU signal handler anymore, because + * call_rcu threads could still be using it shortly before the + * application exits. + * Assertion disabled because call_rcu threads are now rcu + * readers, and left running at exit. + * assert(cds_list_empty(®istry)); + */ } #endif /* #ifdef RCU_SIGNAL */