Closed llersch closed 9 years ago
This happens because eviction is completely broken! It needs a serious redesign.
This particular bug is dues to the "imprecise" hash table lookups and page accesses performed by the eviction algorithm. This means access without any concurrency control. In this case, it can happen that we are trying to traverse a page by following a pointer in the parent, but the page may be split meanwhile, so that we still have the old (now non-existing) slot.
As a workaround, I fixed it by returning a NULL pointer when the slot is invalid. The consequence is that other parts of the code have to check the returning pointer.
Fixed (actually worked around) on c668bdf and 3282c96
When running:
The following happens:
Buffer size is the probable cause, trying to run it with --bufsize 200