Closed acfoltzer closed 5 years ago
Thanks for reporting this! It looks like a 32-bit rollover issue in the benchmarks. I ran the tests many times with a 32-bit build, but didn't run the benchmarks much in that environment, and missed it.
The root cause is that the get_nonexistent
benchmark is using numeric keys < limit as in the set, and keys > limit as not present (to benchmark lookup failure), but it's also multiplying the key by a 4-digit prime to cause strided access, and with 32 bits and a sufficiently large benchmark limit, that can roll over and hit the keys < limit.
Closed by v0.1.1 release.
This didn't get automatically closed because I'd set develop
to be the default branch (for pull requests), and apparently that also impacts "Fixes #x" messages closing issues?
Tested by compiling with
-m32
on x86_64 Linux, and with the WASI toolchain for WebAssembly. The benchmarks fail inget_nonexistent
with an assertion failure:Interestingly, at least when compiled with
-m32
, thetheft
-based tests all pass, so this must be hitting something the test suite doesn't cover.