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:08:30 +0000 (23:08 -0400)
commit95b94246b745a49ec7e5a33661ef638b0dd2950b
treed1261b3c3e2efc057c77b0beb2d72525fb1b0934
parent5c02e37d09b7b89f68429751344d2af00c89f4fd
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.027039 seconds and 4 git commands to generate.