-
-
Notifications
You must be signed in to change notification settings - Fork 32.4k
Closed
Labels
3.13bugs and security fixesbugs and security fixesinterpreter-core(Objects, Python, Grammar, and Parser dirs)(Objects, Python, Grammar, and Parser dirs)type-bugAn unexpected behavior, bug, or errorAn unexpected behavior, bug, or error
Description
Bug report
Bug description:
Tested on commit: e9b00cc
Order of strings in __static_attributes__
is not deterministic
Running the following a couple of times produces different hashes:
/opt/cpython/cross-build/build/python ../../Programs/_freeze_module.py zipimport ../../Lib/zipimport.py Python/frozen_modules/zipimport.h
sha256sum ./Python/frozen_modules/zipimport.h
I patched this generator to output dis as follows:
diff --git a/Programs/_freeze_module.py b/Programs/_freeze_module.py
index ba638ee..7e837e9 100644
--- a/Programs/_freeze_module.py
+++ b/Programs/_freeze_module.py
@@ -24,6 +24,9 @@ def compile_and_marshal(name: str, text: bytes) -> bytes:
filename = f"<frozen {name}>"
# exec == Py_file_input
code = compile(text, filename, "exec", optimize=0, dont_inherit=True)
+ import dis
+ with open("/tmp/a", "at") as f:
+ dis.dis(code, file=f)
return marshal.dumps(code)
Then disassembly differs in one place (after removing at 0x[a-f0-9]*
):
diff --git a/tmp/a b/tmp/b
index 372a97c..4010046 100644
--- a/tmp/a
+++ b/tmp/b
@@ -291,7 +291,7 @@ Disassembly of <code object zipimporter , file "<frozen zipimport>", line 50>:
289 LOAD_CONST 15 (<code object __repr__ , file "<frozen zipimport>", line 289>)
MAKE_FUNCTION
STORE_NAME 16 (__repr__)
- LOAD_CONST 16 (('archive', 'prefix'))
+ LOAD_CONST 16 (('prefix', 'archive'))
STORE_NAME 17 (__static_attributes__)
RETURN_CONST 4 (None)
diff in .h
files is quite small, so I assume only sorting is affected:
- 0,0,0,41,2,114,46,0,0,0,114,44,0,0,0,169,
+ 0,0,0,41,2,114,44,0,0,0,114,46,0,0,0,169,
CPython versions tested on:
3.13
Operating systems tested on:
No response
Linked PRs
gpshead
Metadata
Metadata
Assignees
Labels
3.13bugs and security fixesbugs and security fixesinterpreter-core(Objects, Python, Grammar, and Parser dirs)(Objects, Python, Grammar, and Parser dirs)type-bugAn unexpected behavior, bug, or errorAn unexpected behavior, bug, or error