Repository navigation
Move from MuJoCo 3.14.0 to 3.16 #152
Description
Outcome
ssrobot and its MuJoCo stack run on MuJoCo 3.16 (the current release) instead of exactly 3.14.0.
Rationale
-
MuJoCo 3.14.0 has a memory-corruption bug that 3.15 fixed. Compiling a builtin 2D texture with
nchannel="1"corrupts the heap, and the process later crashes at an unrelated point (SIGSEGV/SIGTRAP). MuJoCo 3.15.0 and later reject the model withbuiltin textures must have 3 channels. Minimal reproduction:import gc, mujoco XML = '<mujoco><asset><texture name="t" type="2d" builtin="checker" width="8" height="8" nchannel="1"/></asset></mujoco>' for _ in range(300): m = mujoco.MjModel.from_xml_string(XML); del m; gc.collect() print("survived") # never printed on 3.14.0; 3.15.0+ raise ValueError instead
-
mj_viser is already verified on 3.16. It supports
mujoco>=3.5. Its CI runs an installed-wheel end-to-end check on MuJoCo 3.5.0 (minimum), 3.14.0 (locked, to match ssrobot), and 3.16.0 (latest) across Python 3.11–3.14. That check compares geometry, poses, colors, and textures against MuJoCo's ownmjv_updateSceneand renderer. -
mj_viser's lock stays at 3.14.0 only because an environment containing ssrobot resolves to ssrobot's exact pin.
Scope
The exact pin originates in sscbirrt: sscbirrt._native_mujoco is built against libmujoco 3.14.0 and refuses any other version (sscbirrt/pyproject.toml, build and test requirements; docs/native-design.md). Upgrading therefore needs:
- An sscbirrt release whose native MuJoCo adapter is built and tested against MuJoCo 3.16. This means updating
build-system.requires,test-requires, themujocoextra, and theauditwheel --exclude libmujoco.so.<version>line. - In ssrobot, moving the
mujoco==3.14.0pins (themujocoextra and the base dependencies) and thesscbirrtrange to that release, and updatingMujocoRuntime's version check at open. - In mj_viser, bumping the lock to the same version afterward.
Non-goals
- Supporting several MuJoCo versions at once in sscbirrt's native adapter.
- Changing planning, runtime, or trace semantics.
Acceptance criteria
- sscbirrt's native MuJoCo module builds, loads, and passes its wheel test against MuJoCo 3.16.
- ssrobot pins that MuJoCo version and the matching sscbirrt release, and its test suite passes.
-
MujocoRuntimeaccepts 3.16 and still refuses a mismatched MuJoCo at open.
Reproducible evidence
ssrobot CI green on the new pins. The reproduction above raises ValueError instead of crashing in the resulting environment.
Activity
siddhss5 commentedon Oct 17, 2026
Blocked on the sscbirrt rebuild and release: personalrobotics/sscbirrt#241