I've recently found out that there's a bug some people are hitting when running DBCC CHECKDB on SQL Server 2005 – you get an error like:

Msg 831, Level 20, State 1, Line 1
Unable to deallocate a kept page.

This is a bug in the database snapshot code, and shows up sometimes when running DBCC CHECKDB because I changed DBCC CHECKDB to use a hidden, automatically-created database snapshot to get a transactionally consistent view of the database from SQL Server 2005 onwards.

If you're seeing this problem, you need to install SQL Server 2005 SP2 CU13, SQL Server 2005 SP3 CU4, or SQL Server 2008/2008 R2.

More details are in KB article 919142, which was only recently made public.