Running an incremental vacuum can result in free-list corruption in an obscure case. The case is hit if the incremental vacuum code attempts to extract the second of two empty free-list trunk pages (trunk pages with no references to free-list leaves), and the page extracted is not the last trunk page in the free-list.
Running integrity-check after this occurs produces output similar to:
<verbatim>
*** in database main ***
Main freelist: invalid page number 258
Page 6 is never used
Page 7 is never used
Page 8 is never used
Page 9 is never used
Page 10 is never used
Page 11 is never used
Page 12 is never used
Page 13 is never used
...
</verbatim>
This problem first appeared in 3.6.16.
<hr><i>drh added on 2010-08-23 17:08:42:</i><br>
Fixed by check-in [255f1eefa373153942c67b18b22177933657911d]
|