You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
This repository was archived by the owner on Aug 26, 2026. It is now read-only.
Same env vars, same code: bossMainloop receives 1 DONE per run sometimes, 152 DONEs other times.
2-3 of 5 runs stall at DONEs=1 (animation never advances)
1-2 of 5 runs reach DONEs=152 (game advances ~150 frames)
What we know
__scTaskComplete (/tmp/ge_decomp/src/sched.c:406-433) forwards t->msg verbatim to clientQ.
Real msg is &localGfxDoneMsg — a stack OSScMsg in bossMainloop, NOT the static g_bossGfxDoneMsg.
Bogus OSTask submissions (data_ptr=0x7FC00000) have garbage in their enclosing OSScTask msg field.
Our heal at lib/N64ModernRuntime/ultramodern/src/events.cpp:614+ overwrites bogus msg with hardcoded 0x803B38B8.
That hardcoded address is NOT &g_bossGfxDoneMsg — was a guess. The OSScMsg there is uninitialised → bossMainloop reads gen.type=0 → switch falls through default → no decrement → stall.
What was tried
❌ Hardcoded fallback 0x803B38B8 — works sometimes, fails others
Symptom
Same env vars, same code: bossMainloop receives 1 DONE per run sometimes, 152 DONEs other times.
What we know
__scTaskComplete(/tmp/ge_decomp/src/sched.c:406-433) forwardst->msgverbatim to clientQ.&localGfxDoneMsg— a stack OSScMsg in bossMainloop, NOT the staticg_bossGfxDoneMsg.data_ptr=0x7FC00000) have garbage in their enclosing OSScTaskmsgfield.lib/N64ModernRuntime/ultramodern/src/events.cpp:614+overwrites bogus msg with hardcoded0x803B38B8.&g_bossGfxDoneMsg— was a guess. The OSScMsg there is uninitialised → bossMainloop readsgen.type=0→ switch falls through default → no decrement → stall.What was tried
0x803B38B8— works sometimes, fails othersgen.type=2at hardcoded addr — caused regression (memory corruption?)gen.type ∈ [1..5]filter — too aggressive, dropped valid msgsTry next
&localGfxDoneMsgfrom FIRST healthy submission (no hardcoded fallback). Defer healing until learned.gen.type=2at the learned address as defensive measure.__scTaskComplete.Files
lib/N64ModernRuntime/ultramodern/src/events.cpp:568-700lib/N64ModernRuntime/ultramodern/src/mesgqueue.cpp:206-224/tmp/ge_decomp/src/sched.c:406-433(reference)Acceptance criteria
Every run has DONEs ≥ 100 (currently 30-40% rate).