ICC vary from CPU-type
bmwiedemann opened this issue · comments
Bernhard M. Wiedemann commented
While working on reproducible builds for openSUSE, I found that our colord
1.4.6 build output varied depending on the CPU model.
I collected sets from these runs:
https://rb.zq1.de/other/colord-cpu-dependent-output.tar.gz
The 2
one was built on an avx-enabled CPU and the 1
one on a kvm64
model without fancy new instructions.
Such diffs can happen when memcpy or strcpy is used on overlapping memory regions. In that case, one of these result files would contain data corruptions.
Bernhard M. Wiedemann commented
Reproducer
# on old CPU:
cd /home/abuild/rpmbuild/BUILD/colord-1.4.6/x86_64-suse-linux && client/cd-create-profile --output=data/profiles/FOGRA28L_webcoated.icc data/profiles/FOGRA28L_webcoated.iccprofile.xml && md5sum data/profiles/FOGRA28L_webcoated.icc data/profiles/FOGRA28L_webcoated.iccprofile.xml
307d9fb02f1c53d31fb0edc790536b89 data/profiles/FOGRA28L_webcoated.icc
4afa623cc7b59915edec432c87b732b0 data/profiles/FOGRA28L_webcoated.iccprofile.xml
# on new CPU
cd /home/abuild/rpmbuild/BUILD/colord-1.4.6/x86_64-suse-linux && client/cd-create-profile --output=data/profiles/FOGRA28L_webcoated.icc data/profiles/FOGRA28L_webcoated.iccprofile.xml && md5sum data/profiles/FOGRA28L_webcoated.icc data/profiles/FOGRA28L_webcoated.iccprofile.xml
0a20906f8db699cc17b166729570a26c data/profiles/FOGRA28L_webcoated.icc
4afa623cc7b59915edec432c87b732b0 data/profiles/FOGRA28L_webcoated.iccprofile.xml
both of these are stable, so there is no other randomness involved.