diff --git a/source/isaaclab/changelog.d/jichuanh-pin-numpy-not-2-3-5.rst b/source/isaaclab/changelog.d/jichuanh-pin-numpy-not-2-3-5.rst new file mode 100644 index 000000000000..14d6f415aee2 --- /dev/null +++ b/source/isaaclab/changelog.d/jichuanh-pin-numpy-not-2-3-5.rst @@ -0,0 +1,10 @@ +Fixed +^^^^^ + +* Excluded NumPy 2.3.5 from the install constraint (``numpy>=2,!=2.3.5``). The 2.3.5 + release ships a vendored OpenBLAS (``libscipy_openblas64_-fdde5778.so``) whose + ``pthread_atfork`` handler crashes inside Kit's ``libomni.platforminfo`` ``fork()`` + during ``SimulationApp`` startup, manifesting as non-deterministic SIGSEGV in CI + test jobs. See `numpy#30092 `_ and + ``OMPE-92261``. With this change pip resolves to NumPy 2.3.4, which ships a + different OpenBLAS bundle without the regression. diff --git a/source/isaaclab/setup.py b/source/isaaclab/setup.py index 1f3be503574e..a6f3e2dc87fb 100644 --- a/source/isaaclab/setup.py +++ b/source/isaaclab/setup.py @@ -18,7 +18,11 @@ # Minimum dependencies required prior to installation INSTALL_REQUIRES = [ # generic - "numpy>=2", + # !=2.3.5 dodges the broken OpenBLAS bundle (libscipy_openblas64_-fdde5778.so) + # whose pthread_atfork handler SIGSEGVs inside Kit's libomni.platforminfo fork() + # during CI startup. See numpy/numpy#30092 and OMPE-92261. The pin-pink -> + # pinocchio -> cmeel-boost transitive constraint already caps numpy <2.4. + "numpy>=2,!=2.3.5", "torch>=2.10", "onnx>=1.18.0", # 1.16.2 throws access violation on Windows "prettytable==3.3.0", diff --git a/source/isaaclab_rl/changelog.d/jichuanh-pin-numpy-not-2-3-5.rst b/source/isaaclab_rl/changelog.d/jichuanh-pin-numpy-not-2-3-5.rst new file mode 100644 index 000000000000..ece20feff3db --- /dev/null +++ b/source/isaaclab_rl/changelog.d/jichuanh-pin-numpy-not-2-3-5.rst @@ -0,0 +1,6 @@ +Fixed +^^^^^ + +* Tightened the NumPy install constraint to ``numpy>=2,!=2.3.5`` (was unconstrained) + to keep the package consistent with :file:`isaaclab/setup.py` and avoid the + OpenBLAS at-fork SIGSEGV. diff --git a/source/isaaclab_rl/setup.py b/source/isaaclab_rl/setup.py index 53255aa55b4f..5595bf22a659 100644 --- a/source/isaaclab_rl/setup.py +++ b/source/isaaclab_rl/setup.py @@ -19,7 +19,8 @@ # Minimum dependencies required prior to installation INSTALL_REQUIRES = [ # generic - "numpy", + # !=2.3.5 dodges the broken OpenBLAS bundle; see source/isaaclab/setup.py. + "numpy>=2,!=2.3.5", "torch>=2.10", "torchvision>=0.25.0", # ensure compatibility with torch 2.10.0 "protobuf>=4.25.8,!=5.26.0", diff --git a/source/isaaclab_tasks/changelog.d/jichuanh-pin-numpy-not-2-3-5.rst b/source/isaaclab_tasks/changelog.d/jichuanh-pin-numpy-not-2-3-5.rst new file mode 100644 index 000000000000..c4855e22d803 --- /dev/null +++ b/source/isaaclab_tasks/changelog.d/jichuanh-pin-numpy-not-2-3-5.rst @@ -0,0 +1,6 @@ +Fixed +^^^^^ + +* Excluded NumPy 2.3.5 from the install constraint (``numpy>=2,!=2.3.5``) to match + :file:`isaaclab/setup.py` and avoid the OpenBLAS at-fork SIGSEGV during Kit + startup. diff --git a/source/isaaclab_tasks/setup.py b/source/isaaclab_tasks/setup.py index a719231ca986..18ca266aca73 100644 --- a/source/isaaclab_tasks/setup.py +++ b/source/isaaclab_tasks/setup.py @@ -18,7 +18,8 @@ # Minimum dependencies required prior to installation INSTALL_REQUIRES = [ # generic - "numpy>=2", + # !=2.3.5 dodges the broken OpenBLAS bundle; see source/isaaclab/setup.py. + "numpy>=2,!=2.3.5", "torch>=2.10", "torchvision>=0.25.0", # ensure compatibility with torch 2.10.0 "protobuf>=4.25.8,!=5.26.0", diff --git a/source/isaaclab_visualizers/changelog.d/jichuanh-pin-numpy-not-2-3-5.rst b/source/isaaclab_visualizers/changelog.d/jichuanh-pin-numpy-not-2-3-5.rst new file mode 100644 index 000000000000..ece20feff3db --- /dev/null +++ b/source/isaaclab_visualizers/changelog.d/jichuanh-pin-numpy-not-2-3-5.rst @@ -0,0 +1,6 @@ +Fixed +^^^^^ + +* Tightened the NumPy install constraint to ``numpy>=2,!=2.3.5`` (was unconstrained) + to keep the package consistent with :file:`isaaclab/setup.py` and avoid the + OpenBLAS at-fork SIGSEGV. diff --git a/source/isaaclab_visualizers/setup.py b/source/isaaclab_visualizers/setup.py index 008fe15c8d6c..aaa146dcf5cd 100644 --- a/source/isaaclab_visualizers/setup.py +++ b/source/isaaclab_visualizers/setup.py @@ -10,7 +10,8 @@ # Base requirements shared across visualizer backends. INSTALL_REQUIRES = [ "isaaclab", - "numpy", + # !=2.3.5 dodges the broken OpenBLAS bundle; see source/isaaclab/setup.py. + "numpy>=2,!=2.3.5", ] # Every Newton declaration in the repo must use the SAME extra spec (`newton[sim]`).