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:14:22 +0000 (23:14 -0400)
commita0d529ecc9949d776800f5a006974d6bf410910e
treed1261b3c3e2efc057c77b0beb2d72525fb1b0934
parent98cb480ab03a919370504eb71642ec3e61ae5d7c
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.026285 seconds and 4 git commands to generate.