Files
2026-07-21 22:06:10 +00:00

11 KiB
Raw Permalink Blame History

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:

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:

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:

## main...origin/main

Build

Command:

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.

-- 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:

/root/codex/Conduit/build/linux-rerun/package/.

Destination:

/var/lib/gamepanel/servers/c2b47a90/game/csgo/

CS2 container restarted:

gp_c2b47a90

Satisfactory container state during deploy:

/gp_d8f13411 exited running=false exit=130 oom=false

Load Check

RCON:

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:

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:

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:

conduit_event_stop
conduit_event_listen player_spawn
mp_warmup_end
mp_restartgame 1

RCON / console-reported Conduit lines:

[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:

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:

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:

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:

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:

/gp_c2b47a90 running running=true exit=0 oom=false
/gp_d8f13411 exited running=false exit=130 oom=false

Panel DB:

   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:

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.