D344: orderly quit so exit never lands inside the GL driver; GE_QUITFRAME

Quit (quit event, window close, Alt+F4, from either SDL pump) used to
exit(0) immediately while the render thread could be mid-frame in the
driver: the likely trigger of the host's 0x119 bugchecks. Now quits are
requested; the render thread glFinish()es, unbinds the context and parks
at a frame boundary, and the host exits after (max 2 s). GE_QUITFRAME=<n>
gives the harness a clean self-quit; golden_gate.sh uses it.
This commit is contained in:
James Dansereau committed 2026-09-27 10:38:16 -04:00
1 parent c07af11fae
commit 461ea871c2
5 files changed
+123 -11

No files matched your search

+6 -2
View File
@@ -67,8 +67,12 @@ printf '[Window]\nWidth = 640\nHeight = 480\n' > "$INI"
# --- run ---------------------------------------------------------------------
rm -rf ppm
PATH="/c/msys64/mingw64/bin:$PATH" GE_PCDUMP="$DUMP" \
timeout 90 ./build-pc/ge007.x86_64.exe "-level_$LEVEL" > "$LOG" 2>&1
# D344: quit cleanly 30 frames after the last capture (GE_QUITFRAME) instead
# of being killed by `timeout`; killing the game mid-frame is the likely
# trigger of the host's 0x119 bugchecks. timeout stays as a backstop only.
DUMP_HI=${DUMP#*-}; DUMP_HI=${DUMP_HI%%:*}
PATH="/c/msys64/mingw64/bin:$PATH" GE_PCDUMP="$DUMP" GE_QUITFRAME=$((DUMP_HI + 30)) \
timeout 120 ./build-pc/ge007.x86_64.exe "-level_$LEVEL" > "$LOG" 2>&1
if [ "$GOLDEN" = 1 ]; then
python tools_pc/framediff.py ppm > "$FRAMEDIFF_OUT" 2>&1