Fix urcu-bp: don't move registry
authorMathieu Desnoyers <mathieu.desnoyers@efficios.com>
Tue, 1 Oct 2013 14:51:10 +0000 (10:51 -0400)
committerMathieu Desnoyers <mathieu.desnoyers@efficios.com>
Wed, 2 Oct 2013 03:15:14 +0000 (23:15 -0400)
commit89451e1b67738953bb2a10fd1fba7b12e73c0440
tree17a4c5a75dd814a5a1916dc8da594131052d31a8
parent72b40470e081e1fde9511d4a13b38c585807f8b4
Fix urcu-bp: don't move registry

It is not correct to move the registry address range, since there are
external references from reader threads. This will trigger on workloads
with many threads.

Typically, on Linux, mremap can expand the existing range, which is OK.
However, if there is not enough space around the existing range, it may
try to map it at a different address, which is incorrect.

It is more likely that this bug will be observed on operating systems
where urcu uses the mmap/munmap fallback instead of mremap.

Moreover, prior to commit:

  "Fix: urcu-bp: Bulletproof RCU arena resize bug"

this issue was hidden by the fact that each thread ended up with their
own memory mapping (leaked), on Linux at least.

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
urcu-bp.c
This page took 0.025669 seconds and 4 git commands to generate.