Last modified: 2012-02-16 23:32:19 UTC
Some revisions stored with DiffHistoryBlob in Wikimedia external storage cannot be decoded if xdiff_string_bpatch() is not available and thus the PHP port is used. Revision::getText() returns false. The debug log shows "incorrect base checksum". If the checksum check is disabled, the revision appears to be decoded successfully. Perhaps an incorrect implementation of the adler32 checksum is at fault.
LibXDiff has an incorrect implementation of Adler-32. The byte order is wrong, and the state is initialised to 0 instead of 1. If a string can be found for which the Adler-32 hash is zero, then that could be used to initialise mhash() or hash() to simulate LibXDiff's Adler-32.
Fixed in r111701.