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 }}
Repository navigation
Silksong (PPSA12544): "Act 1: Pharloom" title card never shows; no frame is presented for 68 s while the first area loads #3695
Investigated and written by Claude Code (AI), and posted by me after review.
Title: Hollow Knight: Silksong (PPSA12544), Linux
What happens on the console: after the intro cinematic, the game shows the "Act 1: Pharloom" title card before gameplay starts. Reference (PS5 Pro): https://youtu.be/FZ41MMcxj50 at 1:23.
What happens here: the cinematic ends, the screen stays black, and gameplay appears directly. The card is never seen. The text is otherwise clean (menu and profile text are fixed since #1599), so this is not a font or atlas problem.
What the log shows: the game presents no frame for about 68 s right after the cinematic, while the first area loads:
The frame dump (APS5_DUMP_FRAMES_EVERY=30) has a frame at 223.3 s, then none until 291.2 s (67.9 s), then one more at 330.6 s. Normal pacing only returns around 354 s.
During that gap, Unity logs Forcing call to sce::Agc::suspendPoint to avoid TRC R5089 breach every 3 s (30 times, from t+255 to t+343 s). That message means the game's render loop has not submitted a frame for a long time.
So the card most likely plays while nothing is presented, or the game skips it because its timer ran out during the load. It is a symptom of the long load, not a missing feature.
Build: a local build from 2026-10-10: maincba8d86 plus what Silksong needs to reach gameplay on Linux. That is #846 (plugin conversion with --module-dir Media/Plugins), #1599, and the sceKernelGetModuleInfoFromAddr st_size change since merged as #3297. The run was user-driven (New Game, cinematic, then gameplay), with the window visible, on an i7-8750H with a GTX 1050 Ti and NVIDIA 580. I have not rerun it on current main yet.
Next step (not done yet): sample the main thread's stack during the black gap to see what the load waits on. The first suspect is synchronous file reads (APR/AIO run synchronously, one stream per read fragment).
I can attach the full log or the window recording if useful.
Regarding the frame presentation gap during the initial scene loading:
On current main, during the asset streaming / initial scene transition, Unity executes intensive synchronous asset reads and recompiler tasks, causing render submissions to pause while background worker threads load assets. In composited environments (e.g. Wayland), vkAcquireNextImageKHR can return VK_TIMEOUT or VK_NOT_READY during these prolonged intervals.
Previously, this triggered an unhandled exception in VulkanDevice::AcquireImage via check(acquired, "vkAcquireNextImageKHR"). We have submitted PR #5863 to cleanly treat VK_TIMEOUT and VK_NOT_READY as frame-drop conditions so the presentation loop smoothly resumes once scene loading completes.
The relink needs Media/Modules and Media/Plugins converted with --module-dir. If Media is only a link to the dump, the title fails with unable to load /app0/Media/Modules/PS5Util.prx, error:0x80020002.
AI-assisted: this comment was drafted with the help of Claude Code and checked against the logs by us.
Thanks for testing the #5092 startup fix on Silksong. The #6842 result is useful: the build without the fix crashes before presenting frames, while the build with #6842 runs at about 1,080–1,200 presents per 10 seconds. That separates the startup crash from the original loading-gap report, but the steady rate does not show whether presentation stalled during the cinematic-to-first-area transition or whether the title card appeared. When convenient, could you add the frame-dump timestamps around that transition from the #6842 build and note its exact tested commit? That would close the remaining question without inferring the gap from the later presentation rate. AI-assisted: yes.
Activity
oneandonlydean commentedon Oct 13, 2026
Does the 68 s gap without a presented frame still happen on current main? Please post the frame-dump times from one run there.
adhimiw commentedon Oct 14, 2026
Regarding the frame presentation gap during the initial scene loading:
On current
main, during the asset streaming / initial scene transition, Unity executes intensive synchronous asset reads and recompiler tasks, causing render submissions to pause while background worker threads load assets. In composited environments (e.g. Wayland),vkAcquireNextImageKHRcan returnVK_TIMEOUTorVK_NOT_READYduring these prolonged intervals.Previously, this triggered an unhandled exception in
VulkanDevice::AcquireImageviacheck(acquired, "vkAcquireNextImageKHR"). We have submitted PR #5863 to cleanly treatVK_TIMEOUTandVK_NOT_READYas frame-drop conditions so the presentation loop smoothly resumes once scene loading completes.awake-devel commentedon Oct 14, 2026
I have tested on main yes
oneandonlydean commentedon Oct 14, 2026
Thanks. Could you post the frame-dump times from that run and the main commit it was on? That shows whether the gap is still 68 s or shorter now.
mrfelek commentedon Oct 15, 2026
Silksong on current
main: no frame-dump times yet, the run crashes at startupSetup
origin/main44df21632(2026-10-15), clean worktree, Release, Linuxorigin/mainrelinkerResults
origin/mainlibraries,origin/mainrelink (APS5_DUMP_FRAMES_EVERY=30, New Game pressed by script)globalgamemanagers.assetsand the Unity resources load (jump to address 0)origin/mainlibraries, relink from the Oct 10 runtimeorigin/mainrelink, older runtime librariesmain.origin/mainrelink neededMedia/Modules/Il2cppUserAssemblies.prxandPS5Util.prxconverted by hand. The plugin conversion from feat(relinker): add --module-dir for modules loaded at run time #846 (--module-dir Media/Plugins) produced no plugin entries in our run.cba8d86dwith feat(relinker): add --module-dir for modules loaded at run time #846, fix(agc): store GPU results over CPU-stamped bytes the CPU left unchanged #1599, fix(libkernel): ignore the input st_size of sceKernelGetModuleInfoFromAddr #3297). The three PRs don't apply cleanly to that base. Also, fix(agc): store GPU results over CPU-stamped bytes the CPU left unchanged #1599 is titled "store GPU results over CPU-stamped bytes", not a text fix, so I may have the wrong number for the menu-text fix.Do you still need help with this? If yes, the next step is finding the null call in the new relink. I can post the crash log and the three run logs.
AI-assisted; the builds and runs are from my machine.
mrfelek commentedon Oct 16, 2026
Update on current
mainmain(af7db81e6) still crashes at startup, right after loadingglobal-metadata.dat. A bisect points to feat(libc): provide the runtime scripting allocator hooks #5092, and fix(libc): give the scripting heap hooks blocks from libc's own heap #6842 fixes it (results on #6842). With fix(libc): give the scripting heap hooks blocks from libc's own heap #6842 the title runs at about 1,080–1,200 presents per 10 s.Media/ModulesandMedia/Pluginsconverted with--module-dir. IfMediais only a link to the dump, the title fails withunable to load /app0/Media/Modules/PS5Util.prx, error:0x80020002.AI-assisted: this comment was drafted with the help of Claude Code and checked against the logs by us.
MarcZX10 commentedon Oct 16, 2026
Thanks for testing the #5092 startup fix on Silksong. The #6842 result is useful: the build without the fix crashes before presenting frames, while the build with #6842 runs at about 1,080–1,200 presents per 10 seconds. That separates the startup crash from the original loading-gap report, but the steady rate does not show whether presentation stalled during the cinematic-to-first-area transition or whether the title card appeared. When convenient, could you add the frame-dump timestamps around that transition from the #6842 build and note its exact tested commit? That would close the remaining question without inferring the gap from the later presentation rate. AI-assisted: yes.