Summary
On a Linux x86-64 dedicated server running VPhysics Jolt instead of the stock solver, every detour the physenv module installs fails to resolve — yet the module still registers as Enabled: true, Compatible: true.
The failures themselves are expected: physenv hooks IVP internals, and under Jolt those symbols do not exist. The reportable part is the status line, which tells an operator the module is fine when it has hooked nothing.
Filing this here rather than on VPhysics-Jolt since you maintain both, and the fix — if any — belongs on the HolyLib side.
Environment
|
|
| GMod branch |
x86-64, build 260722 |
| OS |
Linux, dedicated server |
| HolyLib |
CI build of 2026-07-18 (Workflow: 5607, branch main), reported in-game as V0.9 DEV |
| Physics |
VPhysics-Jolt 0.23, vphysics_jolt_gmod_dedicated_linux64 (this org's fork) |
What happens
19 lines at boot, none of which prevent startup:
holylib: Failed to get function CPhysicsEnvironment::CPhysicsEnvironment!
holylib: Failed to get function CPhysicsEnvironment::~CPhysicsEnvironment!
holylib: Failed to get function CPhysicsEnvironment::CreatePolyObject!
holylib: Failed to get function CPhysicsEnvironment::CreatePolyObjectStatic!
holylib: Failed to get function CPhysicsEnvironment::CreateSphereObject!
holylib: Failed to get function CPhysicsEnvironment::DestroyObject!
holylib: Failed to get function CPhysicsEnvironment::Restore!
holylib: Failed to get function CPhysicsEnvironment::TransferObject!
holylib: Failed to get function CPhysicsEnvironment::UnserializeObjectFromBuffer!
holylib: Failed to get function IVP_Event_Manager_Standard::simulate_time_events!
holylib: Failed to get function IVP_Mindist::do_impact!
holylib: Failed to get function IVP_Mindist::simulate_time_event!
holylib: Failed to get function IVP_Mindist::update_exact_mindist_events!
holylib: Failed to get function IVP_Mindist_Base::get_objects!
holylib: Failed to get function IVP_Mindist_Manager::recheck_ov_element!
holylib: Failed to get function IVP_Mindist_Minimize_Solver::p_minimize_PK!
holylib: Failed to get function IVP_Mindist_Minimize_Solver::p_minimize_PP!
holylib: Failed to get function IVP_OV_Element::add_oo_collision!
holylib: Failed to get function IVP_OV_Element::remove_oo_collision!
Immediately followed by:
holylib: Registered module physenv (26 Enabled: true, Compatible: true, MultiLua: true )
Controlled
Same server, same HolyLib binary, only the physics module swapped:
vphysics.so |
CPhysicsEnvironment::* failures |
IVP_* failures |
| stock (IVP) |
0 |
0 |
| VPhysics Jolt 0.23 |
9 |
10 |
Measured across boots by comparing either side of a known offset in garrysmod/console.log, so previous runs could not contribute.
Expected
Compatible: false when the detours fail, the way the ten genuinely incompatible modules already report on this branch. Failing that, any signal that survives past the boot scroll — the current status line is the thing an operator checks, and it is the one that is wrong.
Whether physenv could be ported to Jolt is a separate and much larger question; I am not asking for that here. HolyLib:OnPhysicsLag guards a pathology specific to IVP's event loop, which Jolt's fixed-substep stepping does not have, so the feature may simply not be meaningful there.
Workaround
-holylib_enable_physenv 0 as a launch parameter. Worth noting for anyone finding this issue: holylib_enable_physenv 0 in server.cfg does not work — the plugin loads before the cfgs run, and the module registers and fails anyway.
Happy to help
I can run any diagnostic build or extra logging on this setup — the swap between solvers is scripted and takes about a minute either way.
Summary
On a Linux x86-64 dedicated server running VPhysics Jolt instead of the stock solver, every detour the
physenvmodule installs fails to resolve — yet the module still registers asEnabled: true, Compatible: true.The failures themselves are expected:
physenvhooks IVP internals, and under Jolt those symbols do not exist. The reportable part is the status line, which tells an operator the module is fine when it has hooked nothing.Filing this here rather than on VPhysics-Jolt since you maintain both, and the fix — if any — belongs on the HolyLib side.
Environment
x86-64, build 260722Workflow: 5607, branchmain), reported in-game asV0.9 DEVVPhysics-Jolt0.23,vphysics_jolt_gmod_dedicated_linux64(this org's fork)What happens
19 lines at boot, none of which prevent startup:
Immediately followed by:
Controlled
Same server, same HolyLib binary, only the physics module swapped:
vphysics.soCPhysicsEnvironment::*failuresIVP_*failuresMeasured across boots by comparing either side of a known offset in
garrysmod/console.log, so previous runs could not contribute.Expected
Compatible: falsewhen the detours fail, the way the ten genuinely incompatible modules already report on this branch. Failing that, any signal that survives past the boot scroll — the current status line is the thing an operator checks, and it is the one that is wrong.Whether
physenvcould be ported to Jolt is a separate and much larger question; I am not asking for that here.HolyLib:OnPhysicsLagguards a pathology specific to IVP's event loop, which Jolt's fixed-substep stepping does not have, so the feature may simply not be meaningful there.Workaround
-holylib_enable_physenv 0as a launch parameter. Worth noting for anyone finding this issue:holylib_enable_physenv 0inserver.cfgdoes not work — the plugin loads before the cfgs run, and the module registers and fails anyway.Happy to help
I can run any diagnostic build or extra logging on this setup — the swap between solvers is scripted and takes about a minute either way.