New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
BITSET index: salloc_index_to_ptr is broken in 1.5 and 1.6 #49
Comments
I promised to put some light on this bug.
salloc_index_to_ptr always returns the original pointer. |
Roman, why do tests pass in 1.5? What's wrong with tests that they don't verify this? 1.5 needs a test case to reproduce the problem. Then, for now, simply disable salloc_ptr_to_index in 1.5. In 1.6 we will solve this after adding msgpack. |
test/box/bitset.lua works with (num, num) tuples. Such kind of tuples do not need the offset table, because offsets can be precalculated and saved in the tuple format definition. BITSET need a (tuple <-> some_number_id) mapping where the right space is very dense. Possible ways to fix the bug:
|
I added a workaround for 1.5 to fix bitset. |
I think we need to abandon allocator-based pointer translation, and store a translation hash in the bitset itself. The id in the bitset would be simply the offset in the hash with linear collision resolution. |
I'm not sure about offset in mhash, but I totally agree with the idea. |
*) fixed bsize() method of bitset index
Unit tests fails because gdbserver appends its own output to stderr. Consider [1] for possible fix on gdbserver side. Alternativelly it can be worked around using --wrapper option, I guess. [1]: https://cygwin.com/ml/gdb-patches/2015-03/msg01051.html Related to #49.
salloc_index_to_ptr is broken because tuple pointer is shifted by tuple_alloc
1.5 and 1.6 will likely require different fixes
The text was updated successfully, but these errors were encountered: