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:

*** 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
...

This problem first appeared in 3.6.16.


drh added on 2010-08-23 17:08:42:
Fixed by check-in [255f1eefa373153942c67b18b22177933657911d]