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