You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
[Fix] Force numpy>=2.4.1 in --install and Dockerfile.curobo
The setup.py constraint "numpy>=2,!=2.3.5" landed in isaac-sim#5642 is silently
overridden during isaaclab.sh --install: each pip install -e <submodule>
runs an independent resolve, and the final pin-pink force-reinstall in
_ensure_pink_ik_dependencies_installed lands on numpy 2.3.5 because pip
sees only pin-pink's own deps (numpy>=1.19) plus cmeel-boost's numpy<2.4
cap. numpy 2.3.5 ships a vendored OpenBLAS
(libscipy_openblas64_-fdde5778.so) whose pthread_atfork handler crashes
Kit's libomni.platforminfo fork() during SimulationApp startup.
Two changes, both restating an explicit "pip install --upgrade
numpy>=2.4.1" as the *last* pip invocation in each install path:
1. _ensure_numpy_above_openblas_atfork_bug() in install.py — runs
unconditionally at the end of --install (not gated by the pink-ik
probe outcome), so upgrades on an already-functioning env also
pull numpy forward.
2. Dockerfile.curobo — apply the same upgrade after its post-install
steps (nvidia-curobo + isaaclab_teleop editable install), which
otherwise drag numpy back to 2.3.5 via dex-retargeting -> pin ->
cmeel-boost.
pip prints a resolver warning about cmeel-boost's cap then installs
numpy 2.4.5 anyway. numpy 2.4.1+ ships the upstream OpenBLAS atfork
fix, so the entire 2.3.x risk class is bypassed. numpy's stable C
ABI keeps cmeel's compiled extensions (libpinocchio, libcoal, ...)
working at runtime.
Validated:
- env_isaaclab_test smoke test (numpy 2.4.5 + cmeel pinocchio + pink +
daqp + qpsolvers all import; toy IK solve OK).
- IsaacLab Pink IK unit tests: 54/54 pass against numpy 2.4.5
(test_pink_ik_components 21/21, test_local_frame_task 24/24,
test_null_space_posture_task 9/9).
- PR isaac-sim#5655 (validation): every base-image test job reports numpy 2.4.5
+ openblas -32a4b2a6 (clean, not the broken -fdde5778). Worst-case
import order (numpy imported before pytest spawns Kit) also passes —
confirming the upstream atfork fix is real, not just dodge-by-order.
Related: numpy/numpy#30092, OpenMathLib/OpenBLAS#5520
0 commit comments