diff --git a/scripts/tier2/artifacts/send_result_to_send_20260616/bump_stack.py b/scripts/tier2/artifacts/send_result_to_send_20260616/bump_stack.py new file mode 100644 index 00000000..fd6ee9e6 --- /dev/null +++ b/scripts/tier2/artifacts/send_result_to_send_20260616/bump_stack.py @@ -0,0 +1,77 @@ +"""Temporarily bump python.exe's main thread stack size from 1.94MB to 4MB via PE header patch.""" +import struct +import shutil +import os +import sys +from pathlib import Path + +PY = Path(os.environ.get("PYTHON_EXE", r"C:\projects\manual_slop_tier2\.venv\Scripts\python.exe")) +BACKUP = PY.with_suffix(".exe.stackbackup") + +# PE header structure (simplified for stack size fields) +# DOS header -> e_lfanew at offset 0x3C -> NT headers +# NT headers: signature (4), FileHeader (20), OptionalHeader +# OptionalHeader: Magic (2), MajorLinkerVersion (1), MinorLinkerVersion (1), +# SizeOfCode (4), SizeOfInitializedData (4), SizeOfUninitializedData (4), +# AddressOfEntryPoint (4), BaseOfCode (4), BaseOfData (4), +# ImageBase (4 for 32-bit PE, 8 for 64-bit), SectionAlignment (4), +# FileAlignment (4), ... then at offset 0x48 (for 64-bit): +# SizeOfStackReserve (8), SizeOfStackCommit (8) + +def get_pe_stack_reserve(python_path: Path) -> int: + with open(python_path, "rb") as f: + data = f.read() + e_lfanew = struct.unpack_from(" None: + with open(python_path, "rb") as f: + data = bytearray(f.read()) + e_lfanew = struct.unpack_from("