openvibers/source.openvibe.games Commits

Console cleanup + client-JS crash diagnostics (/Od + eval probe)

CO Copilot committed 2 Jul 2026 · 12b640a09d · 3 files, +16 −2

Console: remove nonexistent cl_threaded_bone_setup (was "Unknown
command"); add sv_lan 1 to stop the repeated "Your server is out of
date" master-heartbeat spam on the local listen server.

Client JS crash: build the clang-cl QuickJS with /Od (no optimization)
to isolate whether the JS_Eval crash is an optimizer miscompile, and add
a trivial "1+1" probe eval before loading hook.js so the flushed log
shows whether ANY eval works or only hook.js fails.

Changes

ddiff --git a/game/openvibe.games/cfg/openvibe_proton_stability.cfg b/game/openvibe.games/cfg/openvibe_proton_stability.cfg
iindex aeb88d0..5428e5d 100644
---- a/game/openvibe.games/cfg/openvibe_proton_stability.cfg
++++ b/game/openvibe.games/cfg/openvibe_proton_stability.cfg
@@@ -8,7 +8,8 @@ echo "==== OpenVibe Proton stability cfg loaded ===="
mat_queue_mode 0
// Disable threaded animation / leaf-system paths that crash under Proton.
--cl_threaded_bone_setup 0
++// (cl_threaded_bone_setup doesn't exist in this engine build — omitted to
++// avoid an "Unknown command" console line.)
cl_threaded_client_leaf_system 0
r_threaded_client_shadow_manager 0
r_queued_ropes 0
@@@ -22,6 +23,11 @@ snd_mute_losefocus 0
mat_dxlevel 90
r_3dsky 0
++// Local dev listen server: sv_lan 1 stops master-server heartbeats, which
++// silences the repeated "Your server is out of date. Please update and
++// restart." (MasterRequestRestart) spam from the older engine build.
++sv_lan 1
++
// Auto-open the custom HTML menu so it covers the stock HL2 main menu (which
// freezes) — this is the menu override. The menu only joins a server on an
// explicit user click, so it won't auto-connect on its own.
ddiff --git a/sdk/openvibe/shared/ovjs_core.c b/sdk/openvibe/shared/ovjs_core.c
iindex d684d60..6902b18 100644
---- a/sdk/openvibe/shared/ovjs_core.c
++++ b/sdk/openvibe/shared/ovjs_core.c
@@@ -295,6 +295,11 @@ OVJSCore *ovjs_create(const OVJSHost *host, int isServerRealm, const char *mode)
OVJS_RegisterBindings(c);
OVJS_Trace(host, "core: bindings registered");
++ /* Probe: does ANY eval work? Distinguishes an interpreter miscompile from a
++ * hook.js-specific problem. */
++ OVJS_Trace(host, "core: probe eval begin");
++ ovjs_eval(c, "var __ovjs_probe = 1 + 1;", "<probe>");
++ OVJS_Trace(host, "core: probe eval done");
if (!OVJS_LoadCoreFiles(c)) { OVJS_Trace(host, "core: LoadCoreFiles FAILED"); ovjs_destroy(c); return NULL; }
OVJS_Trace(host, "core: core files loaded");
OVJS_LoadGamemode(c);
ddiff --git a/tools/build-quickjs-lib-windows.ps1 b/tools/build-quickjs-lib-windows.ps1
iindex 0444f55..7081e8b 100644
---- a/tools/build-quickjs-lib-windows.ps1
++++ b/tools/build-quickjs-lib-windows.ps1
@@@ -250,7 +250,10 @@ if ($ClangCl) {
$Common = @(
'/nologo',
'/TC',
-- '/O2',
++ # Diagnostic: no optimization. QuickJS's interpreter crashed on the first
++ # JS_Eval under clang-cl /O2 despite -fno-strict-aliasing/-fwrapv and switch
++ # dispatch. /Od isolates whether it's an optimizer miscompile.
++ '/Od',
'/MT',
'/W3',
'/D_CRT_SECURE_NO_WARNINGS',