Skip to content

fix(draw): stop CEnvBeam #4530 watchdog crash-loop (force BEAM_POINTS)#437

Open
dux1993 wants to merge 1 commit into
devfrom
fix/cenvbeam-4530-beamtype
Open

fix(draw): stop CEnvBeam #4530 watchdog crash-loop (force BEAM_POINTS)#437
dux1993 wants to merge 1 commit into
devfrom
fix/cenvbeam-4530-beamtype

Conversation

@dux1993

@dux1993 dux1993 commented Jul 13, 2026

Copy link
Copy Markdown

Problem

cs2-jailbreak prod is crash-looping. AcceleratorCS2 dumps show a SIGSEGV/Watchdog timeout exceeded with a byte-identical main-thread stack across every map — an infinite loop inside libserver.so CEnvBeam think, matching Valve csgo-osx-linux#4530 "CEnvBeam infinite loop".

Root cause

BeamLine.Draw() creates an env_beam but never sets BeamType. With no explicit type the engine treats the code-spawned beam as entity-anchored and walks m_pSceneNode->m_pParent->m_pOwner to resolve a scene owner that never exists, hanging the main thread forever (Linux) → engine watchdog kills the process. These beams back zones, trails, and warden markers, so they're created every round on every map — hence the map-independent crash-loop. (RayTrace's native DrawBeam is disabled via DrawBeam = 0, so BeamLine is the only active env_beam source.)

Fix

Set BeamType = BeamType_t.BEAM_POINTS — a pure origin→EndPos world-space beam that skips scene-owner resolution entirely. One-line behavioral change; all beam visuals (zones/trails/markers) keep working, minus the crash.

Validation

  • CI build green
  • :dev server image — no CEnvBeam watchdog crash / no new Accelerator dumps across map rotation, laser visuals intact
  • Promote dev→main, tag server repo, prod deploy verified

BeamLine spawned env_beam entities without setting BeamType, so the
engine treated them as entity-anchored and walked
m_pSceneNode->m_pParent->m_pOwner to resolve a scene owner that never
exists for a code-spawned beam. On Linux this hangs the main thread in
an infinite loop (Valve csgo-osx-linux#4530), tripping the engine
watchdog and crash-looping the server on every map rotation.

Setting BeamType = BEAM_POINTS draws the beam origin->EndPos in world
space and skips scene-owner resolution entirely. This fixes the zone,
trail, and marker lasers that are all built on BeamLine.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant