Details
Description
Core is crashing on this assertion:
void ValueSlot::setPointer(const Value *v) {
|
precondition(v != nullptr);
|
if (_usuallyFalse(v == pointer()))
|
return;
|
releaseValue();
|
_pointer = uint64_t(size_t(retain(v)));
|
>>> assert(isPointer());
|
}
|
Jianmin Zhao asserts that there has been no change in the code that could cause this, since 2020. Oddlly, the Android/Java tests have suddenly started failing.
Jim Borden figured out it's due to a change in Android 11: they've added some sort of pointer tagging that makes the high byte of a pointer nonzero.
In response I've changed the way ValueSlot tags non-pointers.
Fix is https://github.com/couchbaselabs/fleece/pull/104