Generated headers on Windows aren't reproducible
On of the two reproducibility problems of 13.0a1 was that the Windows generated headers weren't equal (but only on x86_64, and only for Tor Browser, not for Mullvad Browser).
This was the diff:
diff '--color=auto' -rupN debug-richard/include/mozilla/WindowsDllBlocklistLauncherDefs.h debug-pierov/include/mozilla/WindowsDllBlocklistLauncherDefs.h
--- debug-richard/include/mozilla/WindowsDllBlocklistLauncherDefs.h 2023-08-08 07:11:00.000000000 +0200
+++ debug-pierov/include/mozilla/WindowsDllBlocklistLauncherDefs.h 2023-08-08 07:11:00.000000000 +0200
@@ -13,7 +13,7 @@ DLL_BLOCKLIST_DEFINITIONS_BEGIN
DLL_BLOCKLIST_ENTRY("activedetect32.dll", DllBlockInfo::UNVERSIONED)
DLL_BLOCKLIST_ENTRY("activedetect64.dll", DllBlockInfo::UNVERSIONED)
DLL_BLOCKLIST_ENTRY("asuswsshellext64.dll", MAKE_VERSION(1, 1, 0, 27), mozilla::DllBlockInfoFlags::BROWSER_PROCESS_ONLY)
- DLL_BLOCKLIST_ENTRY("aswhook.dll", DllBlockInfo::ALL_VERSIONS, mozilla::DllBlockInfoFlags::UTILITY_PROCESSES_ONLY | mozilla::DllBlockInfoFlags::BLOCK_WIN7_AND_OLDER)
+ DLL_BLOCKLIST_ENTRY("aswhook.dll", DllBlockInfo::ALL_VERSIONS, mozilla::DllBlockInfoFlags::BLOCK_WIN7_AND_OLDER | mozilla::DllBlockInfoFlags::UTILITY_PROCESSES_ONLY)
DLL_BLOCKLIST_ENTRY("aswjsflt.dll", MAKE_VERSION(18, 0, 1473, 0), mozilla::DllBlockInfoFlags::BROWSER_PROCESS_ONLY)
DLL_BLOCKLIST_ENTRY("atkdx11disp.dll", DllBlockInfo::ALL_VERSIONS)
DLL_BLOCKLIST_ENTRY("audiodevprops2.dll", MAKE_VERSION(2, 6, 14, 0), mozilla::DllBlockInfoFlags::BROWSER_PROCESS_ONLY)
diff '--color=auto' -rupN debug-richard/include/mozilla/WindowsDllBlocklistLegacyDefs.h debug-pierov/include/mozilla/WindowsDllBlocklistLegacyDefs.h
--- debug-richard/include/mozilla/WindowsDllBlocklistLegacyDefs.h 2023-08-08 07:11:00.000000000 +0200
+++ debug-pierov/include/mozilla/WindowsDllBlocklistLegacyDefs.h 2023-08-08 07:11:00.000000000 +0200
@@ -13,7 +13,7 @@ DLL_BLOCKLIST_DEFINITIONS_BEGIN
DLL_BLOCKLIST_ENTRY("activedetect32.dll", DllBlockInfo::UNVERSIONED)
DLL_BLOCKLIST_ENTRY("activedetect64.dll", DllBlockInfo::UNVERSIONED)
DLL_BLOCKLIST_ENTRY("asuswsshellext64.dll", MAKE_VERSION(1, 1, 0, 27), mozilla::DllBlockInfoFlags::BROWSER_PROCESS_ONLY)
- DLL_BLOCKLIST_ENTRY("aswhook.dll", DllBlockInfo::ALL_VERSIONS, mozilla::DllBlockInfoFlags::UTILITY_PROCESSES_ONLY | mozilla::DllBlockInfoFlags::BLOCK_WIN7_AND_OLDER)
+ DLL_BLOCKLIST_ENTRY("aswhook.dll", DllBlockInfo::ALL_VERSIONS, mozilla::DllBlockInfoFlags::BLOCK_WIN7_AND_OLDER | mozilla::DllBlockInfoFlags::UTILITY_PROCESSES_ONLY)
DLL_BLOCKLIST_ENTRY("aswjsflt.dll", MAKE_VERSION(18, 0, 1473, 0), mozilla::DllBlockInfoFlags::BROWSER_PROCESS_ONLY)
DLL_BLOCKLIST_ENTRY("atkdx11disp.dll", DllBlockInfo::ALL_VERSIONS)
DLL_BLOCKLIST_ENTRY("audiodevprops2.dll", MAKE_VERSION(2, 6, 14, 0), mozilla::DllBlockInfoFlags::BROWSER_PROCESS_ONLY)
It isn't a very big deal: the include are human readable. PDBs, that are binary, were exactly the same.
I think the main problem is that it forces us to check the contents of the hashes files, but it's not so bad that we'll need to block the release.
In case we can even decide to omit the debug zip file either from the release or from the hashfile.
However, it'd be nice of we can understand why the files aren't exactly the same, and fix this problem.
Notice that I decided to include header files because I remember that when debugging with Visual Studio I was prompted for them.