SQLite

View Ticket
Login
Ticket Hash: 5e10420e8de26a086cd0f532643bedbfa94921e0
Title: Free-list corruption in incremental-vacuum mode
Status: Fixed Type: Code_Defect
Severity: Severe Priority: Immediate
Subsystem: Unknown Resolution: Fixed
Last Modified: 2010-08-23 17:08:42
Version Found In: 3.7.1
Description:

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]