I've accidentally ran Subversion test suite under elevated local
administrator account on Windows and got failures in named-atomics
svn_tests: E200006: assertion 'value == 42' failed at
FAIL: named_atomic-test.exe 1: basic r/w access to a single atomic
svn_tests: E200006: assertion 'value == 42 * HUGE_VALUE' failed at
FAIL: named_atomic-test.exe 2: atomics must be 64 bits
svn_tests: E200006: assertion 'value1 == 46 * HUGE_VALUE' failed at
FAIL: named_atomic-test.exe 3: basic r/w access to multiple atomics
The investigation revealed the following:
1. The named_atomics tests are skipped unless executed under elevated
local administrator on Windows.
2. The named_atomics are never properly worked on Windows.
A little bit more detailed explanation:
Originally "named atomics" framework was using shared memory for syncronization.
Creating shared memory on Windows requires administrative permissions, so
svn_named_atomic__is_supported() had check if application has necessary
permissions to create shared memory.
In r1404112  "named atomics" framework was rewritten to use apr_mmap instead
of apr_shm_*, but code in svn_named_atomic__is_supported() was not updated to
reflect this change.
The bug itself introduced in r1327458  where call to InterlockedAdd64() was
replaced with call to InterlockedExchangeAdd64(). But functions have different
return values: InterlockedAdd64() returns result of operation, while
InterlockedExchangeAdd64() returns original value.
I see two ways how resolve these test failures:
1. Fix the code somehow.
2. Remove it since "named atomics" framework is only used for currently
disabled revprop caching.
Personally I don't see reason to spend resources fixing unused code, especially
that even code on 'revprop-caching-ng' branch removes it also. Any
Received on 2014-09-10 17:36:11 CEST