From: Jeffrey J. K. <bac...@ko...> - 2011-01-24 01:08:07
|
Jeffrey J. Kosowsky wrote at about 19:19:54 -0500 on Sunday, January 23, 2011: > I was testing some of my md5sum routines and I kept getting weird > results on ARM-based computers. > > Specifically, the pool file md5sum numbers were different depending on > whether I computed them under Fedora 12 on an x86 machine vs under > Debian Lenny on an ARM-based computer. > > This obviously creates issues if you want to move your backup drive > between different CPUs. > > I narrowed it down to Digest::MD5, by doing the following 1-liner: > perl -e 'use Digest::MD5 qw(md5_hex);$file=testfile; $size=(stat($file))[7];$body=`cat $file`; print md5_hex($size,$body) . "\n";' > > This should be the same as: > perl -e '$file=testfile; $size=(stat($file))[7];$body=`cat $file`; print $size, $body;' | md5sum > > For maybe 1% of files in my pool the ARM machine gave the wrong answer > when using Digest::MD5 > > So, something must be wacko in the perl implementation of Digest::MD5 > on ARM machines! > Well, what do you know, Perl 5.10.0 (at least in Debian but I think upstream too) are broken on ARM processors. Something about 32-bit alignment. You need to upgrade to 5.10.1 -- and now I wasted a day on this... And now I need to write code to fix my pool - YUCK! |