The native Linux build of Half-Life: Alyx crashes during the train ride on a2_pistol (Chapter 2, right after getting the pistol and dropping into the train). The game hits a fatal assertion in its entity serialization code on a GlobPool worker thread, then deliberately crashes itself.
It is deterministic. Two crashes nine days apart, both restored from the same autosave, fail on the exact same bit offset:
../public/networksystem/serializedentity.h (797) : Assertion Failed in function GetBitRange():
*pEnd > *pStart
GetBitRange( 6661 -> 6661 ) end is before or same as start
Stack of the crashing thread (identical offsets in both cores):
Game console just before the assert (game build 10919, map a2_pistol). The player position is moving steadily, so the train is running:
763(139.833397): ET: Restoring game at 1829 0:30:29 : '#HLVR_Chapter_Number_01 #HLVR_Chapter_Title_01 ...'
827(145.261290): Map: "a2_pistol"
829(145.261292): Build: 10919 (revision 10919)
...
1015(177.490523): Attempted to find unknown particle system "bloodspray"
1016(177.660280): Failed to allocate space for morph!
...
1048(214.250343): Fog Clipmaps - too many lights (54 - max: 32) 820 units centered on (setpos -639 891 587) ...
1062(238.468814): Fog Clipmaps - too many lights (52 - max: 32) 820 units centered on (setpos -659 889 575) ...
1063(238.478966): ../public/networksystem/serializedentity.h (797) : Assertion Failed in function GetBitRange():
Crash
Save
Map
Engine time at assert
Assert
2026-09-25 20:34 JST
autosave at 0:30:29
a2_pistol
114.0 s
GetBitRange( 6661 -> 6661 )
2026-10-04 14:36 JST
autosave at 0:30:29
a2_pistol
238.5 s
GetBitRange( 6661 -> 6661 )
Crash report auto-uploaded by Steam for the 2026-10-04 crash: bp-cc7e0e00-136d-4aa2-85d3-bb30b2261003
Not the filesystem. A comment in #965 reports this same GetBitRange assertion and attributes it to the Steam library being on an NTFS (ntfs3) partition. Here the game is installed on btrfs (compress=zstd:3) on the home subvolume, so NTFS is not required to trigger it.
Not the stream. I'm streaming to a Steam Frame over vrlink, and that session did show the stream reset storm and videovulkan.cpp:1641 assert from #965 while the level was loading. But the game kept running normally for about a minute afterwards, and the headset only went inactive after the game had frozen on the assert. Memory, swap and the GPU driver logged no errors.
An older crash from the same save on 2026-09-25 20:24 was a different SIGSEGV in libscenesystem.so on a worker thread, matching the "native build instability" note in #965.
Describe the bug
The native Linux build of Half-Life: Alyx crashes during the train ride on
a2_pistol(Chapter 2, right after getting the pistol and dropping into the train). The game hits a fatal assertion in its entity serialization code on aGlobPoolworker thread, then deliberately crashes itself.It is deterministic. Two crashes nine days apart, both restored from the same autosave, fail on the exact same bit offset:
Stack of the crashing thread (identical offsets in both cores):
Game console just before the assert (game build 10919, map
a2_pistol). The player position is moving steadily, so the train is running:GetBitRange( 6661 -> 6661 )GetBitRange( 6661 -> 6661 )Crash report auto-uploaded by Steam for the 2026-10-04 crash:
bp-cc7e0e00-136d-4aa2-85d3-bb30b2261003Not the filesystem. A comment in #965 reports this same
GetBitRangeassertion and attributes it to the Steam library being on an NTFS (ntfs3) partition. Here the game is installed on btrfs (compress=zstd:3) on the home subvolume, so NTFS is not required to trigger it.Not the stream. I'm streaming to a Steam Frame over vrlink, and that session did show the stream reset storm and
videovulkan.cpp:1641assert from #965 while the level was loading. But the game kept running normally for about a minute afterwards, and the headset only went inactive after the game had frozen on the assert. Memory, swap and the GPU driver logged no errors.To Reproduce
-vr -steam -noasserts -nopassiveasserts +map startup -vulkan).Expected behavior
The train ride completes and the level continues.
System Information
Additional context
libscenesystem.soon a worker thread, matching the "native build instability" note in #965.