her sey
This commit is contained in:
@@ -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`.
|
||||
|
||||
Reference in New Issue
Block a user