Fix: libc internal mutex races with run_as
[lttng-tools.git] / src / common / hashtable / rculfhash.c
index 0ddd21a3b6335ccf3fb2ddb5ea5f1a9dbba1564c..9baf4079877393a1289fdcca8a518286e530cddb 100644 (file)
 #include "rculfhash-internal.h"
 #include "urcu-flavor.h"
 
-/*
- * We need to lock pthread exit, which deadlocks __nptl_setxid in the runas
- * clone.  This work-around will be allowed to be removed when runas.c gets
- * changed to do an exec() before issuing seteuid/setegid. See
- * http://sourceware.org/bugzilla/show_bug.cgi?id=10184 for details.
- */
-pthread_mutex_t lttng_libc_state_lock = PTHREAD_MUTEX_INITIALIZER;
+#include <common/common.h>
 
 /*
  * Split-counters lazily update the global counter each 1024
@@ -627,7 +621,7 @@ void free_split_items_count(struct cds_lfht *ht)
        poison_free(ht->split_count);
 }
 
-#if defined(HAVE_SCHED_GETCPU)
+#if defined(HAVE_SCHED_GETCPU) && !defined(VALGRIND)
 static
 int ht_get_split_count_index(unsigned long hash)
 {
@@ -1781,7 +1775,7 @@ int cds_lfht_destroy(struct cds_lfht *ht, pthread_attr_t **attr)
        }
 #endif
        while (uatomic_read(&ht->in_progress_resize))
-               poll(NULL, 0, 100);     /* wait for 100ms */
+               (void) poll(NULL, 0, 100); /* wait for 100ms */
        ret = cds_lfht_delete_bucket(ht);
        if (ret)
                return ret;
@@ -1981,7 +1975,7 @@ void __cds_lfht_resize_lazy_launch(struct cds_lfht *ht)
                        uatomic_dec(&ht->in_progress_resize);
                        return;
                }
-               work = malloc(sizeof(*work));
+               work = zmalloc(sizeof(*work));
                if (work == NULL) {
                        dbg_printf("error allocating resize work, bailing out\n");
                        uatomic_dec(&ht->in_progress_resize);
This page took 0.027121 seconds and 5 git commands to generate.