Repository navigation
Killing Floor 3 (PPSA08427) on Linux #3413
hypermoist
started this conversation in
Game bring-up
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Title: Killing Floor 3, PPSA08427, 02.011.000 (Unreal Engine 5)
Host: CachyOS (kernel 7.2.9), Ryzen 5 5600G, RTX 3060 12 GB (NVIDIA 615.78.08, open kernel module), GCC 16.2.1, 31 GiB RAM
Updated 2026-10-12.
On unmodified
mainpros.sdk.Prospero.prx.guest.prx: undefined symbol: y7JD1gfwyfA(sceNpEntitlementAccessGetGameTrialsFlag). feat(libSceNpEntitlementAccess): declare sceNpEntitlementAccessGetGameTrialsFlag #3449 declares it.clip distances, layer, viewport or auxiliary vertex exports is unsupported (register 0x207 = 0x0040000f)); feat(agc): vertex clip and cull distances #423 covers clip and cull distances.On our fork branch
wip/ppsa08427-sync-fix(mainof 2026-10-11 plus local changes; the install is relinked against it)main).Host-import spans and the NVIDIA driver (found while merging
main)With the span imports from 70d7aa5 the title crashed within seconds:
segfault at 160 ... in libnvidia-glcore.so, MMU faults (Xid 31) and, in the kernel log,Cannot map memory with base addr 0x3014900000 and size of 0x330 pages. The title registers a heap 1 MiB at a time; each new piece extends the run, so the whole run is retired and pinned again (0x3014900000+0x120000,+0x220000,+0x320000), and pinning the next one fails inside the driver, which then crashes instead of returning an error. Our branch imports only the ranges a request needs (from the range containing it to its end, growing an existing import from its base), and hands a retired import to the recorder even when it is idle, since a draw being built can still hold its buffer from an earlier lookup. With both the title runs as before.Play Solo crash and its workaround
Without a config change the game crashes with SIGSEGV about 80 s into the level load (eboot vaddr 0x3b6227, a null read inside UE garbage collection). UE's shipping build gives up after 10 s without progress on a pending
FinishDestroy(a primitive component's render-thread fence), and its error path crashes. Our render thread is that slow during the load. With this indownload0/nightfall/saved/ps5/engine.ini(and the same pair as-ini:Engine:[ConsoleVariables]:...onapp0/uecommandline.txt) the match loads:What limits it (measured with
APS5_PROFILE_DRAW,APS5_PROFILE_GPUandperf)APS5_UNIT_SHADOW_MIB=2048(and a 3 GiB storage cache to fit VRAM) every write-back gets a unit shadow and about 5 GiB per 10 s of those uploads come from the device shadow instead of the host import, but the frame rate does not change, so at the menu the CPU side is the limit for now.vkAllocateMemory(out of device memory) on 12 GB.Environment used
APS5_SKIP_FAILED_WORK=1(local debug aid on our branch; without it an unsupported mesh draw, "mesh draw contains no complete primitive", aborts the game),APS5_STORAGE_CACHE_MIB=4096(2048 thrashes: 26 GiB of re-uploads per 10 s),APS5_HOST_IMPORT_MIB=8192,APS5_STAGING_POOL_MIB=512,APS5_BATCH_CAP=4,APS5_RELAXED_FLOAT=1,APS5_SAMPLER_FALLBACK=1.Sound not checked. The investigation was done with an AI assistant (Claude); the measurements are from runs on the machine above.
All reactions