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

9.0 KiB

Conduit Linux GameEvents Re-run - 2026-06-14

Scope

  • Pulled latest Conduit commits from origin/main.
  • Inspected the new Phase 2 dispatch/GameEvents diff.
  • Rebuilt clean on Linux with GCC 12.
  • Deployed the resulting package to CS2 server Test Sunucusu.
  • Verified Linux RTTI vtable lookup, GameEvent manager connection, pre/post dispatch, cancellation, profiler accounting, and cleanup.
  • Did not touch the Satisfactory server files/container.

Git

Latest commits after pull:

a5c1c13 (HEAD -> main, origin/main, origin/HEAD) 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

Diff summary inspected:

 PLAN.md                         |   4 +-
 core/CMakeLists.txt             |   1 +
 core/src/conduit/commands.cpp   |  85 ++++++++++++
 core/src/conduit/gameevents.cpp | 294 ++++++++++++++++++++++++++++++++++++++++
 core/src/conduit/gameevents.h   |  73 ++++++++++
 core/src/conduit/memscan.cpp    | 237 ++++++++++++++++++++++++++++++--
 core/src/conduit/memscan.h      |   7 +
 core/src/plugin.cpp             |   5 +
 docs/linux-bringup.md           |  24 ++++

Working tree after the run:

## main...origin/main

Build

Build command used:

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.

Final build line:

[30/30] Linking CXX shared library package/addons/conduit/bin/conduit.so

Warnings only:

- protobuf syntax warnings
- paths.cpp snprintf truncation warnings
- commands.cpp volatile compound assignment deprecated
- log.cpp snprintf truncation warning
- C-only warning for C++ flags on Zydis.c

No full cmake/ninja failure output exists because the build did not fail.

Deploy

Deployed package:

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

Destination:

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

Server restarted:

gp_c2b47a90

Satisfactory server was not modified.

Initial Load

meta list and conduit_status after deploy:

rcon: authenticated
--- meta list ---
Listing 1 plugin:
  [01] Conduit (0.1.0-dev) by Conduit Contributors
--- conduit_status ---
Conduit 0.1.0-dev
  uptime      : 88.9 s
  game frames : 5066
  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 lines:

2026-06-14 11:34:50 [INFO] gamedata: 1 files loaded: 0 signatures, 0 offsets, all valid
2026-06-14 11:34:50 [INFO] gameevents: armed via CGameEventManager vtable 0x7f47c7ae2f50 — instance captured on next LoadEventsFromFile
2026-06-14 11:34:50 [INFO] core: Conduit 0.1.0-dev loaded — crash reporter armed, profiler on
2026-06-14 11:34:50 [INFO] gameevents: game event manager connected (0x7f47c7e62460) — event listening live
2026-06-14 11:35:00 [INFO] core: first GameFrame observed — hook dispatch confirmed

RTTI Vtable Checks

Commands:

conduit_vtable server CGameEventManager
conduit_vtable server CCSPlayerController

Output:

rcon: authenticated
--- conduit_vtable server CGameEventManager ---
[Conduit] CGameEventManager vtable @ 0x7f47c7ae2f50  first method -> 0x7f47c6d0aa80
--- conduit_vtable server CCSPlayerController ---
[Conduit] CCSPlayerController vtable @ 0x7f47c7ace5a8  first method -> 0x7f47c6b169a0

Result: Linux Itanium RTTI lookup passed for both classes.

Listen Test

Commands:

conduit_event_stop
conduit_event_listen player_spawn
mp_restartgame 1

RCON output:

rcon: authenticated
--- conduit_event_stop ---
[Conduit] removed 0 test subscription(s)
--- conduit_event_listen player_spawn ---
[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
--- mp_restartgame 1 ---

Log evidence:

2026-06-14 11:55:18 [INFO] gameevents: 'event_test' subscribed to 'player_spawn' (pre)
2026-06-14 11:55:18 [INFO] gameevents: 'event_test' subscribed to 'player_spawn' (post)
2026-06-14 11:55:20 [INFO] event_test: [pre] player_spawn  userid=0 attacker=-1
2026-06-14 11:55:20 [INFO] event_test: [post] player_spawn  userid=0 attacker=-1
2026-06-14 11:55:20 [INFO] event_test: [pre] player_spawn  userid=1 attacker=-1
2026-06-14 11:55:20 [INFO] event_test: [post] player_spawn  userid=1 attacker=-1

conduit_events and conduit_prof after listen:

rcon: authenticated
--- conduit_events ---
game events: manager connected, 2 subscription(s), 1 event(s) registered, FireEvent detour on
  event_test           player_spawn                 pre  hits=2
  event_test           player_spawn                 post hits=2
--- conduit_prof ---
owner                callsite                          calls       avg       p50       p99       max      total
engine               GameFrame                         80323    2.28ms    4.19ms    4.19ms   27.49ms    183.11s
event_test           player_spawn                          4    38.1us    65.5us    65.5us    54.9us    152.6us

Result: pre and post dispatch both fired.

Cancel Test

Commands:

conduit_event_cancel player_spawn
mp_restartgame 1

RCON output:

rcon: authenticated
--- conduit_event_cancel player_spawn ---
[Conduit] [INFO] gameevents: 'event_cancel_test' subscribed to 'player_spawn' (pre)
[Conduit] will cancel every 'player_spawn' until conduit_event_stop
--- mp_restartgame 1 ---

Log evidence:

2026-06-14 12:02:21 [INFO] gameevents: 'event_cancel_test' subscribed to 'player_spawn' (pre)
2026-06-14 12:02:22 [INFO] event_test: [pre] player_spawn  userid=0 attacker=-1
2026-06-14 12:02:22 [WARN] event_test: cancelling 'player_spawn' (pre)
2026-06-14 12:02:22 [INFO] event_test: [pre] player_spawn  userid=1 attacker=-1
2026-06-14 12:02:22 [WARN] event_test: cancelling 'player_spawn' (pre)

There were no new [post] player_spawn lines after cancellation.

conduit_events and conduit_prof after cancel:

rcon: authenticated
--- conduit_events ---
game events: manager connected, 3 subscription(s), 1 event(s) registered, FireEvent detour on
  event_test           player_spawn                 pre  hits=4
  event_test           player_spawn                 post hits=2
  event_cancel_test    player_spawn                 pre  hits=2
--- conduit_prof ---
owner                callsite                          calls       avg       p50       p99       max      total
engine               GameFrame                        107531    2.25ms    4.19ms    4.19ms   32.27ms    242.28s
event_test           player_spawn                          6    47.1us    65.5us   131.1us    76.9us    282.5us
event_cancel_test    player_spawn                          2    14.5us    16.4us    16.4us    14.9us     28.9us

Result: cancel path passed; post stayed at hits=2 while pre advanced.

Cleanup

Commands:

conduit_event_stop
conduit_events

Output:

rcon: authenticated
--- conduit_event_stop ---
[Conduit] removed 3 test subscription(s)
--- conduit_events ---
game events: manager connected, 0 subscription(s), 1 event(s) registered, FireEvent detour off

Final status:

rcon: authenticated
--- conduit_status ---
Conduit 0.1.0-dev
  uptime      : 2228.6 s
  game frames : 141868
  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

Container and Panel State

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

During the RTTI/vtable/memscan command window, the log briefly reported watchdog stalls outside Conduit context:

2026-06-14 11:50:54 [WARN] watchdog: game thread has not advanced a frame for 509 ms (outside GameFrame)
2026-06-14 11:50:54 [WARN] watchdog: no Conduit context on the game thread — the stall is in engine/game code or an untracked path
2026-06-14 11:51:04 [WARN] watchdog: game thread has not advanced a frame for 585 ms (outside GameFrame)
2026-06-14 11:51:04 [WARN] watchdog: no Conduit context on the game thread — the stall is in engine/game code or an untracked path

The server recovered and continued through 141k+ frames. I did not see Conduit/Metamod/signal load failures or crashes in this run.