Skip to content

BUG: Segfault on nightly wheel for Python 3.15.0b4 #32107

Closed

Description

@Alvaro-Kothe

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.random

Error 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.

Activity

  1. ngoldbaum commented on Jul 26, 2026

    @ngoldbaum
    Member

    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

  2. ngoldbaum commented on Jul 26, 2026

    @ngoldbaum
    Member

    Ping @andyfaff FYI

  3. andyfaff commented on Jul 26, 2026

    @andyfaff
    Member

    I've updated the gha hashes. cibuildwheel 4.1.1 was released yesterday. I'm not sure if we'd want a cooldown period.

  4. rgommers commented on Jul 26, 2026

    @rgommers
    Member

    New nightlies are being built right now.

  5. Alvaro-Kothe commented on Jul 26, 2026

    @Alvaro-Kothe
    Author

    I downloaded the build artifact and it fixes the issue. Closing this now; looking forward to the new wheels being released.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions