[lttng-dev] Bulletproof RCU arena resize bug
Milosz Tanski
milosz at adfin.com
Mon Sep 30 11:16:37 EDT 2013
Hi,
While trying to use the BP flavor of RCU I ran into random crashes. I
tracked it down to issues with resizing of the BP RCU memory pool.
The problem is in the urcu-bp.c file in the resize_arena() function.
On successful allocation / remapping the len member of the
registry_arena struct is never set anywhere function. On the second
resize of the arena the code in resize_arena() still thinks the
previous size is equal to the original mapping size. I've fixed this
issue locally by just adding the following code at the bottom of
resize_arena().
I hope this helps,
- Milosz
diff --git a/urcu-bp.c b/urcu-bp.c
index a823659..d26dcc7 100644
--- a/urcu-bp.c
+++ b/urcu-bp.c
@@ -325,6 +329,7 @@ static void resize_arena(struct registry_arena
*arena, size_t len)
bzero(new_arena + arena->len, len - arena->len);
arena->p = new_arena;
+ arena->len = len;
}
/* Called with signals off and mutex locked */
More information about the lttng-dev
mailing list