Closed Bug 1854117 Opened 1 year ago Closed 1 year ago

The headers with the DLL blocklists are not generated deterministically

Categories

(Firefox :: General, enhancement)

Firefox 115
Desktop
Windows
enhancement

Tracking

()

RESOLVED FIXED
120 Branch
Tracking Status
firefox120 --- fixed

People

(Reporter: pierov, Assigned: pierov)

References

Details

Attachments

(1 file)

For Tor Browser we started distributing the dist/include directory with the debug symbols, and we noticed that the DLL blocklist headers (in the code introduced probably by Bug 1483687) are not generated deterministically.

For example, this is the difference between two otherwise reproducible builds:

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)

I believe the cause is that flags are stored in a Python set, which is not ordered.
I tried to sort it before outputting them, and it seems to work and keep the flags in alphabetical order.

Pushed by dtownsend@mozilla.com: https://hg.mozilla.org/integration/autoland/rev/899c6f2ac5f7 Sort the DLL blocklist flags. r=mossop,win-reviewers,gstoll
Status: NEW → RESOLVED
Closed: 1 year ago
Resolution: --- → FIXED
Target Milestone: --- → 120 Branch
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: