Crash at packed venues: rigged buffers sized to an all-instances upper bound (50M verts) -> driver segfault allocating TAA skin history; size from visible demand #559
Labels
No labels
amd
avatars
bug
builder
cannot-reproduce
crash
epic
feature
from-viewer
gl-removal
known-limitation
monitoring
parity
perf
platform
priority
critical
priority
high
priority
low
priority
medium
provenance
rendering
rt
status
in-progress
status
testing
status
up-next
triage
ui
upstream
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
sky_line/Slipstream#559
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Crash (2026-10-08, owner's machine, PEAK Lounge, 4096 m draw distance, right after a teleport into a packed venue): SIGSEGV inside the NVIDIA driver from
VkDeviceContext::createBuffer←LLCleanRendererVK::ensureTemporal(llcleanrenderervk.cpp ~14824), allocatingskinHistPositionsat 1,783,795,920 bytes. That ismSkinVertCap= 74.3M skinned vertices × 24 B.Why: the rigged demand scan (
llcleanrenderervk.cpp~7212–7290) sizes buffers to an upper bound: every live rigged instance in range, at its finest resident LOD, on screen or not. In about 60 s after the teleport it climbed to 12,746 skins, 63,871 rigged items and 49.5M vertices. The only limit wasrigBufferBudgetBytes()= 1/4 of device-local VRAM per buffer (8 GB on a 32 GB card). Several buffers scale with it: the skinned verts themselves, plus the TAA mirrorsprevSkinnedPositions(16 B/vert) andskinHistPositions(24 B/vert). Together they ran into gigabytes, and the driver crashed instead of returning OOM.Shipped mitigation (
00f2e6a71eon vulkan-port-tb):RenderVKMaxSkinnedVerts(default 8M, minimum 1M) caps the demand.Proper fix (GPU-driven):
Done when: a packed venue at max draw distance can't drive rigged memory past a combined budget, and nothing visible on screen is dropped in ordinary crowds.