[Bug 3753] New: Sometimes wrong ADLER32 in revlog in same file gives "Incorrect data check" on hg verify

mercurial-bugs at selenic.com mercurial-bugs at selenic.com
Mon Jan 7 02:50:55 CST 2013


http://bz.selenic.com/show_bug.cgi?id=3753

          Priority: normal
            Bug ID: 3753
                CC: mercurial-devel at selenic.com
          Assignee: bugzilla at selenic.com
           Summary: Sometimes wrong ADLER32 in revlog in same file gives
                    "Incorrect data check" on hg verify
          Severity: bug
    Classification: Unclassified
                OS: Windows
          Reporter: bzclff78 at live.com
          Hardware: PC
            Status: UNCONFIRMED
           Version: 2.4.1
         Component: Mercurial
           Product: Mercurial

Created attachment 1702
  --> http://bz.selenic.com/attachment.cgi?id=1702&action=edit
Good revlog, bad revlog, source file

Hello Mercurial team,
I'm facing a very annoying issue, when working on my repository I would start
get exceptions about "Incorrect data check".

My environment is:
Windows 8 32-bit
Mercurial 2.4.1, installed using the website supplied 32-bit of TortoiseHg
2.6.1 (the MSI installer).

Note: I also have a locally installed copy of Python 2.7.2.5 (ActiveState
distribution) in C:\Python27 and C:\Python27 is prepended to my PATH
environment variable.

The errors are consistently in a small subset of files (that happen to be
packed minified javascript files), but it seems to happen at random on
manipulation of the repository.

I have CHKDSK /F the drive, done a full surface scan and checked my RAM and I
am quite sure it is not a hardware problem.

At one instant of this corruption, I examined the revlog (.i) file of both the
"correct" (passes hg verify) and "corrupt" ("incorrect data check") revlog.

The files are byte-for-byte identical except for the last 4 bytes. On further
digging in Hg source code, I see zlib.compress and think that this might be the
ADLER32 checksum.

hg debugindex on the good file gives a meaningful output, on the bad file gives
nothing:
   rev    offset  length   base linkrev nodeid       p1           p2
     0         0     852      0       3 fb2223388488 000000000000 000000000000

I saw a bug report on some zlib implementations that some types of files,
depending on the buffer size and the file contents may cause some integer in
the ADLER32 checksum calculator to overflow, could this be the problem ?

For reference I have attached the bad revlog, the good revlog and the source
file (the corruption is in the 3rd changeset).

The file itself has never been changed since first imported to the history, the
first revision is the file itself, the second revision is its path being
renamed. 

(ezpsadm/ajaxfilemanager/jscripts/ajaxtexteditor_c.js (renamed from
storeadmin/ajaxfilemanager/jscripts/ajaxtexteditor_c.js))

Unfortunately, I can't provide the whole repository since it is part of a
commercial project, but I'll try to co-operate as much as I can.

-- 
You are receiving this mail because:
You are on the CC list for the bug.


More information about the Mercurial-devel mailing list