# Conduit Linux Entity Re-run - 2026-06-14 ## Scope - Pulled latest Conduit commits from `origin/main`. - Inspected the Phase 2 entity/event bridge diff and updated `docs/linux-bringup.md` steps. - Rebuilt on Linux with GCC 12. - Deployed to CS2 server `Test Sunucusu`. - Verified normal startup arming, lazy entity-system resolution, Linux RTTI vtable lookup, event-to-entity bridge, schema-backed health read/write, cleanup, and final server state. - Satisfactory server was not modified. ## Git Latest commits: ```text de4bda2 (HEAD -> main, origin/main, origin/HEAD) Phase 2: schema-backed Entity + Player access, with event bridge 4b79d33 Close out Linux verification of the Phase 2 GameEvents slice a5c1c13 docs: Linux re-test steps for the Phase 2 GameEvents slice ffb57f3 Phase 2 start: dispatch core + GameEvents, with an RTTI vtable finder 4078ab7 PLAN: close the Linux memscan question — M1 fully done on both platforms ``` Pulled range: ```text Updating a5c1c13..de4bda2 Fast-forward PLAN.md | 4 +- core/CMakeLists.txt | 1 + core/src/conduit/commands.cpp | 61 ++++++- core/src/conduit/entity.cpp | 380 ++++++++++++++++++++++++++++++++++++++++ core/src/conduit/entity.h | 89 ++++++++++ core/src/conduit/gameevents.cpp | 9 + core/src/conduit/gameevents.h | 9 + core/src/conduit/memscan.cpp | 52 ++++++ core/src/conduit/memscan.h | 6 + core/src/plugin.cpp | 5 + docs/linux-bringup.md | 53 +++++- ``` Working tree after run: ```text ## main...origin/main ``` ## Build Command: ```sh cmake -S /root/codex/Conduit -B /root/codex/Conduit/build/linux-rerun -G Ninja \ -DCMAKE_BUILD_TYPE=RelWithDebInfo \ -DCMAKE_C_COMPILER=gcc-12 \ -DCMAKE_CXX_COMPILER=g++-12 cmake --build /root/codex/Conduit/build/linux-rerun ``` Result: build succeeded. ```text -- Configuring done -- Generating done -- Build files have been written to: /root/codex/Conduit/build/linux-rerun [1/7] Building CXX object core/CMakeFiles/conduit.dir/src/conduit/memscan.cpp.o [2/7] Building CXX object core/CMakeFiles/conduit.dir/src/conduit/commands.cpp.o /root/codex/Conduit/core/src/conduit/commands.cpp: In function ‘int {anonymous}::DetourTestTarget(int)’: /root/codex/Conduit/core/src/conduit/commands.cpp:338:13: warning: compound assignment with ‘volatile’-qualified left operand is deprecated [-Wvolatile] 338 | acc += x; | ~~~~^~~~ [3/7] Building CXX object core/CMakeFiles/conduit.dir/src/conduit/gamedata.cpp.o [4/7] Building CXX object core/CMakeFiles/conduit.dir/src/plugin.cpp.o [5/7] Building CXX object core/CMakeFiles/conduit.dir/src/conduit/entity.cpp.o [6/7] Building CXX object core/CMakeFiles/conduit.dir/src/conduit/gameevents.cpp.o [7/7] Linking CXX shared library package/addons/conduit/bin/conduit.so ``` No failed CMake/Ninja output exists because the build passed. ## Deploy Package source: ```text /root/codex/Conduit/build/linux-rerun/package/. ``` Destination: ```text /var/lib/gamepanel/servers/c2b47a90/game/csgo/ ``` CS2 container restarted: ```text gp_c2b47a90 ``` Satisfactory container state during deploy: ```text /gp_d8f13411 exited running=false exit=130 oom=false ``` ## Load Check RCON: ```text rcon: authenticated --- meta list --- Listing 1 plugin: [01] Conduit (0.1.0-dev) by Conduit Contributors --- conduit_status --- Conduit 0.1.0-dev uptime : 45.8 s game frames : 2220 log file : /home/steam/cs2-dedicated/game/csgo/addons/conduit/logs/conduit-20260614.log crash report: armed (use conduit_crash_test to verify) ``` Startup log: ```text 2026-06-14 13:48:50 [INFO] gamedata: 1 files loaded: 0 signatures, 0 offsets, all valid 2026-06-14 13:48:50 [INFO] entity: armed via CGameEntitySystem vtable 0x7f2eed759fd8 — entity system not created yet, will resolve on first use after map load 2026-06-14 13:48:51 [INFO] gameevents: armed via CGameEventManager vtable 0x7f2eed75af50 — instance captured on next LoadEventsFromFile 2026-06-14 13:48:51 [INFO] core: Conduit 0.1.0-dev loaded — crash reporter armed, profiler on 2026-06-14 13:48:51 [INFO] gameevents: game event manager connected (0x7f2eedada460) — event listening live 2026-06-14 13:49:01 [INFO] core: first GameFrame observed — hook dispatch confirmed ``` Result: normal startup did not crash. Entity acquisition armed at load and deferred resolution until map/entity system was available. ## Entity RTTI and Lazy Resolve RCON: ```text rcon: authenticated --- conduit_vtable server CGameEntitySystem --- [Conduit] CGameEntitySystem vtable @ 0x7f2eed759fd8 first method -> 0x7f2eec92aec0 --- conduit_entity --- [Conduit] [INFO] entity: entity system connected (0x7f2ee9124000) via GameResourceServiceServerV001+0x50 — vtable matches CGameEntitySystem entity system: connected slot 0 cs_player_controller team=2 pawn=player health=100 slot 1 cs_player_controller team=3 pawn=player health=100 ``` Result: Linux Itanium RTTI path found `CGameEntitySystem`. Lazy resource-service scan found the entity system at `GameResourceServiceServerV001+0x50`. This differs from Windows `+0x58`, as expected, and was found by vtable matching. ## Event to Entity Bridge Commands: ```text conduit_event_stop conduit_event_listen player_spawn mp_warmup_end mp_restartgame 1 ``` RCON / console-reported Conduit lines: ```text [Conduit] [INFO] gameevents: 'event_test' subscribed to 'player_spawn' (pre) [Conduit] [INFO] gameevents: 'event_test' subscribed to 'player_spawn' (post) [Conduit] listening to 'player_spawn' (pre+post) — watch the log [Conduit] [INFO] event_test: [pre] player_spawn userid=0 pawn=player idx=256 health=100 team=2 [Conduit] [INFO] event_test: [post] player_spawn userid=0 pawn=player idx=256 health=100 team=2 [Conduit] [INFO] event_test: [pre] player_spawn userid=1 pawn=player idx=260 health=100 team=3 [Conduit] [INFO] event_test: [post] player_spawn userid=1 pawn=player idx=260 health=100 team=3 ``` Conduit log: ```text 2026-06-14 13:50:11 [INFO] gameevents: 'event_test' subscribed to 'player_spawn' (pre) 2026-06-14 13:50:11 [INFO] gameevents: 'event_test' subscribed to 'player_spawn' (post) 2026-06-14 13:50:11 [INFO] event_test: [pre] player_spawn userid=0 pawn=player idx=256 health=100 team=2 2026-06-14 13:50:11 [INFO] event_test: [post] player_spawn userid=0 pawn=player idx=256 health=100 team=2 2026-06-14 13:50:11 [INFO] event_test: [pre] player_spawn userid=1 pawn=player idx=260 health=100 team=3 2026-06-14 13:50:11 [INFO] event_test: [post] player_spawn userid=1 pawn=player idx=260 health=100 team=3 2026-06-14 13:50:12 [INFO] event_test: [pre] player_spawn userid=0 pawn=player idx=256 health=100 team=2 2026-06-14 13:50:12 [INFO] event_test: [post] player_spawn userid=0 pawn=player idx=256 health=100 team=2 2026-06-14 13:50:12 [INFO] event_test: [pre] player_spawn userid=1 pawn=player idx=260 health=100 team=3 2026-06-14 13:50:12 [INFO] event_test: [post] player_spawn userid=1 pawn=player idx=260 health=100 team=3 ``` Result: event carried player reference resolved to live pawn entities in both pre and post phases. Schema-backed reads returned health/team. ## Health Read / Write RCON: ```text rcon: authenticated --- conduit_ent_health 0 --- [Conduit] slot 0 pawn=player health=100 team=2 --- conduit_ent_health 0 45 --- [Conduit] slot 0 health 100 -> 45 (read back 45; networked write) --- conduit_ent_health 0 --- [Conduit] slot 0 pawn=player health=45 team=2 ``` Cleanup / restore: ```text rcon: authenticated --- conduit_ent_health 0 100 --- [Conduit] slot 0 health 45 -> 100 (read back 100; networked write) --- conduit_ent_health 0 --- [Conduit] slot 0 pawn=player health=100 team=2 --- conduit_event_stop --- [Conduit] removed 2 test subscription(s) --- conduit_events --- game events: manager connected, 0 subscription(s), 1 event(s) registered, FireEvent detour off --- conduit_prof --- owner callsite calls avg p50 p99 max total engine GameFrame 6851 2.44ms 4.19ms 8.39ms 33.34ms 16.74s event_test player_spawn 8 42.6us 65.5us 131.1us 77.7us 341.2us core SchemaFindField 3 12.7us 8.2us 32.8us 29.3us 38.0us ``` Result: schema-backed setter wrote `m_iHealth`, readback returned the written value, then health was restored to 100. ## Final State RCON: ```text rcon: authenticated --- conduit_status --- Conduit 0.1.0-dev uptime : 162.5 s game frames : 9648 log file : /home/steam/cs2-dedicated/game/csgo/addons/conduit/logs/conduit-20260614.log crash report: armed (use conduit_crash_test to verify) --- conduit_events --- game events: manager connected, 0 subscription(s), 1 event(s) registered, FireEvent detour off ``` Docker: ```text /gp_c2b47a90 running running=true exit=0 oom=false /gp_d8f13411 exited running=false exit=130 oom=false ``` Panel DB: ```text uuid | name | status | slug | port ----------+----------------+---------+--------------+------- c2b47a90 | Test Sunucusu | running | cs2 | 27015 d8f13411 | MukemmelSunucu | stopped | satisfactory | 7777 (2 rows) ``` ## Odd Warnings / Notes No Conduit/Metamod/signal load failure or crash was observed. The `conduit_vtable` / `conduit_entity` window produced one watchdog sample: ```text 2026-06-14 13:49:57 [WARN] watchdog: game thread has not advanced a frame for 521 ms (outside GameFrame) 2026-06-14 13:49:57 [WARN] watchdog: no Conduit context on the game thread — the stall is in engine/game code or an untracked path 2026-06-14 13:49:57 [WARN] watchdog: #00 /home/steam/cs2-dedicated/game/csgo/addons/conduit/bin/conduit.so(+0xcff99) [0x7f2ee4b0ef99] 2026-06-14 13:49:57 [WARN] watchdog: #01 /lib/x86_64-linux-gnu/libc.so.6(+0x3c050) [0x7f2f31cc2050] 2026-06-14 13:49:57 [WARN] watchdog: #02 /home/steam/cs2-dedicated/game/csgo/addons/conduit/bin/conduit.so(+0xcd020) [0x7f2ee4b0c020] 2026-06-14 13:49:57 [WARN] watchdog: #03 /home/steam/cs2-dedicated/game/csgo/addons/conduit/bin/conduit.so(+0xcd160) [0x7f2ee4b0c160] 2026-06-14 13:49:57 [WARN] watchdog: #04 /home/steam/cs2-dedicated/game/csgo/addons/conduit/bin/conduit.so(+0xcd523) [0x7f2ee4b0c523] 2026-06-14 13:49:57 [WARN] watchdog: #05 /home/steam/cs2-dedicated/game/csgo/addons/conduit/bin/conduit.so(+0xcd60f) [0x7f2ee4b0c60f] 2026-06-14 13:49:57 [WARN] watchdog: #06 /home/steam/cs2-dedicated/game/csgo/addons/conduit/bin/conduit.so(+0xcdecd) [0x7f2ee4b0cecd] 2026-06-14 13:49:57 [WARN] watchdog: #07 /home/steam/cs2-dedicated/game/csgo/addons/conduit/bin/conduit.so(+0xc10d5) [0x7f2ee4b000d5] 2026-06-14 13:49:57 [WARN] watchdog: #08 /home/steam/cs2-dedicated/game/bin/linuxsteamrt64/libtier0.so(+0x1e0902) [0x7f2f3173b902] 2026-06-14 13:49:57 [INFO] entity: entity system connected (0x7f2ee9124000) via GameResourceServiceServerV001+0x50 — vtable matches CGameEntitySystem 2026-06-14 13:49:57 [INFO] watchdog: game thread recovered after a ~816 ms stall ``` This looks tied to the diagnostic RTTI/entity scan command window. The server recovered and continued through later event and health tests. Server console also printed ordinary CS2 map/resource/round warnings such as missing lightmap resources and `Failed to write backup_round00.txt!`; I did not see those tied to Conduit/Metamod/signal failure.