her sey
This commit is contained in:
@@ -0,0 +1,82 @@
|
||||
=== CONDUIT CRASH REPORT ==========================================
|
||||
Framework : Conduit 0.1.0-dev
|
||||
Time : 2026-06-13 11:34:58 (local)
|
||||
Process : pid=36
|
||||
Signal : 11 (Segmentation fault), fault address (nil)
|
||||
|
||||
--- ATTRIBUTION ---------------------------------------------------
|
||||
1. owner=crash_test_plugin callsite=conduit_crash_test
|
||||
>>> Most likely culprit: 'crash_test_plugin' (in 'conduit_crash_test')
|
||||
|
||||
--- STACK TRACE ---------------------------------------------------
|
||||
#00 /home/steam/cs2-dedicated/game/csgo/addons/conduit/bin/conduit.so(+0xbfb64) [0x7fdf9e694b64]
|
||||
#01 /lib/x86_64-linux-gnu/libc.so.6(+0x3c050) [0x7fdfefa51050]
|
||||
#02 /home/steam/cs2-dedicated/game/csgo/addons/conduit/bin/conduit.so(+0xbf66c) [0x7fdf9e69466c]
|
||||
#03 /home/steam/cs2-dedicated/game/bin/linuxsteamrt64/libtier0.so(+0x1e0902) [0x7fdfef4ca902]
|
||||
|
||||
--- RECENT EVENTS (oldest first) ----------------------------------
|
||||
[-1767.736s] [INFO] perf: heartbeat: 1921 frames, avg 2.22 ms, max 20.85 ms (last 30 s)
|
||||
[-1737.735s] [INFO] perf: heartbeat: 1920 frames, avg 2.16 ms, max 5.31 ms (last 30 s)
|
||||
[-1707.720s] [INFO] perf: heartbeat: 1921 frames, avg 2.12 ms, max 4.39 ms (last 30 s)
|
||||
[-1677.719s] [INFO] perf: heartbeat: 1920 frames, avg 2.20 ms, max 5.59 ms (last 30 s)
|
||||
[-1647.706s] [INFO] perf: heartbeat: 1921 frames, avg 2.39 ms, max 23.56 ms (last 30 s)
|
||||
[-1617.705s] [INFO] perf: heartbeat: 1920 frames, avg 2.71 ms, max 7.46 ms (last 30 s)
|
||||
[-1587.691s] [INFO] perf: heartbeat: 1921 frames, avg 2.37 ms, max 8.58 ms (last 30 s)
|
||||
[-1557.680s] [INFO] perf: heartbeat: 1921 frames, avg 2.33 ms, max 4.84 ms (last 30 s)
|
||||
[-1527.679s] [INFO] perf: heartbeat: 1920 frames, avg 2.25 ms, max 5.09 ms (last 30 s)
|
||||
[-1497.674s] [INFO] perf: heartbeat: 1920 frames, avg 2.18 ms, max 19.43 ms (last 30 s)
|
||||
[-1467.673s] [INFO] perf: heartbeat: 1920 frames, avg 2.30 ms, max 6.87 ms (last 30 s)
|
||||
[-1437.669s] [INFO] perf: heartbeat: 1920 frames, avg 2.23 ms, max 34.46 ms (last 30 s)
|
||||
[-1407.668s] [INFO] perf: heartbeat: 1920 frames, avg 2.45 ms, max 6.17 ms (last 30 s)
|
||||
[-1377.653s] [INFO] perf: heartbeat: 1921 frames, avg 2.46 ms, max 6.25 ms (last 30 s)
|
||||
[-1347.653s] [INFO] perf: heartbeat: 1920 frames, avg 2.53 ms, max 5.44 ms (last 30 s)
|
||||
[-1317.644s] [INFO] perf: heartbeat: 1921 frames, avg 2.51 ms, max 20.77 ms (last 30 s)
|
||||
[-1287.631s] [INFO] perf: heartbeat: 1921 frames, avg 2.46 ms, max 6.45 ms (last 30 s)
|
||||
[-1257.614s] [INFO] perf: heartbeat: 1921 frames, avg 2.57 ms, max 5.90 ms (last 30 s)
|
||||
[-1227.600s] [INFO] perf: heartbeat: 1921 frames, avg 2.54 ms, max 5.79 ms (last 30 s)
|
||||
[-1197.583s] [INFO] perf: heartbeat: 1921 frames, avg 2.56 ms, max 6.94 ms (last 30 s)
|
||||
[-1167.578s] [INFO] perf: heartbeat: 1920 frames, avg 2.46 ms, max 20.36 ms (last 30 s)
|
||||
[-1137.562s] [INFO] perf: heartbeat: 1921 frames, avg 2.47 ms, max 7.86 ms (last 30 s)
|
||||
[-1107.548s] [INFO] perf: heartbeat: 1921 frames, avg 2.53 ms, max 6.38 ms (last 30 s)
|
||||
[-1077.547s] [INFO] perf: heartbeat: 1920 frames, avg 2.54 ms, max 4.09 ms (last 30 s)
|
||||
[-1047.543s] [INFO] perf: heartbeat: 1920 frames, avg 2.61 ms, max 33.69 ms (last 30 s)
|
||||
[-1017.532s] [INFO] perf: heartbeat: 1921 frames, avg 2.44 ms, max 5.97 ms (last 30 s)
|
||||
[- 987.516s] [INFO] perf: heartbeat: 1921 frames, avg 2.59 ms, max 5.71 ms (last 30 s)
|
||||
[- 957.501s] [INFO] perf: heartbeat: 1921 frames, avg 2.56 ms, max 7.43 ms (last 30 s)
|
||||
[- 927.501s] [INFO] perf: heartbeat: 1920 frames, avg 2.60 ms, max 9.17 ms (last 30 s)
|
||||
[- 897.490s] [INFO] perf: heartbeat: 1921 frames, avg 2.56 ms, max 24.84 ms (last 30 s)
|
||||
[- 867.475s] [INFO] perf: heartbeat: 1921 frames, avg 2.58 ms, max 6.20 ms (last 30 s)
|
||||
[- 837.475s] [INFO] perf: heartbeat: 1920 frames, avg 2.74 ms, max 5.57 ms (last 30 s)
|
||||
[- 807.475s] [INFO] perf: heartbeat: 1920 frames, avg 2.71 ms, max 6.15 ms (last 30 s)
|
||||
[- 777.460s] [INFO] perf: heartbeat: 1921 frames, avg 2.70 ms, max 5.47 ms (last 30 s)
|
||||
[- 747.449s] [INFO] perf: heartbeat: 1920 frames, avg 2.68 ms, max 24.22 ms (last 30 s)
|
||||
[- 717.434s] [INFO] perf: heartbeat: 1921 frames, avg 2.80 ms, max 8.64 ms (last 30 s)
|
||||
[- 687.419s] [INFO] perf: heartbeat: 1921 frames, avg 2.65 ms, max 5.28 ms (last 30 s)
|
||||
[- 657.418s] [INFO] perf: heartbeat: 1920 frames, avg 2.66 ms, max 6.34 ms (last 30 s)
|
||||
[- 627.416s] [INFO] perf: heartbeat: 1920 frames, avg 2.51 ms, max 31.89 ms (last 30 s)
|
||||
[- 597.416s] [INFO] perf: heartbeat: 1920 frames, avg 2.61 ms, max 6.72 ms (last 30 s)
|
||||
[- 567.400s] [INFO] perf: heartbeat: 1921 frames, avg 2.67 ms, max 6.53 ms (last 30 s)
|
||||
[- 537.384s] [INFO] perf: heartbeat: 1921 frames, avg 2.66 ms, max 6.66 ms (last 30 s)
|
||||
[- 507.369s] [INFO] perf: heartbeat: 1921 frames, avg 2.55 ms, max 5.30 ms (last 30 s)
|
||||
[- 477.365s] [INFO] perf: heartbeat: 1921 frames, avg 2.50 ms, max 34.05 ms (last 30 s)
|
||||
[- 447.364s] [INFO] perf: heartbeat: 1920 frames, avg 2.59 ms, max 5.42 ms (last 30 s)
|
||||
[- 417.349s] [INFO] perf: heartbeat: 1921 frames, avg 2.66 ms, max 6.55 ms (last 30 s)
|
||||
[- 387.334s] [INFO] perf: heartbeat: 1921 frames, avg 2.34 ms, max 4.63 ms (last 30 s)
|
||||
[- 357.334s] [INFO] perf: heartbeat: 1920 frames, avg 2.77 ms, max 6.65 ms (last 30 s)
|
||||
[- 327.332s] [INFO] perf: heartbeat: 1920 frames, avg 2.74 ms, max 26.14 ms (last 30 s)
|
||||
[- 312.170s] detour 'detour_self_test' installed at 0x7fdf9e693cd0
|
||||
[- 312.170s] [INFO] hooks: detour 'detour_self_test' installed at 0x7fdf9e693cd0
|
||||
[- 312.169s] detour 'detour_self_test' removed
|
||||
[- 312.169s] [INFO] hooks: detour 'detour_self_test' removed
|
||||
[- 297.318s] [INFO] perf: heartbeat: 1921 frames, avg 2.73 ms, max 6.96 ms (last 30 s)
|
||||
[- 267.308s] [INFO] perf: heartbeat: 1920 frames, avg 2.58 ms, max 6.68 ms (last 30 s)
|
||||
[- 237.308s] [INFO] perf: heartbeat: 1920 frames, avg 2.68 ms, max 7.08 ms (last 30 s)
|
||||
[- 207.296s] [INFO] perf: heartbeat: 1921 frames, avg 2.50 ms, max 25.68 ms (last 30 s)
|
||||
[- 177.293s] [INFO] perf: heartbeat: 1920 frames, avg 2.51 ms, max 5.12 ms (last 30 s)
|
||||
[- 147.280s] [INFO] perf: heartbeat: 1921 frames, avg 2.65 ms, max 5.80 ms (last 30 s)
|
||||
[- 117.280s] [INFO] perf: heartbeat: 1920 frames, avg 2.64 ms, max 6.24 ms (last 30 s)
|
||||
[- 87.265s] [INFO] perf: heartbeat: 1921 frames, avg 2.78 ms, max 5.95 ms (last 30 s)
|
||||
[- 57.263s] [INFO] perf: heartbeat: 1920 frames, avg 2.66 ms, max 31.12 ms (last 30 s)
|
||||
[- 27.248s] [INFO] perf: heartbeat: 1921 frames, avg 2.72 ms, max 7.34 ms (last 30 s)
|
||||
[- 0.001s] [WARN] core: conduit_crash_test invoked — crashing deliberately
|
||||
===================================================================
|
||||
@@ -0,0 +1,374 @@
|
||||
# Conduit Linux Accumulated Re-run - 2026-06-15
|
||||
|
||||
## Scope
|
||||
|
||||
- Pulled all accumulated commits from `origin/main`.
|
||||
- Inspected the changed files and current `docs/linux-bringup.md`.
|
||||
- Rebuilt Conduit on Linux with GCC 12.
|
||||
- Deployed to CS2 server `Test Sunucusu`.
|
||||
- Verified the new timer, chat interception, usermessage/chat-send, and console adopt paths.
|
||||
- Cleaned temporary test subscriptions/timers/commands.
|
||||
- Satisfactory server was not modified.
|
||||
|
||||
## Git
|
||||
|
||||
Previous local HEAD before this run:
|
||||
|
||||
```text
|
||||
bb58461 Phase 2: dynamic console commands + convar access
|
||||
```
|
||||
|
||||
Pulled commits:
|
||||
|
||||
```text
|
||||
43855ff PLAN: chat ships plain (white) via UTIL_SayTextFilter; color is a follow-up
|
||||
8afbeec chat: send via UTIL_SayTextFilter again (plain text works; SayText2 shows nothing)
|
||||
faded69 docs: refresh README (Phase 2 status + what works) and PLAN chat-send entry
|
||||
18e7970 chat colors: prefer UTIL_SayText2Filter (renders color codes)
|
||||
1743147 PLAN: chat send visually verified on Windows (msgType 0 = chat); colors pending
|
||||
4b3d322 PLAN: correct the chat-send entry (native UTIL_SayTextFilter, SDK drift finding)
|
||||
4ba6019 chat sending: call native UTIL_SayTextFilter instead of building the usermessage
|
||||
a4af862 Phase 2: usermessages + chat sending (SayText2)
|
||||
6985830 Phase 2: chat interception (say / say_team)
|
||||
a375e05 Phase 2: game-thread timers driven by GameFrame
|
||||
62e4ca0 Close out Linux verification of the Commands & ConVars slice
|
||||
15cc25e console: track adopted convars under their owner
|
||||
```
|
||||
|
||||
Diff summary:
|
||||
|
||||
```text
|
||||
PLAN.md | 8 +-
|
||||
README.md | 17 +++-
|
||||
core/CMakeLists.txt | 3 +
|
||||
core/src/conduit/chat.cpp | 165 ++++++++++++++++++++++++++++++++++++++
|
||||
core/src/conduit/chat.h | 46 +++++++++++
|
||||
core/src/conduit/commands.cpp | 131 ++++++++++++++++++++++++++++++
|
||||
core/src/conduit/console.cpp | 23 +++++-
|
||||
core/src/conduit/timers.cpp | 181 ++++++++++++++++++++++++++++++++++++++++++
|
||||
core/src/conduit/timers.h | 47 +++++++++++
|
||||
core/src/conduit/usermsg.cpp | 147 ++++++++++++++++++++++++++++++++++
|
||||
core/src/conduit/usermsg.h | 23 ++++++
|
||||
core/src/plugin.cpp | 16 ++++
|
||||
docs/linux-bringup.md | 76 +++++++++++++++---
|
||||
gamedata/core.json | 15 +++-
|
||||
```
|
||||
|
||||
Working tree after the 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 and link 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/timers.cpp.o
|
||||
[2/7] Building CXX object core/CMakeFiles/conduit.dir/src/conduit/commands.cpp.o
|
||||
[3/7] Building CXX object core/CMakeFiles/conduit.dir/src/conduit/usermsg.cpp.o
|
||||
[4/7] Building CXX object core/CMakeFiles/conduit.dir/src/conduit/console.cpp.o
|
||||
[5/7] Building CXX object core/CMakeFiles/conduit.dir/src/conduit/chat.cpp.o
|
||||
[6/7] Building CXX object core/CMakeFiles/conduit.dir/src/plugin.cpp.o
|
||||
[7/7] Linking CXX shared library package/addons/conduit/bin/conduit.so
|
||||
```
|
||||
|
||||
Only warning observed:
|
||||
|
||||
```text
|
||||
/root/codex/Conduit/core/src/conduit/commands.cpp:521:13: warning: compound assignment with volatile-qualified left operand is deprecated [-Wvolatile]
|
||||
```
|
||||
|
||||
No failed CMake/Ninja output exists because the build passed.
|
||||
|
||||
## Deploy And Load
|
||||
|
||||
Deployed:
|
||||
|
||||
```text
|
||||
/root/codex/Conduit/build/linux-rerun/package/.
|
||||
```
|
||||
|
||||
To:
|
||||
|
||||
```text
|
||||
/var/lib/gamepanel/servers/c2b47a90/game/csgo/
|
||||
```
|
||||
|
||||
Load checks:
|
||||
|
||||
```text
|
||||
--- meta list ---
|
||||
Listing 1 plugin:
|
||||
[01] Conduit (0.1.0-dev) by Conduit Contributors
|
||||
|
||||
--- conduit_status ---
|
||||
Conduit 0.1.0-dev
|
||||
uptime : 73.6 s
|
||||
game frames : 3983
|
||||
log file : /home/steam/cs2-dedicated/game/csgo/addons/conduit/logs/conduit-20260615.log
|
||||
crash report: armed (use conduit_crash_test to verify)
|
||||
```
|
||||
|
||||
Gamedata and usermessage function resolution:
|
||||
|
||||
```text
|
||||
--- conduit_gamedata ---
|
||||
gamedata: 1 files, 2 signatures, 0 offsets
|
||||
[ok] UTIL_SayText2Filter server 0x7fd2de250b30 (core.json)
|
||||
[ok] UTIL_SayTextFilter server 0x7fd2de2508d0 (core.json)
|
||||
|
||||
--- conduit_usermsg ---
|
||||
[Conduit] [INFO] usermsg: chat sending live via UTIL_SayTextFilter (0x7fd2de2508d0) - plain text, no color yet
|
||||
usermessages: chat sending live (SayText2 resolved, SayText resolved)
|
||||
```
|
||||
|
||||
Startup log:
|
||||
|
||||
```text
|
||||
2026-06-15 10:50:26 [INFO] gamedata: 1 files loaded: 2 signatures, 0 offsets, all valid
|
||||
2026-06-15 10:50:27 [INFO] entity: armed via CGameEntitySystem vtable 0x7fd2dec4ffd8
|
||||
2026-06-15 10:50:27 [INFO] gameevents: armed via CGameEventManager vtable 0x7fd2dec50f50
|
||||
2026-06-15 10:50:27 [INFO] chat: ready - hook installs on first subscriber
|
||||
2026-06-15 10:50:27 [INFO] core: Conduit 0.1.0-dev loaded - crash reporter armed, profiler on
|
||||
2026-06-15 10:50:27 [INFO] gameevents: game event manager connected (0x7fd2defd0460)
|
||||
2026-06-15 10:50:37 [INFO] core: first GameFrame observed - hook dispatch confirmed
|
||||
```
|
||||
|
||||
Entity system still resolves on Linux at `GameResourceServiceServerV001+0x50`:
|
||||
|
||||
```text
|
||||
--- conduit_entity ---
|
||||
[Conduit] [INFO] entity: entity system connected (0x7fd2da446000) 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
|
||||
```
|
||||
|
||||
## Timer Tests
|
||||
|
||||
Schedule/list:
|
||||
|
||||
```text
|
||||
--- conduit_timer_after 2 ---
|
||||
[Conduit] one-shot timer #1 scheduled in 2.00 s
|
||||
--- conduit_timer_every 1 ---
|
||||
[Conduit] repeating timer #2 every 1.00 s (stops after 5)
|
||||
--- conduit_timers ---
|
||||
timers: 2 active
|
||||
#1 owner=timer_test once next in 1938 ms
|
||||
#2 owner=timer_test repeat next in 969 ms
|
||||
```
|
||||
|
||||
Log block:
|
||||
|
||||
```text
|
||||
2026-06-15 10:51:55 [INFO] timer_test: repeat timer tick 1
|
||||
2026-06-15 10:51:56 [INFO] timer_test: one-shot timer fired
|
||||
2026-06-15 10:51:56 [INFO] timer_test: repeat timer tick 2
|
||||
2026-06-15 10:51:57 [INFO] timer_test: repeat timer tick 3
|
||||
2026-06-15 10:51:58 [INFO] timer_test: repeat timer tick 4
|
||||
2026-06-15 10:51:59 [INFO] timer_test: repeat timer tick 5
|
||||
2026-06-15 10:51:59 [INFO] timer_test: repeat timer self-cancelled after 5 ticks
|
||||
```
|
||||
|
||||
After firing:
|
||||
|
||||
```text
|
||||
--- conduit_timers ---
|
||||
timers: 0 active
|
||||
--- conduit_prof ---
|
||||
timer_test timer 6 71.5us 131.1us 131.1us 101.4us 429.0us
|
||||
```
|
||||
|
||||
Group cancel:
|
||||
|
||||
```text
|
||||
--- conduit_timer_every 1 ---
|
||||
[Conduit] repeating timer #3 every 1.00 s (stops after 5)
|
||||
--- conduit_timer_after 30 ---
|
||||
[Conduit] one-shot timer #4 scheduled in 30.00 s
|
||||
--- conduit_timers ---
|
||||
timers: 2 active
|
||||
#3 owner=timer_test repeat next in 937 ms
|
||||
#4 owner=timer_test once next in 29969 ms
|
||||
--- conduit_timer_stop ---
|
||||
[Conduit] cancelled 2 test timer(s)
|
||||
--- conduit_timers ---
|
||||
timers: 0 active
|
||||
```
|
||||
|
||||
Result: timers passed, including self-cancel from inside callback and owner group cancel.
|
||||
|
||||
## Chat Interception Tests
|
||||
|
||||
RCON output:
|
||||
|
||||
```text
|
||||
--- conduit_chat ---
|
||||
chat: 0 subscriber(s), interception hook off
|
||||
--- conduit_chat_listen ---
|
||||
[Conduit] [INFO] chat: 'chat_test' subscribed to chat
|
||||
[Conduit] listening to chat
|
||||
--- conduit_chat ---
|
||||
chat: 1 subscriber(s), interception hook on
|
||||
owner=chat_test hits=0
|
||||
--- say "hello from server" ---
|
||||
[Conduit] [INFO] chat_test: say slot=-1: "hello from server"
|
||||
[All Chat][Console (0)]: "hello from server"
|
||||
L 06/15/2026 - 10:53:03: "Console<0>" say ""hello from server""
|
||||
--- say "this has badword inside" ---
|
||||
[Conduit] [INFO] chat_test: say slot=-1: "this has badword inside" [SUPPRESSED]
|
||||
--- say_team "x" ---
|
||||
[Conduit] [INFO] chat_test: say_team slot=-1: "x"
|
||||
--- conduit_prof ---
|
||||
chat_test chat 3 97.0us 131.1us 131.1us 127.4us 290.9us
|
||||
```
|
||||
|
||||
Conduit log:
|
||||
|
||||
```text
|
||||
2026-06-15 10:53:03 [INFO] chat: 'chat_test' subscribed to chat
|
||||
2026-06-15 10:53:03 [INFO] chat_test: say slot=-1: "hello from server"
|
||||
2026-06-15 10:53:03 [INFO] chat_test: say slot=-1: "this has badword inside" [SUPPRESSED]
|
||||
2026-06-15 10:53:03 [INFO] chat_test: say_team slot=-1: "x"
|
||||
```
|
||||
|
||||
The suppressed `badword` message did not echo as `[All Chat]` in the RCON output.
|
||||
|
||||
Cleanup:
|
||||
|
||||
```text
|
||||
--- conduit_chat_stop ---
|
||||
[Conduit] removed 1 chat subscriber(s)
|
||||
--- conduit_chat ---
|
||||
chat: 0 subscriber(s), interception hook off
|
||||
--- say "after stop visible" ---
|
||||
[All Chat][Console (0)]: "after stop visible"
|
||||
L 06/15/2026 - 10:53:20: "Console<0>" say ""after stop visible""
|
||||
--- conduit_chat ---
|
||||
chat: 0 subscriber(s), interception hook off
|
||||
```
|
||||
|
||||
Result: chat interception, suppression, say_team distinction, profiler scope, and hook removal all passed.
|
||||
|
||||
## Chat Sending / UserMessages
|
||||
|
||||
Commands:
|
||||
|
||||
```text
|
||||
--- conduit_usermsg ---
|
||||
usermessages: chat sending live (SayText2 resolved, SayText resolved)
|
||||
--- conduit_say linux broadcast test ---
|
||||
[Conduit] PrintToAll sent
|
||||
--- conduit_say_player 0 private_ping ---
|
||||
[Conduit] PrintToPlayer(0) sent
|
||||
--- conduit_usermsg ---
|
||||
usermessages: chat sending live (SayText2 resolved, SayText resolved)
|
||||
```
|
||||
|
||||
Result: Linux signatures resolve and native send calls return `sent`. This verifies the server-side path and no crash. I cannot visually confirm client rendering from this environment; per latest plan this path sends plain white text through `UTIL_SayTextFilter`.
|
||||
|
||||
## Console Adopt Fix
|
||||
|
||||
This re-tested the previously observed adopted-convar listing issue.
|
||||
|
||||
```text
|
||||
--- conduit_console ---
|
||||
[Conduit] [INFO] console: command 'conduit_demo' registered (owner 'console_demo')
|
||||
[Conduit] [INFO] console: convar 'conduit_demo_value' created (owner 'console_demo')
|
||||
console: ready, 1 command(s), 1 plugin convar(s)
|
||||
cmd conduit_demo owner=console_demo
|
||||
cvar conduit_demo_value owner=console_demo value=7
|
||||
--- conduit_cvar conduit_demo_value 42 ---
|
||||
[Conduit] set 'conduit_demo_value' = '42'
|
||||
[Conduit] conduit_demo_value = 42 (int=42 float=42.000 bool=1)
|
||||
--- conduit_concmd_stop ---
|
||||
[Conduit] removed 2 demo registration(s)
|
||||
--- conduit_console ---
|
||||
[Conduit] [INFO] console: command 'conduit_demo' registered (owner 'console_demo')
|
||||
[Conduit] [INFO] console: convar 'conduit_demo_value' already registered - adopting (owner 'console_demo')
|
||||
console: ready, 1 command(s), 1 plugin convar(s)
|
||||
cmd conduit_demo owner=console_demo
|
||||
cvar conduit_demo_value owner=console_demo value=42
|
||||
```
|
||||
|
||||
Final cleanup:
|
||||
|
||||
```text
|
||||
--- conduit_concmd_stop ---
|
||||
[Conduit] removed 2 demo registration(s)
|
||||
--- conduit_demo x ---
|
||||
|
||||
```
|
||||
|
||||
Result: adopt tracking is fixed. Adopted convar now appears under `1 plugin convar(s)` and owner cleanup removes 2 registrations.
|
||||
|
||||
## Final Runtime State
|
||||
|
||||
```text
|
||||
--- conduit_status ---
|
||||
Conduit 0.1.0-dev
|
||||
uptime : 248.6 s
|
||||
game frames : 15184
|
||||
log file : /home/steam/cs2-dedicated/game/csgo/addons/conduit/logs/conduit-20260615.log
|
||||
crash report: armed (use conduit_crash_test to verify)
|
||||
--- conduit_timers ---
|
||||
timers: 0 active
|
||||
--- conduit_chat ---
|
||||
chat: 0 subscriber(s), interception hook off
|
||||
--- conduit_events ---
|
||||
game events: manager connected, 0 subscription(s), 0 event(s) registered, FireEvent detour off
|
||||
--- conduit_usermsg ---
|
||||
usermessages: chat sending live (SayText2 resolved, SayText resolved)
|
||||
```
|
||||
|
||||
Final profiler:
|
||||
|
||||
```text
|
||||
engine GameFrame 13848 2.77ms 4.19ms 8.39ms 39.34ms 38.34s
|
||||
timer_test timer 6 71.5us 131.1us 131.1us 101.4us 429.0us
|
||||
chat_test chat 3 97.0us 131.1us 131.1us 127.4us 290.9us
|
||||
core SchemaFindField 3 13.2us 8.2us 32.8us 31.7us 39.5us
|
||||
```
|
||||
|
||||
## Final Server State
|
||||
|
||||
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)
|
||||
```
|
||||
|
||||
## Notes
|
||||
|
||||
- No Conduit/Metamod/signal-specific load failure or crash was observed.
|
||||
- Server console contained ordinary CS2/Steam/map warnings and warmup long-frame messages.
|
||||
- No watchdog stall block appeared during this run.
|
||||
- CS2 panel status was `stopped` after Docker restart; I updated only the CS2 row back to `running`. Satisfactory remained `stopped`.
|
||||
|
||||
@@ -0,0 +1,334 @@
|
||||
# Conduit Linux Bring-up Report - 2026-06-13
|
||||
|
||||
Target server:
|
||||
- CS2 container: `gp_c2b47a90`
|
||||
- CS2 server UUID: `c2b47a90`
|
||||
- CS2 name: `Test Sunucusu`
|
||||
- Satisfactory container: `gp_d8f13411` (left untouched)
|
||||
|
||||
Artifacts copied next to this report:
|
||||
- `conduit-20260613.log`
|
||||
- `conduit-crash-20260613-113458.txt`
|
||||
|
||||
Final service state after crash test recovery:
|
||||
|
||||
```text
|
||||
/gp_c2b47a90 running running=true exit=0 oom=false
|
||||
/gp_d8f13411 exited running=false exit=130 oom=false
|
||||
```
|
||||
|
||||
Panel DB state after recovery:
|
||||
|
||||
```text
|
||||
uuid | name | status | slug | port
|
||||
----------+----------------+---------+--------------+-------
|
||||
c2b47a90 | Test Sunucusu | running | cs2 | 27015
|
||||
d8f13411 | MukemmelSunucu | stopped | satisfactory | 7777
|
||||
(2 rows)
|
||||
```
|
||||
|
||||
## 1. Build Result
|
||||
|
||||
Final build succeeded using GCC 12 in `build/linux-gcc12`.
|
||||
|
||||
Final link output:
|
||||
|
||||
```text
|
||||
[27/27] Linking CXX shared library package/addons/conduit/bin/conduit.so
|
||||
```
|
||||
|
||||
Build/deploy issues encountered and fixed:
|
||||
- Ubuntu `clang++` was 14.0.0 and rejected `-std=c++23`.
|
||||
- `hl2sdk` headers needed POSIX aliases for `stricmp`/`strcmpi` during this Linux build.
|
||||
- `crash_handler_linux.cpp` needed `cstdarg` visible for `va_start`/`va_end`; handled via build flag.
|
||||
- `watchdog.cpp` had a Linux compile error because glibc `SIGRTMIN` is runtime, not constexpr. Local source change:
|
||||
|
||||
```diff
|
||||
-constexpr int kSampleSignal = SIGRTMIN + 4;
|
||||
+const int kSampleSignal = SIGRTMIN + 4;
|
||||
```
|
||||
|
||||
- First deployed build failed to load in Metamod with protobuf ABI mismatch:
|
||||
|
||||
```text
|
||||
[META] Failed to load plugin addons/conduit/bin/conduit: /home/steam/cs2-dedicated/game/csgo/addons/conduit/bin/conduit.so: undefined symbol: _ZNK6google8protobuf7Message11GetTypeNameB5cxx11Ev
|
||||
```
|
||||
|
||||
Rebuilt with `_GLIBCXX_USE_CXX11_ABI=0`; Conduit then loaded successfully.
|
||||
|
||||
Final configure command used:
|
||||
|
||||
```sh
|
||||
cmake -S /root/codex/Conduit -B /root/codex/Conduit/build/linux-gcc12 -G Ninja \
|
||||
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
|
||||
-DCMAKE_C_COMPILER=gcc-12 \
|
||||
-DCMAKE_CXX_COMPILER=g++-12 \
|
||||
"-DCMAKE_CXX_FLAGS=-include strings.h -include cstdarg -Dstricmp=strcasecmp -Dstrcmpi=strcasecmp -D_GLIBCXX_USE_CXX11_ABI=0"
|
||||
```
|
||||
|
||||
## 2. meta list
|
||||
|
||||
```text
|
||||
rcon: authenticated
|
||||
--- meta list ---
|
||||
Listing 1 plugin:
|
||||
[01] Conduit (0.1.0-dev) by Conduit Contributors
|
||||
```
|
||||
|
||||
## 3. conduit_status + conduit_prof
|
||||
|
||||
```text
|
||||
--- conduit_status ---
|
||||
Conduit 0.1.0-dev
|
||||
uptime : 3384.6 s
|
||||
game frames : 215969
|
||||
log file : /home/steam/cs2-dedicated/game/csgo/addons/conduit/logs/conduit-20260613.log
|
||||
crash report: armed (use conduit_crash_test to verify)
|
||||
--- conduit_prof ---
|
||||
owner callsite calls avg p50 p99 max total
|
||||
engine GameFrame 215971 2.36ms 4.19ms 4.19ms 34.46ms 510.40s
|
||||
stall_test_plugin conduit_stall_test 1 1.50s 2.15s 2.15s 1.50s 1.50s
|
||||
core SchemaFindField 2 98.4us 262.1us 262.1us 164.3us 196.7us
|
||||
```
|
||||
|
||||
After the deliberate crash test and restart, Conduit loaded again:
|
||||
|
||||
```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 : 130.2 s
|
||||
game frames : 7760
|
||||
log file : /home/steam/cs2-dedicated/game/csgo/addons/conduit/logs/conduit-20260613.log
|
||||
crash report: armed (use conduit_crash_test to verify)
|
||||
```
|
||||
|
||||
## 4. conduit_schema
|
||||
|
||||
```text
|
||||
--- conduit_schema CCSPlayerPawn m_iHealth ---
|
||||
CCSPlayerPawn::m_iHealth -> offset 0x5B0 (1456), type int32
|
||||
--- conduit_schema CBaseEntity m_iTeamNum ---
|
||||
CBaseEntity::m_iTeamNum -> offset 0x624 (1572), type uint8
|
||||
```
|
||||
|
||||
Comparison with Windows reference from the bring-up doc:
|
||||
- `CCSPlayerPawn::m_iHealth`: Linux `0x5B0`, Windows expected `0x2D0` -> mismatch.
|
||||
- `CBaseEntity::m_iTeamNum`: Linux `0x624`, Windows expected `0x344` -> mismatch.
|
||||
|
||||
## 5. conduit_stall_test 1500 Watchdog Block
|
||||
|
||||
RCON command:
|
||||
|
||||
```text
|
||||
rcon: authenticated
|
||||
--- conduit_stall_test 1500 ---
|
||||
[Conduit] stalling the game thread for 1500 ms...
|
||||
```
|
||||
|
||||
Conduit log block:
|
||||
|
||||
```text
|
||||
2026-06-13 10:35:31 [WARN] watchdog: game thread has not advanced a frame for 591 ms (outside GameFrame)
|
||||
2026-06-13 10:35:31 [WARN] watchdog: context 1: owner=stall_test_plugin callsite=conduit_stall_test
|
||||
2026-06-13 10:35:31 [WARN] watchdog: >>> most likely culprit: 'stall_test_plugin' (in 'conduit_stall_test')
|
||||
2026-06-13 10:35:31 [WARN] watchdog: #00 /home/steam/cs2-dedicated/game/csgo/addons/conduit/bin/conduit.so(+0xc95c9) [0x7fdf9e69e5c9]
|
||||
2026-06-13 10:35:31 [WARN] watchdog: #01 /lib/x86_64-linux-gnu/libc.so.6(+0x3c050) [0x7fdfefa51050]
|
||||
2026-06-13 10:35:31 [WARN] watchdog: #02 /lib/x86_64-linux-gnu/libc.so.6(clock_nanosleep+0x65) [0x7fdfefae4545]
|
||||
2026-06-13 10:35:31 [WARN] watchdog: #03 /lib/x86_64-linux-gnu/libc.so.6(nanosleep+0x13) [0x7fdfefae8e53]
|
||||
2026-06-13 10:35:31 [WARN] watchdog: #04 /home/steam/cs2-dedicated/game/csgo/addons/conduit/bin/conduit.so(+0xbf703) [0x7fdf9e694703]
|
||||
2026-06-13 10:35:31 [WARN] watchdog: #05 /home/steam/cs2-dedicated/game/bin/linuxsteamrt64/libtier0.so(+0x1e0902) [0x7fdfef4ca902]
|
||||
2026-06-13 10:35:32 [INFO] watchdog: game thread recovered after a ~1586 ms stall
|
||||
```
|
||||
|
||||
Notes:
|
||||
- Attribution worked.
|
||||
- Stack sample landed.
|
||||
- Symbol quality is partial: `libconduit.so(+0x...)` offsets are present, but not function names such as `conduit_stall_test`.
|
||||
|
||||
## 6. conduit_crash_test Report
|
||||
|
||||
RCON command result:
|
||||
|
||||
```text
|
||||
rcon: authenticated
|
||||
--- conduit_crash_test ---
|
||||
(no response: connection closed)
|
||||
```
|
||||
|
||||
Generated file:
|
||||
|
||||
```text
|
||||
/var/lib/gamepanel/servers/c2b47a90/game/csgo/addons/conduit/crashes/conduit-crash-20260613-113458.txt
|
||||
```
|
||||
|
||||
Crash report content:
|
||||
|
||||
```text
|
||||
=== CONDUIT CRASH REPORT ==========================================
|
||||
Framework : Conduit 0.1.0-dev
|
||||
Time : 2026-06-13 11:34:58 (local)
|
||||
Process : pid=36
|
||||
Signal : 11 (Segmentation fault), fault address (nil)
|
||||
|
||||
--- ATTRIBUTION ---------------------------------------------------
|
||||
1. owner=crash_test_plugin callsite=conduit_crash_test
|
||||
>>> Most likely culprit: 'crash_test_plugin' (in 'conduit_crash_test')
|
||||
|
||||
--- STACK TRACE ---------------------------------------------------
|
||||
#00 /home/steam/cs2-dedicated/game/csgo/addons/conduit/bin/conduit.so(+0xbfb64) [0x7fdf9e694b64]
|
||||
#01 /lib/x86_64-linux-gnu/libc.so.6(+0x3c050) [0x7fdfefa51050]
|
||||
#02 /home/steam/cs2-dedicated/game/csgo/addons/conduit/bin/conduit.so(+0xbf66c) [0x7fdf9e69466c]
|
||||
#03 /home/steam/cs2-dedicated/game/bin/linuxsteamrt64/libtier0.so(+0x1e0902) [0x7fdfef4ca902]
|
||||
|
||||
--- RECENT EVENTS (oldest first) ----------------------------------
|
||||
[-1767.736s] [INFO] perf: heartbeat: 1921 frames, avg 2.22 ms, max 20.85 ms (last 30 s)
|
||||
[-1737.735s] [INFO] perf: heartbeat: 1920 frames, avg 2.16 ms, max 5.31 ms (last 30 s)
|
||||
[-1707.720s] [INFO] perf: heartbeat: 1921 frames, avg 2.12 ms, max 4.39 ms (last 30 s)
|
||||
[-1677.719s] [INFO] perf: heartbeat: 1920 frames, avg 2.20 ms, max 5.59 ms (last 30 s)
|
||||
[-1647.706s] [INFO] perf: heartbeat: 1921 frames, avg 2.39 ms, max 23.56 ms (last 30 s)
|
||||
[-1617.705s] [INFO] perf: heartbeat: 1920 frames, avg 2.71 ms, max 7.46 ms (last 30 s)
|
||||
[-1587.691s] [INFO] perf: heartbeat: 1921 frames, avg 2.37 ms, max 8.58 ms (last 30 s)
|
||||
[-1557.680s] [INFO] perf: heartbeat: 1921 frames, avg 2.33 ms, max 4.84 ms (last 30 s)
|
||||
[-1527.679s] [INFO] perf: heartbeat: 1920 frames, avg 2.25 ms, max 5.09 ms (last 30 s)
|
||||
[-1497.674s] [INFO] perf: heartbeat: 1920 frames, avg 2.18 ms, max 19.43 ms (last 30 s)
|
||||
[-1467.673s] [INFO] perf: heartbeat: 1920 frames, avg 2.30 ms, max 6.87 ms (last 30 s)
|
||||
[-1437.669s] [INFO] perf: heartbeat: 1920 frames, avg 2.23 ms, max 34.46 ms (last 30 s)
|
||||
[-1407.668s] [INFO] perf: heartbeat: 1920 frames, avg 2.45 ms, max 6.17 ms (last 30 s)
|
||||
[-1377.653s] [INFO] perf: heartbeat: 1921 frames, avg 2.46 ms, max 6.25 ms (last 30 s)
|
||||
[-1347.653s] [INFO] perf: heartbeat: 1920 frames, avg 2.53 ms, max 5.44 ms (last 30 s)
|
||||
[-1317.644s] [INFO] perf: heartbeat: 1921 frames, avg 2.51 ms, max 20.77 ms (last 30 s)
|
||||
[-1287.631s] [INFO] perf: heartbeat: 1921 frames, avg 2.46 ms, max 6.45 ms (last 30 s)
|
||||
[-1257.614s] [INFO] perf: heartbeat: 1921 frames, avg 2.57 ms, max 5.90 ms (last 30 s)
|
||||
[-1227.600s] [INFO] perf: heartbeat: 1921 frames, avg 2.54 ms, max 5.79 ms (last 30 s)
|
||||
[-1197.583s] [INFO] perf: heartbeat: 1921 frames, avg 2.56 ms, max 6.94 ms (last 30 s)
|
||||
[-1167.578s] [INFO] perf: heartbeat: 1920 frames, avg 2.46 ms, max 20.36 ms (last 30 s)
|
||||
[-1137.562s] [INFO] perf: heartbeat: 1921 frames, avg 2.47 ms, max 7.86 ms (last 30 s)
|
||||
[-1107.548s] [INFO] perf: heartbeat: 1921 frames, avg 2.53 ms, max 6.38 ms (last 30 s)
|
||||
[-1077.547s] [INFO] perf: heartbeat: 1920 frames, avg 2.54 ms, max 4.09 ms (last 30 s)
|
||||
[-1047.543s] [INFO] perf: heartbeat: 1920 frames, avg 2.61 ms, max 33.69 ms (last 30 s)
|
||||
[-1017.532s] [INFO] perf: heartbeat: 1921 frames, avg 2.44 ms, max 5.97 ms (last 30 s)
|
||||
[- 987.516s] [INFO] perf: heartbeat: 1921 frames, avg 2.59 ms, max 5.71 ms (last 30 s)
|
||||
[- 957.501s] [INFO] perf: heartbeat: 1921 frames, avg 2.56 ms, max 7.43 ms (last 30 s)
|
||||
[- 927.501s] [INFO] perf: heartbeat: 1920 frames, avg 2.60 ms, max 9.17 ms (last 30 s)
|
||||
[- 897.490s] [INFO] perf: heartbeat: 1921 frames, avg 2.56 ms, max 24.84 ms (last 30 s)
|
||||
[- 867.475s] [INFO] perf: heartbeat: 1921 frames, avg 2.58 ms, max 6.20 ms (last 30 s)
|
||||
[- 837.475s] [INFO] perf: heartbeat: 1920 frames, avg 2.74 ms, max 5.57 ms (last 30 s)
|
||||
[- 807.475s] [INFO] perf: heartbeat: 1920 frames, avg 2.71 ms, max 6.15 ms (last 30 s)
|
||||
[- 777.460s] [INFO] perf: heartbeat: 1921 frames, avg 2.70 ms, max 5.47 ms (last 30 s)
|
||||
[- 747.449s] [INFO] perf: heartbeat: 1920 frames, avg 2.68 ms, max 24.22 ms (last 30 s)
|
||||
[- 717.434s] [INFO] perf: heartbeat: 1921 frames, avg 2.80 ms, max 8.64 ms (last 30 s)
|
||||
[- 687.419s] [INFO] perf: heartbeat: 1921 frames, avg 2.65 ms, max 5.28 ms (last 30 s)
|
||||
[- 657.418s] [INFO] perf: heartbeat: 1920 frames, avg 2.66 ms, max 6.34 ms (last 30 s)
|
||||
[- 627.416s] [INFO] perf: heartbeat: 1920 frames, avg 2.51 ms, max 31.89 ms (last 30 s)
|
||||
[- 597.416s] [INFO] perf: heartbeat: 1920 frames, avg 2.61 ms, max 6.72 ms (last 30 s)
|
||||
[- 567.400s] [INFO] perf: heartbeat: 1921 frames, avg 2.67 ms, max 6.53 ms (last 30 s)
|
||||
[- 537.384s] [INFO] perf: heartbeat: 1921 frames, avg 2.66 ms, max 6.66 ms (last 30 s)
|
||||
[- 507.369s] [INFO] perf: heartbeat: 1921 frames, avg 2.55 ms, max 5.30 ms (last 30 s)
|
||||
[- 477.365s] [INFO] perf: heartbeat: 1921 frames, avg 2.50 ms, max 34.05 ms (last 30 s)
|
||||
[- 447.364s] [INFO] perf: heartbeat: 1920 frames, avg 2.59 ms, max 5.42 ms (last 30 s)
|
||||
[- 417.349s] [INFO] perf: heartbeat: 1921 frames, avg 2.66 ms, max 6.55 ms (last 30 s)
|
||||
[- 387.334s] [INFO] perf: heartbeat: 1921 frames, avg 2.34 ms, max 4.63 ms (last 30 s)
|
||||
[- 357.334s] [INFO] perf: heartbeat: 1920 frames, avg 2.77 ms, max 6.65 ms (last 30 s)
|
||||
[- 327.332s] [INFO] perf: heartbeat: 1920 frames, avg 2.74 ms, max 26.14 ms (last 30 s)
|
||||
[- 312.170s] detour 'detour_self_test' installed at 0x7fdf9e693cd0
|
||||
[- 312.170s] [INFO] hooks: detour 'detour_self_test' installed at 0x7fdf9e693cd0
|
||||
[- 312.169s] detour 'detour_self_test' removed
|
||||
[- 312.169s] [INFO] hooks: detour 'detour_self_test' removed
|
||||
[- 297.318s] [INFO] perf: heartbeat: 1921 frames, avg 2.73 ms, max 6.96 ms (last 30 s)
|
||||
[- 267.308s] [INFO] perf: heartbeat: 1920 frames, avg 2.58 ms, max 6.68 ms (last 30 s)
|
||||
[- 237.308s] [INFO] perf: heartbeat: 1920 frames, avg 2.68 ms, max 7.08 ms (last 30 s)
|
||||
[- 207.296s] [INFO] perf: heartbeat: 1921 frames, avg 2.50 ms, max 25.68 ms (last 30 s)
|
||||
[- 177.293s] [INFO] perf: heartbeat: 1920 frames, avg 2.51 ms, max 5.12 ms (last 30 s)
|
||||
[- 147.280s] [INFO] perf: heartbeat: 1921 frames, avg 2.65 ms, max 5.80 ms (last 30 s)
|
||||
[- 117.280s] [INFO] perf: heartbeat: 1920 frames, avg 2.64 ms, max 6.24 ms (last 30 s)
|
||||
[- 87.265s] [INFO] perf: heartbeat: 1921 frames, avg 2.78 ms, max 5.95 ms (last 30 s)
|
||||
[- 57.263s] [INFO] perf: heartbeat: 1920 frames, avg 2.66 ms, max 31.12 ms (last 30 s)
|
||||
[- 27.248s] [INFO] perf: heartbeat: 1921 frames, avg 2.72 ms, max 7.34 ms (last 30 s)
|
||||
[- 0.001s] [WARN] core: conduit_crash_test invoked — crashing deliberately
|
||||
===================================================================
|
||||
```
|
||||
|
||||
## 7. Conduit Log File
|
||||
|
||||
Original log file:
|
||||
|
||||
```text
|
||||
/var/lib/gamepanel/servers/c2b47a90/game/csgo/addons/conduit/logs/conduit-20260613.log
|
||||
```
|
||||
|
||||
Copied artifact:
|
||||
|
||||
```text
|
||||
/root/codex/source-gamepanel/conduit-bringup-artifacts/conduit-20260613.log
|
||||
```
|
||||
|
||||
Relevant load lines:
|
||||
|
||||
```text
|
||||
2026-06-13 10:33:21 [INFO] gamedata: 1 files loaded: 0 signatures, 0 offsets, all valid
|
||||
2026-06-13 10:33:21 [INFO] core: Conduit 0.1.0-dev loaded — crash reporter armed, profiler on
|
||||
2026-06-13 10:33:29 [INFO] core: first GameFrame observed — hook dispatch confirmed
|
||||
```
|
||||
|
||||
## 8. Console / Metamod / Signal Warnings
|
||||
|
||||
Important console findings:
|
||||
|
||||
1. Before the ABI rebuild, Metamod failed to load Conduit:
|
||||
|
||||
```text
|
||||
[META] Failed to load plugin addons/conduit/bin/conduit: /home/steam/cs2-dedicated/game/csgo/addons/conduit/bin/conduit.so: undefined symbol: _ZNK6google8protobuf7Message11GetTypeNameB5cxx11Ev
|
||||
[META] Loaded 0 plugins.
|
||||
```
|
||||
|
||||
This was fixed by rebuilding with `_GLIBCXX_USE_CXX11_ABI=0`.
|
||||
|
||||
2. After the successful build, no current Metamod load failure was observed. `meta list` reports Conduit loaded.
|
||||
|
||||
3. Signal/watchdog behavior:
|
||||
- No signal clash symptoms observed.
|
||||
- No `(stack sample timed out)` observed.
|
||||
- Stack sample appeared, but symbol names are mostly raw offsets for `libconduit.so`.
|
||||
|
||||
4. Crash test console tail showed the expected deliberate crash:
|
||||
|
||||
```text
|
||||
post-hook: noop
|
||||
entry.sh: line 192: 36 Segmentation fault (core dumped) ./cs2 -dedicated -ip 0.0.0.0 -port 27015 -console -usercon -maxplayers 16 +game_type 0 +game_mode 1 +mapgroup mg_active +map de_dust2 +rcon_password changeme +sv_lan 0 +tv_port 27020 -insecure
|
||||
```
|
||||
|
||||
Other engine/game warnings seen, not clearly Conduit-specific:
|
||||
|
||||
```text
|
||||
Failed loading resource "maps/prefabs/misc/terrorist_team_intro_variant2/world_visibility.vvis_c" (ERROR_FILEOPEN: File not found)
|
||||
Failed to write backup_round15.txt!
|
||||
UNEXPECTED LONG FRAME DETECTED
|
||||
```
|
||||
|
||||
## Additional Findings
|
||||
|
||||
`conduit_dumpbytes` found `server!CreateInterface`:
|
||||
|
||||
```text
|
||||
[Conduit] server!CreateInterface @ 0x7fdfaa682220
|
||||
55 48 89 E5 41 55 49 89 F5 41 54 53 48 83 EC 08
|
||||
```
|
||||
|
||||
But scanning the same pattern failed:
|
||||
|
||||
```text
|
||||
[Conduit] no match in server (285312 bytes scanned)
|
||||
```
|
||||
|
||||
This looks like a Linux memscan bug or module range issue: export lookup can locate `CreateInterface`, but `ScanPattern` does not find the bytes at that address.
|
||||
|
||||
`conduit_detour_test` passed:
|
||||
|
||||
```text
|
||||
[Conduit] detour test: PASS (before=42 during=43 after=42; expected 42/43/42)
|
||||
```
|
||||
|
||||
@@ -0,0 +1,298 @@
|
||||
# Conduit Linux Console/ConVar Re-run - 2026-06-14
|
||||
|
||||
## Scope
|
||||
|
||||
- Pulled latest Conduit commits from `origin/main`.
|
||||
- Inspected the dynamic console command / convar diff and `docs/linux-bringup.md` test steps.
|
||||
- Rebuilt on Linux with GCC 12.
|
||||
- Deployed to CS2 server `Test Sunucusu`.
|
||||
- Verified dynamic command registration, dynamic command dispatch under profiler scope, plugin convar read/write, engine convar read/write, owner cleanup, and final server state.
|
||||
- Satisfactory server was not modified.
|
||||
|
||||
## Git
|
||||
|
||||
Latest commits:
|
||||
|
||||
```text
|
||||
bb58461 (HEAD -> main, origin/main, origin/HEAD) Phase 2: dynamic console commands + convar access
|
||||
a3bd08f Close out Linux verification of the Entity + Player slice
|
||||
de4bda2 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
|
||||
```
|
||||
|
||||
Pulled range:
|
||||
|
||||
```text
|
||||
Updating de4bda2..bb58461
|
||||
Fast-forward
|
||||
PLAN.md | 4 +-
|
||||
core/CMakeLists.txt | 1 +
|
||||
core/src/conduit/commands.cpp | 52 ++++++++
|
||||
core/src/conduit/console.cpp | 302 ++++++++++++++++++++++++++++++++++++++++++
|
||||
core/src/conduit/console.h | 78 +++++++++++
|
||||
core/src/plugin.cpp | 5 +
|
||||
docs/linux-bringup.md | 58 ++++++--
|
||||
7 files changed, 491 insertions(+), 9 deletions(-)
|
||||
create mode 100644 core/src/conduit/console.cpp
|
||||
create mode 100644 core/src/conduit/console.h
|
||||
```
|
||||
|
||||
Working tree after the 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 and link succeeded.
|
||||
|
||||
```text
|
||||
-- Configuring done
|
||||
-- Generating done
|
||||
-- Build files have been written to: /root/codex/Conduit/build/linux-rerun
|
||||
[1/4] Building CXX object core/CMakeFiles/conduit.dir/src/conduit/commands.cpp.o
|
||||
[2/4] Building CXX object core/CMakeFiles/conduit.dir/src/conduit/console.cpp.o
|
||||
[3/4] Building CXX object core/CMakeFiles/conduit.dir/src/plugin.cpp.o
|
||||
[4/4] Linking CXX shared library package/addons/conduit/bin/conduit.so
|
||||
```
|
||||
|
||||
Only warning observed: the existing volatile compound-assignment warning in `commands.cpp`.
|
||||
|
||||
No failed CMake/Ninja output exists because the build passed. The Linux link path for `CConVar` / `ConVarRefAbstract` symbols 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 was not touched:
|
||||
|
||||
```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 : 47.4 s
|
||||
game frames : 2251
|
||||
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 14:19:24 [INFO] gamedata: 1 files loaded: 0 signatures, 0 offsets, all valid
|
||||
2026-06-14 14:19:25 [INFO] entity: armed via CGameEntitySystem vtable 0x7f4c8640ffd8 - entity system not created yet, will resolve on first use after map load
|
||||
2026-06-14 14:19:25 [INFO] gameevents: armed via CGameEventManager vtable 0x7f4c86410f50 - instance captured on next LoadEventsFromFile
|
||||
2026-06-14 14:19:25 [INFO] core: Conduit 0.1.0-dev loaded - crash reporter armed, profiler on
|
||||
2026-06-14 14:19:25 [INFO] gameevents: game event manager connected (0x7f4c86790460) - event listening live
|
||||
2026-06-14 14:19:36 [INFO] core: first GameFrame observed - hook dispatch confirmed
|
||||
```
|
||||
|
||||
Result: plugin loaded, frames advanced, no Conduit/Metamod load failure.
|
||||
|
||||
## Dynamic Command and Profiler
|
||||
|
||||
Commands:
|
||||
|
||||
```text
|
||||
conduit_console
|
||||
conduit_demo alpha bravo charlie
|
||||
conduit_prof
|
||||
```
|
||||
|
||||
Output:
|
||||
|
||||
```text
|
||||
rcon: authenticated
|
||||
--- conduit_console ---
|
||||
[Conduit] [INFO] console: command 'conduit_demo' registered (owner 'console_demo')
|
||||
[Conduit] [INFO] console: convar 'conduit_demo_value' created (owner 'console_demo')
|
||||
console: ready, 1 command(s), 1 plugin convar(s)
|
||||
cmd conduit_demo owner=console_demo
|
||||
cvar conduit_demo_value owner=console_demo value=7
|
||||
--- conduit_demo alpha bravo charlie ---
|
||||
[Conduit] [INFO] console_demo: conduit_demo invoked: argc=4 args='alpha bravo charlie' issuer=server(-1)
|
||||
--- conduit_prof ---
|
||||
owner callsite calls avg p50 p99 max total
|
||||
engine GameFrame 3409 2.53ms 4.19ms 8.39ms 47.48ms 8.62s
|
||||
console_demo conduit_demo 1 63.1us 65.5us 65.5us 63.1us 63.1us
|
||||
```
|
||||
|
||||
Result: dynamic command dispatch works and is profiled under `console_demo / conduit_demo`.
|
||||
|
||||
## ConVar Tests
|
||||
|
||||
Commands:
|
||||
|
||||
```text
|
||||
conduit_cvar conduit_demo_value
|
||||
conduit_cvar conduit_demo_value 42
|
||||
conduit_cvar conduit_demo_value
|
||||
conduit_cvar sv_cheats
|
||||
conduit_cvar sv_gravity
|
||||
conduit_cvar sv_gravity 700
|
||||
conduit_cvar sv_gravity
|
||||
```
|
||||
|
||||
Output:
|
||||
|
||||
```text
|
||||
rcon: authenticated
|
||||
--- conduit_cvar conduit_demo_value ---
|
||||
[Conduit] conduit_demo_value = 7 (int=7 float=7.000 bool=1)
|
||||
--- conduit_cvar conduit_demo_value 42 ---
|
||||
[Conduit] set 'conduit_demo_value' = '42'
|
||||
[Conduit] conduit_demo_value = 42 (int=42 float=42.000 bool=1)
|
||||
--- conduit_cvar conduit_demo_value ---
|
||||
[Conduit] conduit_demo_value = 42 (int=42 float=42.000 bool=1)
|
||||
--- conduit_cvar sv_cheats ---
|
||||
[Conduit] sv_cheats = false (int=0 float=0.000 bool=0)
|
||||
--- conduit_cvar sv_gravity ---
|
||||
[Conduit] sv_gravity = 800.000000 (int=800 float=800.000 bool=1)
|
||||
--- conduit_cvar sv_gravity 700 ---
|
||||
L 06/14/2026 - 14:20:43: server_cvar: "sv_gravity" "700.000000"
|
||||
[Conduit] set 'sv_gravity' = '700'
|
||||
[Conduit] sv_gravity = 700.000000 (int=700 float=700.000 bool=1)
|
||||
--- conduit_cvar sv_gravity ---
|
||||
[Conduit] sv_gravity = 700.000000 (int=700 float=700.000 bool=1)
|
||||
```
|
||||
|
||||
Result: plugin-owned convar read/write passed. Engine convar read/write passed.
|
||||
|
||||
`sv_gravity` was restored:
|
||||
|
||||
```text
|
||||
rcon: authenticated
|
||||
--- conduit_cvar sv_gravity 800 ---
|
||||
L 06/14/2026 - 14:20:56: server_cvar: "sv_gravity" "800.000000"
|
||||
[Conduit] set 'sv_gravity' = '800'
|
||||
[Conduit] sv_gravity = 800.000000 (int=800 float=800.000 bool=1)
|
||||
--- conduit_cvar sv_gravity ---
|
||||
[Conduit] sv_gravity = 800.000000 (int=800 float=800.000 bool=1)
|
||||
```
|
||||
|
||||
## Owner Cleanup
|
||||
|
||||
Commands:
|
||||
|
||||
```text
|
||||
conduit_concmd_stop
|
||||
conduit_demo x
|
||||
```
|
||||
|
||||
Output:
|
||||
|
||||
```text
|
||||
--- conduit_concmd_stop ---
|
||||
[Conduit] removed 2 demo registration(s)
|
||||
--- conduit_demo x ---
|
||||
|
||||
```
|
||||
|
||||
Result: `conduit_demo x` produced no handler line after cleanup, so the command was removed from the engine.
|
||||
|
||||
I then called `conduit_console` again to probe the persistence/adopt path:
|
||||
|
||||
```text
|
||||
--- conduit_console ---
|
||||
[Conduit] [INFO] console: command 'conduit_demo' registered (owner 'console_demo')
|
||||
[Conduit] [INFO] console: convar 'conduit_demo_value' already registered - adopting (owner 'console_demo')
|
||||
console: ready, 1 command(s), 0 plugin convar(s)
|
||||
cmd conduit_demo owner=console_demo
|
||||
```
|
||||
|
||||
The persisted convar value remained available:
|
||||
|
||||
```text
|
||||
--- conduit_cvar conduit_demo_value ---
|
||||
[Conduit] conduit_demo_value = 42 (int=42 float=42.000 bool=1)
|
||||
```
|
||||
|
||||
Final cleanup after the re-register:
|
||||
|
||||
```text
|
||||
rcon: authenticated
|
||||
--- conduit_cvar conduit_demo_value ---
|
||||
[Conduit] conduit_demo_value = 42 (int=42 float=42.000 bool=1)
|
||||
--- conduit_concmd_stop ---
|
||||
[Conduit] removed 1 demo registration(s)
|
||||
--- conduit_demo x ---
|
||||
|
||||
--- conduit_status ---
|
||||
Conduit 0.1.0-dev
|
||||
uptime : 115.6 s
|
||||
game frames : 6615
|
||||
log file : /home/steam/cs2-dedicated/game/csgo/addons/conduit/logs/conduit-20260614.log
|
||||
crash report: armed (use conduit_crash_test to verify)
|
||||
--- conduit_prof ---
|
||||
owner callsite calls avg p50 p99 max total
|
||||
engine GameFrame 6617 2.34ms 4.19ms 8.39ms 47.48ms 15.50s
|
||||
console_demo conduit_demo 1 63.1us 65.5us 65.5us 63.1us 63.1us
|
||||
```
|
||||
|
||||
## Finding
|
||||
|
||||
The adopt path works for name-based access: `conduit_demo_value` stayed at `42` and could be read after re-registration.
|
||||
|
||||
Potential mismatch: after adoption, `conduit_console` reported `0 plugin convar(s)` and did not list `conduit_demo_value`, despite logging `already registered - adopting`. That means the existing convar is not represented in `g_convars`, so owner cleanup removed only the command on the second cleanup (`removed 1 demo registration(s)`). If the intended behavior is "adopted convars are tracked and listed as plugin-owned", this needs a small fix. If "adopt" only means "treat existing engine convar as accessible by name", the runtime behavior is consistent.
|
||||
|
||||
## Final State
|
||||
|
||||
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)
|
||||
```
|
||||
|
||||
No Conduit/Metamod/signal-specific load failure or crash was observed. Server console had ordinary CS2/Steam/map warnings only.
|
||||
|
||||
@@ -0,0 +1,287 @@
|
||||
# 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.
|
||||
|
||||
@@ -0,0 +1,307 @@
|
||||
# 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:
|
||||
|
||||
```text
|
||||
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:
|
||||
|
||||
```text
|
||||
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:
|
||||
|
||||
```text
|
||||
## main...origin/main
|
||||
```
|
||||
|
||||
## Build
|
||||
|
||||
Build command used:
|
||||
|
||||
```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.
|
||||
|
||||
Final build line:
|
||||
|
||||
```text
|
||||
[30/30] Linking CXX shared library package/addons/conduit/bin/conduit.so
|
||||
```
|
||||
|
||||
Warnings only:
|
||||
|
||||
```text
|
||||
- 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:
|
||||
|
||||
```text
|
||||
/root/codex/Conduit/build/linux-rerun/package/.
|
||||
```
|
||||
|
||||
Destination:
|
||||
|
||||
```text
|
||||
/var/lib/gamepanel/servers/c2b47a90/game/csgo/
|
||||
```
|
||||
|
||||
Server restarted:
|
||||
|
||||
```text
|
||||
gp_c2b47a90
|
||||
```
|
||||
|
||||
Satisfactory server was not modified.
|
||||
|
||||
## Initial Load
|
||||
|
||||
`meta list` and `conduit_status` after deploy:
|
||||
|
||||
```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 : 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:
|
||||
|
||||
```text
|
||||
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:
|
||||
|
||||
```text
|
||||
conduit_vtable server CGameEventManager
|
||||
conduit_vtable server CCSPlayerController
|
||||
```
|
||||
|
||||
Output:
|
||||
|
||||
```text
|
||||
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:
|
||||
|
||||
```text
|
||||
conduit_event_stop
|
||||
conduit_event_listen player_spawn
|
||||
mp_restartgame 1
|
||||
```
|
||||
|
||||
RCON output:
|
||||
|
||||
```text
|
||||
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:
|
||||
|
||||
```text
|
||||
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:
|
||||
|
||||
```text
|
||||
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:
|
||||
|
||||
```text
|
||||
conduit_event_cancel player_spawn
|
||||
mp_restartgame 1
|
||||
```
|
||||
|
||||
RCON output:
|
||||
|
||||
```text
|
||||
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:
|
||||
|
||||
```text
|
||||
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:
|
||||
|
||||
```text
|
||||
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:
|
||||
|
||||
```text
|
||||
conduit_event_stop
|
||||
conduit_events
|
||||
```
|
||||
|
||||
Output:
|
||||
|
||||
```text
|
||||
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:
|
||||
|
||||
```text
|
||||
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:
|
||||
|
||||
```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
|
||||
|
||||
During the RTTI/vtable/memscan command window, the log briefly reported watchdog stalls outside Conduit context:
|
||||
|
||||
```text
|
||||
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.
|
||||
|
||||
Reference in New Issue
Block a user