Repository navigation
BUG: Segfault on nightly wheel for Python 3.15.0b4 #32107
Copy link
Copy link
Closed
Labels
Description
Describe the issue:
I'm not sure if this issue is relevant, since I couldn't reproduce it on main.
Anyway, the Python interpreter on version 3.15.0b4 segfaults when importing numpy.random due to null pointer dereference using the nightly wheel numpy-2.6.0.dev0-cp315-cp315-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl available in https://pypi.anaconda.org/scientific-python-nightly-wheels/simple/numpy/.
Reproduce the code example:
import numpy.randomError message:
#0 0x00007bffd59bc33c in __pyx_pymod_exec__common () from /home/alvaro/projects/oss/pandas/.venv315-asan/lib/python3.15/site-packages/numpy/random/_common.cpython-315-x86_64-linux-gnu.so
#1 0x00000000008eb257 in run_exec_func (module=0x7cbff710fa10, exec=0x7bffd59baf8c <__pyx_pymod_exec__common>) at Objects/moduleobject.c:707
#2 PyModule_ExecDef (module=0x7cbff710fa10, def=<optimized out>) at Objects/moduleobject.c:792
#3 0x0000000000efaeb6 in _imp_exec_dynamic_impl (mod=0x7c5ff7574270, module=<optimized out>) at Python/import.c:5563
#4 _imp_exec_dynamic (module=<optimized out>, mod=0x7c5ff7574270) at Python/clinic/import.c.h:517
#5 0x00000000007214bc in _PyVectorcall_Call (tstate=<optimized out>, func=<optimized out>, callable=<optimized out>, tuple=<optimized out>, kwargs=<optimized out>) at Objects/call.c:273
#6 0x0000000000d1e776 in _PyEval_EvalFrameDefault (tstate=<optimized out>, frame=<optimized out>, throwflag=<optimized out>) at Python/generated_cases.c.h:2724
#7 0x0000000000cf1873 in _PyEval_Vector (tstate=<optimized out>, func=<optimized out>, locals=<optimized out>, args=<optimized out>, argcount=<optimized out>, kwnames=0x0) at Python/ceval.c:2153
#8 0x00000000007262c7 in _PyObject_VectorcallTstate (tstate=0x1c396b0 <_PyRuntime+345104>, args=0x7bfff5cf0f20, kwnames=0x0, callable=<optimized out>, nargsf=<optimized out>) at ./Include/internal/pycore_call.h:144
#9 object_vacall (tstate=<optimized out>, base=<optimized out>, callable=<optimized out>, vargs=<optimized out>) at Objects/call.c:823
#10 0x0000000000725adf in PyObject_CallMethodObjArgs (obj=<optimized out>, name=<optimized out>) at Objects/call.c:960
#11 0x0000000000eec24e in import_find_and_load (tstate=0x1c396b0 <_PyRuntime+345104>, abs_name=<optimized out>) at Python/import.c:4130
#12 0x0000000000eeb3c0 in PyImport_ImportModuleLevelObject (name=<optimized out>, globals=<optimized out>, locals=<optimized out>, fromlist=<optimized out>, level=<optimized out>) at ./Include/refcount.h:427
#13 0x0000000000cd90a8 in builtin___import___impl (globals=0x7c5ff7574270, locals=0x1, fromlist=0x7bfff5ae914f, level=-145276112, module=<optimized out>, name=<optimized out>) at Python/bltinmodule.c:286
#14 builtin___import__ (module=<optimized out>, args=<optimized out>, nargs=<optimized out>, kwnames=<optimized out>) at Python/clinic/bltinmodule.c.h:111
#15 0x0000000000722cc8 in _PyObject_VectorcallTstate (tstate=0x1c396b0 <_PyRuntime+345104>, args=0x7bfff5cf0c20, nargsf=5, kwnames=0x0, callable=<optimized out>) at ./Include/internal/pycore_call.h:144
#16 _PyObject_CallFunctionVa (tstate=<optimized out>, callable=0x7c6ff70194c0, format=<optimized out>, va=<optimized out>) at Objects/call.c:552
#17 0x00000000007229f7 in PyObject_CallFunction (callable=<optimized out>, format=<optimized out>) at Objects/call.c:574
#18 0x0000000000ee778a in PyImport_Import (module_name=<optimized out>) at Python/import.c:4717
#19 0x0000000000ee73f7 in PyImport_ImportModule (name=<optimized out>) at Python/import.c:3624
#20 0x00007bffd59fb4b2 in __pyx_pymod_exec_bit_generator () from /home/alvaro/projects/oss/pandas/.venv315-asan/lib/python3.15/site-packages/numpy/random/bit_generator.cpython-315-x86_64-linux-gnu.so
#21 0x00000000008eb257 in run_exec_func (module=0x7cbff710f1d0, exec=0x7bffd59f9db7 <__pyx_pymod_exec_bit_generator>) at Objects/moduleobject.c:707
#22 PyModule_ExecDef (module=0x7cbff710f1d0, def=<optimized out>) at Objects/moduleobject.c:792
#23 0x0000000000efaeb6 in _imp_exec_dynamic_impl (mod=0x7c5ff7574270, module=<optimized out>) at Python/import.c:5563
#24 _imp_exec_dynamic (module=<optimized out>, mod=0x7c5ff7574270) at Python/clinic/import.c.h:517
#25 0x00000000007214bc in _PyVectorcall_Call (tstate=<optimized out>, func=<optimized out>, callable=<optimized out>, tuple=<optimized out>, kwargs=<optimized out>) at Objects/call.c:273
#26 0x0000000000d1e776 in _PyEval_EvalFrameDefault (tstate=<optimized out>, frame=<optimized out>, throwflag=<optimized out>) at Python/generated_cases.c.h:2724
#27 0x0000000000cf1873 in _PyEval_Vector (tstate=<optimized out>, func=<optimized out>, locals=<optimized out>, args=<optimized out>, argcount=<optimized out>, kwnames=0x0) at Python/ceval.c:2153
#28 0x00000000007262c7 in _PyObject_VectorcallTstate (tstate=0x1c396b0 <_PyRuntime+345104>, args=0x7bfff5de5820, kwnames=0x0, callable=<optimized out>, nargsf=<optimized out>) at ./Include/internal/pycore_call.h:144
#29 object_vacall (tstate=<optimized out>, base=<optimized out>, callable=<optimized out>, vargs=<optimized out>) at Objects/call.c:823
#30 0x0000000000725adf in PyObject_CallMethodObjArgs (obj=<optimized out>, name=<optimized out>) at Objects/call.c:960
#31 0x0000000000eec24e in import_find_and_load (tstate=0x1c396b0 <_PyRuntime+345104>, abs_name=<optimized out>) at Python/import.c:4130
#32 0x0000000000eeb3c0 in PyImport_ImportModuleLevelObject (name=<optimized out>, globals=<optimized out>, locals=<optimized out>, fromlist=<optimized out>, level=<optimized out>) at ./Include/refcount.h:427
#33 0x0000000000cd90a8 in builtin___import___impl (globals=0x7c5ff7574270, locals=0x1, fromlist=0x7bfff5ae914f, level=-145276112, module=<optimized out>, name=<optimized out>) at Python/bltinmodule.c:286
#34 builtin___import__ (module=<optimized out>, args=<optimized out>, nargs=<optimized out>, kwnames=<optimized out>) at Python/clinic/bltinmodule.c.h:111
#35 0x0000000000722cc8 in _PyObject_VectorcallTstate (tstate=0x1c396b0 <_PyRuntime+345104>, args=0x7bfff5de5520, nargsf=5, kwnames=0x0, callable=<optimized out>) at ./Include/internal/pycore_call.h:144
#36 _PyObject_CallFunctionVa (tstate=<optimized out>, callable=0x7c6ff70194c0, format=<optimized out>, va=<optimized out>) at Objects/call.c:552
#37 0x00000000007229f7 in PyObject_CallFunction (callable=<optimized out>, format=<optimized out>) at Objects/call.c:574
#38 0x0000000000ee778a in PyImport_Import (module_name=<optimized out>) at Python/import.c:4717
#39 0x0000000000ee73f7 in PyImport_ImportModule (name=<optimized out>) at Python/import.c:3624
#40 0x00007bffd5a2b62e in __pyx_pymod_exec__bounded_integers () from /home/alvaro/projects/oss/pandas/.venv315-asan/lib/python3.15/site-packages/numpy/random/_bounded_integers.cpython-315-x86_64-linux-gnu.so
#41 0x00000000008eb257 in run_exec_func (module=0x7cbff710ee10, exec=0x7bffd5a2aee6 <__pyx_pymod_exec__bounded_integers>) at Objects/moduleobject.c:707
#42 PyModule_ExecDef (module=0x7cbff710ee10, def=<optimized out>) at Objects/moduleobject.c:792
#43 0x0000000000efaeb6 in _imp_exec_dynamic_impl (mod=0x7c5ff7574270, module=<optimized out>) at Python/import.c:5563
#44 _imp_exec_dynamic (module=<optimized out>, mod=0x7c5ff7574270) at Python/clinic/import.c.h:517
#45 0x00000000007214bc in _PyVectorcall_Call (tstate=<optimized out>, func=<optimized out>, callable=<optimized out>, tuple=<optimized out>, kwargs=<optimized out>) at Objects/call.c:273
#46 0x0000000000d1e776 in _PyEval_EvalFrameDefault (tstate=<optimized out>, frame=<optimized out>, throwflag=<optimized out>) at Python/generated_cases.c.h:2724
#47 0x0000000000cf1873 in _PyEval_Vector (tstate=<optimized out>, func=<optimized out>, locals=<optimized out>, args=<optimized out>, argcount=<optimized out>, kwnames=0x0) at Python/ceval.c:2153
#48 0x00000000007262c7 in _PyObject_VectorcallTstate (tstate=0x1c396b0 <_PyRuntime+345104>, args=0x7bfff5dda620, kwnames=0x0, callable=<optimized out>, nargsf=<optimized out>) at ./Include/internal/pycore_call.h:144
#49 object_vacall (tstate=<optimized out>, base=<optimized out>, callable=<optimized out>, vargs=<optimized out>) at Objects/call.c:823
#50 0x0000000000725adf in PyObject_CallMethodObjArgs (obj=<optimized out>, name=<optimized out>) at Objects/call.c:960
#51 0x0000000000eec24e in import_find_and_load (tstate=0x1c396b0 <_PyRuntime+345104>, abs_name=<optimized out>) at Python/import.c:4130
#52 0x0000000000eeb3c0 in PyImport_ImportModuleLevelObject (name=<optimized out>, globals=<optimized out>, locals=<optimized out>, fromlist=<optimized out>, level=<optimized out>) at ./Include/refcount.h:427
#53 0x0000000000cd90a8 in builtin___import___impl (globals=0x7c5ff7574270, locals=0x1, fromlist=0x7bfff5ae914f, level=-145276112, module=<optimized out>, name=<optimized out>) at Python/bltinmodule.c:286
#54 builtin___import__ (module=<optimized out>, args=<optimized out>, nargs=<optimized out>, kwnames=<optimized out>) at Python/clinic/bltinmodule.c.h:111
#55 0x00000000007214bc in _PyVectorcall_Call (tstate=<optimized out>, func=<optimized out>, callable=<optimized out>, tuple=<optimized out>, kwargs=<optimized out>) at Objects/call.c:273
#56 0x0000000000d1e776 in _PyEval_EvalFrameDefault (tstate=<optimized out>, frame=<optimized out>, throwflag=<optimized out>) at Python/generated_cases.c.h:2724
#57 0x0000000000cf1873 in _PyEval_Vector (tstate=<optimized out>, func=<optimized out>, locals=<optimized out>, args=<optimized out>, argcount=<optimized out>, kwnames=0x0) at Python/ceval.c:2153
#58 0x00000000007262c7 in _PyObject_VectorcallTstate (tstate=0x1c396b0 <_PyRuntime+345104>, args=0x7bfff5dd9d20, kwnames=0x0, callable=<optimized out>, nargsf=<optimized out>) at ./Include/internal/pycore_call.h:144
#59 object_vacall (tstate=<optimized out>, base=<optimized out>, callable=<optimized out>, vargs=<optimized out>) at Objects/call.c:823
#60 0x0000000000725adf in PyObject_CallMethodObjArgs (obj=<optimized out>, name=<optimized out>) at Objects/call.c:960
#61 0x0000000000eeb4ef in PyImport_ImportModuleLevelObject (name=name@entry=0x1bf3e08 <_PyRuntime+60264>, globals=globals@entry=0x7c5ff7077890, locals=<optimized out>, fromlist=fromlist@entry=0x7c6ff710d5e0, level=level@entry=1) at Python/import.c:4316
#62 0x0000000000d8fe82 in _PyEval_ImportNameWithImport (tstate=0x1c396b0 <_PyRuntime+345104>, import_func=<optimized out>, globals=<optimized out>, locals=0x7c5ff7077890, name=<optimized out>, fromlist=<optimized out>, level=<optimized out>) at Python/ceval.c:3008
#63 0x0000000000d7cda2 in _PyEval_ImportName (tstate=<optimized out>, builtins=0x7c5ff701a290, globals=<optimized out>, locals=<optimized out>, name=<optimized out>, fromlist=<optimized out>, level=<optimized out>) at Python/ceval.c:2987
#64 0x0000000000d7c33a in _PyEval_LazyImportName (tstate=<optimized out>, builtins=<optimized out>, globals=<optimized out>, locals=<optimized out>, name=<optimized out>, fromlist=<optimized out>, level=<optimized out>, lazy=<optimized out>) at Python/ceval.c:3098
#65 0x0000000000cfb675 in _PyEval_EvalFrameDefault (tstate=<optimized out>, frame=<optimized out>, throwflag=<optimized out>) at Python/generated_cases.c.h:6759
#66 0x0000000000cf0e5f in _PyEval_Vector (tstate=0x1c396b0 <_PyRuntime+345104>, func=0x7ceff71ac730, locals=0x7c5ff7077890, args=0x0, argcount=0, kwnames=0x0) at Python/ceval.c:2153
#67 PyEval_EvalCode (co=<optimized out>, globals=<optimized out>, locals=0x7c5ff7077890) at Python/ceval.c:688
#68 0x0000000000cde26d in builtin_exec_impl (source=0x7d5ff70da580, globals=0x7c5ff7077890, locals=<optimized out>, closure=0x0, module=<optimized out>) at Python/bltinmodule.c:1267
#69 builtin_exec (module=<optimized out>, args=<optimized out>, nargs=<optimized out>, kwnames=<optimized out>) at Python/clinic/bltinmodule.c.h:676
#70 0x00000000007214bc in _PyVectorcall_Call (tstate=<optimized out>, func=<optimized out>, callable=<optimized out>, tuple=<optimized out>, kwargs=<optimized out>) at Objects/call.c:273
#71 0x0000000000d1e776 in _PyEval_EvalFrameDefault (tstate=<optimized out>, frame=<optimized out>, throwflag=<optimized out>) at Python/generated_cases.c.h:2724
#72 0x0000000000cf1873 in _PyEval_Vector (tstate=<optimized out>, func=<optimized out>, locals=<optimized out>, args=<optimized out>, argcount=<optimized out>, kwnames=0x0) at Python/ceval.c:2153
#73 0x00000000007262c7 in _PyObject_VectorcallTstate (tstate=0x1c396b0 <_PyRuntime+345104>, args=0x7bfff5dc3720, kwnames=0x0, callable=<optimized out>, nargsf=<optimized out>) at ./Include/internal/pycore_call.h:144
#74 object_vacall (tstate=<optimized out>, base=<optimized out>, callable=<optimized out>, vargs=<optimized out>) at Objects/call.c:823
#75 0x0000000000725adf in PyObject_CallMethodObjArgs (obj=<optimized out>, name=<optimized out>) at Objects/call.c:960
#76 0x0000000000eec24e in import_find_and_load (tstate=0x1c396b0 <_PyRuntime+345104>, abs_name=<optimized out>) at Python/import.c:4130
#77 0x0000000000eeb3c0 in PyImport_ImportModuleLevelObject (name=name@entry=0x7c5ff729ae40, globals=globals@entry=0x7c5ff70776b0, locals=<optimized out>, fromlist=fromlist@entry=0x18627c0 <_Py_NoneStruct>, level=level@entry=0) at ./Include/refcount.h:427
#78 0x0000000000d8fe82 in _PyEval_ImportNameWithImport (tstate=0x1c396b0 <_PyRuntime+345104>, import_func=<optimized out>, globals=<optimized out>, locals=0x7c5ff70776b0, name=<optimized out>, fromlist=<optimized out>, level=<optimized out>) at Python/ceval.c:3008
#79 0x0000000000d7cda2 in _PyEval_ImportName (tstate=<optimized out>, builtins=0x7c5ff701a290, globals=<optimized out>, locals=<optimized out>, name=<optimized out>, fromlist=<optimized out>, level=<optimized out>) at Python/ceval.c:2987
#80 0x0000000000d7c33a in _PyEval_LazyImportName (tstate=<optimized out>, builtins=<optimized out>, globals=<optimized out>, locals=<optimized out>, name=<optimized out>, fromlist=<optimized out>, level=<optimized out>, lazy=<optimized out>) at Python/ceval.c:3098
#81 0x0000000000cfb675 in _PyEval_EvalFrameDefault (tstate=<optimized out>, frame=<optimized out>, throwflag=<optimized out>) at Python/generated_cases.c.h:6759
#82 0x0000000000cf0e5f in _PyEval_Vector (tstate=0x1c396b0 <_PyRuntime+345104>, func=0x7ceff70de9c0, locals=0x7c5ff70776b0, args=0x0, argcount=0, kwnames=0x0) at Python/ceval.c:2153
#83 PyEval_EvalCode (co=<optimized out>, globals=<optimized out>, locals=0x7c5ff70776b0) at Python/ceval.c:688
#84 0x0000000000fc8467 in run_mod (mod=<optimized out>, filename=<optimized out>, globals=<optimized out>, locals=<optimized out>, flags=<optimized out>, arena=<optimized out>, interactive_src=<optimized out>, generate_new_source=<optimized out>) at Python/pythonrun.c:1501
#85 0x0000000000fc2935 in _PyRun_String (str=<optimized out>, name=0x7c5ff729aae0, start=257, globals=<optimized out>, locals=<optimized out>, flags=<optimized out>, generate_new_source=0) at Python/pythonrun.c:1284
#86 0x0000000000fc264f in _PyRun_SimpleString (command=0x7c5ff729aaa0 "import numpy.random\n", name=name@entry=0x7c5ff729aae0, flags=flags@entry=0x7bfff5dc1660) at Python/pythonrun.c:582
#87 0x0000000001088784 in pymain_run_command (command=<optimized out>) at Modules/main.c:275
#88 pymain_run_python (exitcode=0x7bfff5dc16f0) at Modules/main.c:741
#89 Py_RunMain () at Modules/main.c:837
#90 0x000000000108a677 in pymain_main (args=<optimized out>) at Modules/main.c:867
#91 0x000000000108a8f5 in Py_BytesMain (argc=3, argv=<optimized out>) at Modules/main.c:891
#92 0x00007ffff7c4f681 in __libc_start_call_main () from /lib64/libc.so.6
#93 0x00007ffff7c4f798 in __libc_start_main_impl () from /lib64/libc.so.6
#94 0x0000000000403225 in _start ()Python and NumPy Versions:
2.6.0.dev0+git20260721.e503c0e
3.15.0b4 (main, Jul 24 2026, 22:14:42) [Clang 22.1.8 (Fedora 22.1.8-1.fc44)]
Runtime Environment:
[{'numpy_version': '2.6.0.dev0+git20260721.e503c0e',
'python': '3.15.0b4 (main, Jul 24 2026, 22:14:42) [Clang 22.1.8 (Fedora '
'22.1.8-1.fc44)]',
'uname': uname_result(system='Linux', node='80yh', release='7.1.4-204.fc44.x86_64', version='#1 SMP PREEMPT_DYNAMIC Wed Jul 22 16:25:06 UTC 2026', machine='x86_64')},
{'simd_extensions': {'baseline': ['X86_V2'],
'found': ['X86_V3'],
'not_found': ['X86_V4', 'AVX512_ICL', 'AVX512_SPR']}},
{'ignore_floating_point_errors_in_matmul': False},
{'architecture': 'Haswell',
'filepath': '/home/alvaro/projects/oss/pandas/.venv315-asan/lib/python3.15/site-packages/numpy.libs/libscipy_openblas64_-61654e39.so',
'internal_api': 'openblas',
'num_threads': 4,
'prefix': 'libscipy_openblas',
'threading_layer': 'pthreads',
'user_api': 'blas',
'version': '0.3.34.0.0'}]
How does this issue affect you or how did you find it:
It's causing segfaults in pandas-dev/pandas#66473.
Reactions are currently unavailable
Activity
ngoldbaum commentedon Jul 26, 2026
I think the last NumPy nightly was built using an older CPython beta. There was an ABI change between b3 and b4 and you’re hitting a segfault caused by that ABI change.
The nightly wheel was built with cibuildwheel 4.0.0 and the latest version is 4.1.1 so I guess we need to update the cibuildwheel pin in the nightly wheel job?
https://github.com/numpy/numpy-release/blob/6f27f7564ab0fa4bffcd49b974772893bbea3068/.github/workflows/wheels.yml#L133
ngoldbaum commentedon Jul 26, 2026
Ping @andyfaff FYI
andyfaff commentedon Jul 26, 2026
I've updated the gha hashes. cibuildwheel 4.1.1 was released yesterday. I'm not sure if we'd want a cooldown period.
rgommers commentedon Jul 26, 2026
New nightlies are being built right now.
Alvaro-Kothe commentedon Jul 26, 2026
I downloaded the build artifact and it fixes the issue. Closing this now; looking forward to the new wheels being released.