From: Eric Wong Date: Tue, 24 Jun 2014 01:20:30 +0000 (+0000) Subject: rculfhash: fall back to single-threaded resize on calloc failure X-Git-Tag: v0.7.13~3 X-Git-Url: https://git.lttng.org./?a=commitdiff_plain;h=3755ebfd3f0200068efa42fa0ce3162c1ff9c649;p=urcu.git rculfhash: fall back to single-threaded resize on calloc failure Having a calloc fail on my server should not be fatal. Signed-off-by: Eric Wong Signed-off-by: Mathieu Desnoyers --- diff --git a/rculfhash.c b/rculfhash.c index a997117..c808656 100644 --- a/rculfhash.c +++ b/rculfhash.c @@ -1188,7 +1188,10 @@ void partition_resize_helper(struct cds_lfht *ht, unsigned long i, } partition_len = len >> cds_lfht_get_count_order_ulong(nr_threads); work = calloc(nr_threads, sizeof(*work)); - assert(work); + if (!work) { + dbg_printf("error allocating for resize, single-threading\n"); + goto fallback; + } for (thread = 0; thread < nr_threads; thread++) { work[thread].ht = ht; work[thread].i = i; @@ -1204,6 +1207,11 @@ void partition_resize_helper(struct cds_lfht *ht, unsigned long i, assert(!ret); } free(work); + return; +fallback: + ht->flavor->thread_online(); + fct(ht, i, 0, len); + ht->flavor->thread_offline(); } /*