Skip to content

Commit ca9e82a

Browse files
Splizardclaude
andcommitted
debug #303: clear .godot/ before procdump re-run (cold-start crash)
First-pass gd build crashed naturally with 0xc0000005 — but the second godot invocation (same args, same cwd, manually under procdump) exited cleanly with code 0. State left in .godot/ by the first export changes behavior on subsequent exports. So the crash is cold-start only. Delete .godot/ before the procdump re-run, then redo --import → --export-release so the second invocation goes through the same code path that crashed. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
1 parent 08dcb06 commit ca9e82a

1 file changed

Lines changed: 22 additions & 3 deletions

File tree

.github/workflows/issue-303-windows.yml

Lines changed: 22 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,20 @@ jobs:
8585
../cmd/gd/gd.exe build 2>&1 | tee ../gd-build.log
8686
echo "gd_build_first_pass_exit=$?" | tee -a ../gd-build.log
8787
88+
- name: Reset .godot state so re-run reproduces the cold-start crash
89+
shell: pwsh
90+
run: |
91+
# The crash is state-dependent: the first export crashes, subsequent
92+
# ones run clean. Most likely .godot/exported/ caches the result so
93+
# the second invocation doesn't exercise the crashing code path.
94+
# Delete the whole .godot directory so the procdump re-run repeats
95+
# the cold-start path that gd build's first pass took.
96+
$dot = 'debug-issue-303\graphics\.godot'
97+
if (Test-Path $dot) {
98+
Write-Host "Removing $dot"
99+
Remove-Item -Recurse -Force $dot
100+
}
101+
88102
- name: Re-run the export step under procdump to capture the AV
89103
shell: pwsh
90104
continue-on-error: true
@@ -96,10 +110,14 @@ jobs:
96110
Write-Error "Godot not found at $godot after first-pass gd build"
97111
exit 1
98112
}
99-
# Mirror what gd does for the export step: chdir to the project's graphics
100-
# directory and invoke godot with the same args. (See builder/windows.go:57)
113+
# Mirror what gd's BuildMain does for the export step (see
114+
# builder/windows.go:57-67): re-run --import to repopulate .godot/
115+
# state, then export. The crash signature suggests the issue fires
116+
# during the cold-start of the export pipeline.
101117
Push-Location debug-issue-303\graphics
102-
Write-Host "=== procdump run begin ==="
118+
Write-Host "=== Re-importing project (no procdump) ==="
119+
& $godot --headless --import 2>&1 | Tee-Object ..\..\procdump-import.log
120+
Write-Host "=== procdump-monitored export begin ==="
103121
& C:\procdump\procdump.exe `
104122
-accepteula `
105123
-ma `
@@ -152,6 +170,7 @@ jobs:
152170
Format-Table | Out-File artifacts\releases-listing.txt
153171
if (Test-Path gd-build.log) { Copy-Item gd-build.log artifacts\ }
154172
if (Test-Path procdump-export-run.log) { Copy-Item procdump-export-run.log artifacts\ }
173+
if (Test-Path procdump-import.log) { Copy-Item procdump-import.log artifacts\ }
155174
156175
- name: Upload crash artifacts
157176
if: always()

0 commit comments

Comments
 (0)