OS: Windows 7 Pro x64, english
Comparing binary files with a size of 2 GB or larger was working fine with TC64 8.52a.
However, TC64 9.12 will crash when attempting to compare such files. (To be accurate, the crash happens for file sizes of 2GB-8 = 2147483640 Bytes and larger.)
Observing the drive active indicator LED and the growing program memory (aka working set) in the task manager, it looks like TC is actually loading and scanning the files.
After finishing the file scan (that is, TC's memory footprint not growing any further), TC fails to jump to the first difference. Instead, the "Compare by content" feature seems to enter some unproductive busy loop, causing a sustained CPU load of around 13% on my machine. TC itself remains usable, however the "Compare contents" window cannot be closed, and closing the TC main window will not exit the TC process due to the hanging "Compare contents" window.
Attempting to compare such files and letting TC idle with the hanging "Compare contents" window without any other user interaction will eventually lead to a crash of TC after a few minutes:
Code: Select all
Problem signature: Problem Event Name: APPCRASH Application Name: TOTALCMD64.EXE Application Version: 188.8.131.52 Application Timestamp: 00000000 Fault Module Name: TOTALCMD64.EXE Fault Module Version: 184.108.40.206 Fault Module Timestamp: 00000000 Exception Code: 80000001 Exception Offset: 0000000000029e81 OS Version: 6.1.7601.2.1.0.256.48 Locale ID: 2057 Additional Information 1: de35 Additional Information 2: de35b0e1f9a0fa23f716eeda67a9ae18 Additional Information 3: 7ca2 Additional Information 4: 7ca28b70ed2f7ef3c253510ae17aebe0
The particular content of the files does not seem to matter (i tested with a number files i filled with random byte values, and where each pair of files had exactly two different bytes in two subsequent file positions). TC64 8.52a had no problem at all comparing and finding the differing bytes in these test files. For my tests, i used a fresh INI file for both TC64 9.12 and TC64 8.52a.
With the characteristic file size in mind (2GB-1 = 2147483647 = 0x0x7FFFFFFF is the max value of a signed 32bit integer), it looks to me like some of the new code in the "Compare by content" feature incorrectly uses 32bit data types/pointers/arithmetic where it should use 64bit data types...