[arch-dev-public] [signoff] sqlite3 - 3.7.2-1

Andreas Radke a.radke at arcor.de
Tue Aug 24 11:58:29 EDT 2010


Just a quick bugfix upstream release. Please signoff.

-Andy

http://sqlite.org/releaselog/3_7_2.html

SQLite version 3.7.2 fixes a single bug that was discovered just hours
after the release of 3.7.1.  The bug can result in corruption of the
database free-list after an incremental vacuum.  The bug had nothing
whatsoever to do with SQLite version 3.7.1 or any other recent
release.  The problem had been in the code for over a year, since
version 3.6.16.  The discovery of the problem so soon after the release
of version 3.7.1 was purely coincidental.

The bug fixed in 3.7.2 can result in database corruption.  However, the
corruption caused by this bug can almost always be fixed simply by
running VACUUM on the database.  And the corruption will only occur in
an incrementally vacuumed database which at some point in time contains
hundreds of unused pages which are slowly released back to the operating
system by multiple calls to the incremental_vacuum PRAGMA.  Even then,
one must be particularly unlucky to hit the right combination of freed
pages in order to trigger the bug.  Hence the problem is quite obscure
and was not noticed for over a year.

Hundreds of lines of code where changed for version 3.7.2, but most of
those changes were to test procedures.  As is the custom with SQLite,
not only was the specific bug fixed, but new tests where put in place
to detect and prevent similar kinds of bugs elsewhere in the code.  We
believe that one should not just fix the bug, but also fix the process
that generated the bug. The only 4 working lines of code were changed
for version 3.7.2:

     http://www.sqlite.org/src/fdiff?v1=2dff4076d3c994dc&v2=5047fb303cdf6806


More information about the arch-dev-public mailing list