python-crick fails to build with Python 3.14.0b1. This report is automated and not very verbose, but we'll try to get back here with details. crick/tests/test_space_saving.py::test_merge_algorithm[s111-s211] Fatal Python error: Segmentation fault https://docs.python.org/3.14/whatsnew/3.14.html For the build logs, see: https://copr-be.cloud.fedoraproject.org/results/@python/python3.14-b1/fedora-rawhide-x86_64/09062430-python-crick/ For all our attempts to build python-crick with Python 3.14, see: https://copr.fedorainfracloud.org/coprs/g/python/python3.14-b1/package/python-crick/ Testing and mass rebuild of packages is happening in copr. You can follow these instructions to test locally in mock if your package builds with Python 3.14: https://copr.fedorainfracloud.org/coprs/g/python/python3.14-b1/ Let us know here if you have any questions. Python 3.14 is planned to be included in Fedora 43. To make that update smoother, we're building Fedora packages with all pre-releases of Python 3.14. A build failure prevents us from testing all dependent packages (transitive [Build]Requires), so if this package is required a lot, it's important for us to get it fixed soon. We'd appreciate help from the people who know this package best, but if you don't want to work on this now, let us know so we can try to work around it on our side.
*** Bug 2371847 has been marked as a duplicate of this bug. ***
The full trasceback with debug symbols is: (gdb) bt full #0 _PyFreeList_PopNoStats (fl=<optimized out>) at /usr/src/debug/python3.14-3.14.0~b2-3.fc43.x86_64/Include/internal/pycore_freelist.h:79 obj = 0xffffffff #1 _PyFreeList_Pop (fl=<optimized out>) at /usr/src/debug/python3.14-3.14.0~b2-3.fc43.x86_64/Include/internal/pycore_freelist.h:88 op = <optimized out> #2 PyFloat_FromDouble (fval=0.00040049338713288307) at /usr/src/debug/python3.14-3.14.0~b2-3.fc43.x86_64/Objects/floatobject.c:126 op = <optimized out> #3 _PyFloat_FromDouble_ConsumeInputs (left=..., right=..., value=<optimized out>) at /usr/src/debug/python3.14-3.14.0~b2-3.fc43.x86_64/Objects/floatobject.c:142 No locals. #4 0x00007ffff79701bb in _PyEval_EvalFrameDefault (tstate=0x7ffff7da61f8 <_PyRuntime+315512>, frame=0x7ffff7e1fe20, throwflag=-798002704) at /usr/src/debug/python3.14-3.14.0~b2-3.fc43.x86_64/Python/generated_cases.c.h:1036 left_o = <optimized out> right_o = <optimized out> dres = 0.00040049338713288307 value = <optimized out> this_instr = <optimized out> left = <optimized out> right = <optimized out> res = <optimized out> opcode = <optimized out> oparg = 10 entry = {frame = {f_executable = {bits = 140737351188993}, previous = 0x7ffff7e1f8e0, f_funcobj = {bits = 93824994576032}, f_globals = 0x7fff00000001, f_builtins = 0x1, f_locals = 0x1, frame_obj = 0x7ffff7144040, instr_ptr = 0x7ffff7c1a202 <_Py_INTERPRETER_TRAMPOLINE_INSTRUCTIONS+2>, stackpointer = 0x7fffffffcb38, return_offset = 0, owner = 3 '\003', visited = 0 '\000', localsplus = {{bits = 1}}}, stack = {{bits = 1}}} next_instr = <optimized out> stack_pointer = <optimized out> exception_unwind = <optimized out> enter_tier_two = <optimized out> dying = <optimized out> __func__ = "_PyEval_EvalFrameDefault" opcode_targets = {...} word = <optimized out> word = <optimized out> #5 0x00007ffff7968b85 in _PyEval_EvalFrame (tstate=0x7ffff7da61f8 <_PyRuntime+315512>, frame=0x7ffff7e1f980, throwflag=0) at /usr/src/debug/python3.14-3.14.0~b2-3.fc43.x86_64/Include/internal/pycore_ceval.h:119 No locals. #6 _PyEval_Vector (tstate=0x7ffff7da61f8 <_PyRuntime+315512>, func=<optimized out>, locals=<optimized out>, args=<optimized out>, argcount=<optimized out>, kwnames=<optimized out>) at /usr/src/debug/python3.14-3.14.0~b2-3.fc43.x86_64/Python/ceval.c:1961 total_args = 3 stack_array = {{bits = 140737329299376}, {bits = 140736690128464}, {bits = 140736690128976}, {bits = 140737347445669}, {bits = 140737488342160}, {bits = 140737347133224}, {bits = 140737334227744}, {bits = 140737334227744}} arguments = 0x7fffffffcbe0 frame = 0x7ffff7e1f980 #7 0x00007ffff7a53fa0 in _PyFunction_Vectorcall (func=0x7ffff7144040, stack=0x7ffff673a818, nargsf=9223372036854775809, kwnames=0x7fffd0069780) at /usr/src/debug/python3.14-3.14.0~b2-3.fc43.x86_64/Objects/call.c:413 f = 0x7ffff7144040 nargs = 1 tstate = <optimized out> #8 _PyObject_VectorcallDictTstate (tstate=0x7ffff7da61f8 <_PyRuntime+315512>, callable=0x7ffff7144040, args=<optimized out>, nargsf=1, kwargs=<optimized out>) at /usr/src/debug/python3.14-3.14.0~b2-3.fc43.x86_64/Objects/call.c:146 kwnames = 0x7fffd0069780 newargs = 0x7ffff673a818 nargs = <optimized out> func = 0x7ffff799e120 <_PyFunction_Vectorcall> res = <optimized out> #9 0x00007ffff7aaee76 in _PyObject_Call_Prepend (tstate=0x7ffff7da61f8 <_PyRuntime+315512>, callable=0x7ffff7144040, obj=0x7ffff684ffb0, args=0x7ffff7d6f308 <_PyRuntime+90504>, kwargs=0x7fffd020b8c0) at /usr/src/debug/python3.14-3.14.0~b2-3.fc43.x86_64/Objects/call.c:504 small_stack = {0x7ffff684ffb0, 0x7ffff684ffb0, 0x7fffffffcd60, 0x7ffff798d14e <_PyDict_FromItems.constprop.0+366>, 0x7ffff684ffb0} stack = 0x7fffffffcd00 argcount = 0 result = <optimized out> #10 call_method (self=0x7ffff684ffb0, attr=<optimized out>, args=0x7ffff7d6f308 <_PyRuntime+90504>, kwds=0x7fffd020b8c0) at /usr/src/debug/python3.14-3.14.0~b2-3.fc43.x86_64/Objects/typeobject.c:2919 meth = 0x7ffff7144040 tstate = 0x7ffff7da61f8 <_PyRuntime+315512> cref = <optimized out> res = 0x0 unbound = <optimized out> #11 slot_tp_call (self=0x7ffff684ffb0, args=0x7ffff7d6f308 <_PyRuntime+90504>, kwds=0x7fffd020b8c0) at /usr/src/debug/python3.14-3.14.0~b2-3.fc43.x86_64/Objects/typeobject.c:10181 No locals. #12 0x00007ffff795447c in _PyObject_MakeTpCall (tstate=0x7ffff7da61f8 <_PyRuntime+315512>, callable=0x7ffff684ffb0, args=0x7fffffffcfc8, nargs=<optimized out>, keywords=<optimized out>) at /usr/src/debug/python3.14-3.14.0~b2-3.fc43.x86_64/Objects/call.c:242 call = <optimized out> argstuple = <optimized out> kwdict = <optimized out> result = 0x0 #13 0x00007ffff797227a in _PyEval_EvalFrameDefault (tstate=0x7ffff7da61f8 <_PyRuntime+315512>, frame=0x7ffff7e1f8e0, throwflag=-798002704) at /usr/src/debug/python3.14-3.14.0~b2-3.fc43.x86_64/Python/generated_cases.c.h:3227 arguments = 0xffffffff kwnames_o = <optimized out> callable_o = <optimized out> res_o = <optimized out> tmp = {bits = 140736690352625} tmp = <optimized out> total_args = -798002704 args_o_temp = {0x7ffff66a8350, 0x7fffd06c0650, 0x7fffd06c0850, 0x7ffff7d256c0 <_Py_FalseStruct>, 0x0, 0x1, 0x1, 0x7ffff7115c60, 0x7fffffffd0c0, 0x7ffff796b7b8 <initialize_locals+984>, 0x7ffff625fb80} args_o = <optimized out> positional_args = -798002704 _i = <optimized out> callable = <optimized out> self_or_null = <optimized out> this_instr = <optimized out> args = 0x7ffff7e1f968 kwnames = <optimized out> res = <optimized out> opcode = <optimized out> oparg = 10 entry = {frame = {f_executable = {bits = 140737351188993}, previous = 0x7ffff7e1f5e0, f_funcobj = {bits = 93824994576032}, f_globals = 0x7fff00000001, f_builtins = 0x1, f_locals = 0x1, frame_obj = 0x7ffff7144040, instr_ptr = 0x7ffff7c1a202 <_Py_INTERPRETER_TRAMPOLINE_INSTRUCTIONS+2>, stackpointer = 0x7fffffffd078, return_offset = 0, owner = 3 '\003', visited = 0 '\000', localsplus = {{bits = 1}}}, stack = {{bits = 1}}} next_instr = <optimized out> stack_pointer = <optimized out> exception_unwind = <optimized out> enter_tier_two = <optimized out> dying = <optimized out> __func__ = "_PyEval_EvalFrameDefault" opcode_targets = {...} word = <optimized out> word = <optimized out> #14 0x00007ffff7968b85 in _PyEval_EvalFrame (tstate=0x7ffff7da61f8 <_PyRuntime+315512>, frame=0x7ffff7e1f660, throwflag=0) at /usr/src/debug/python3.14-3.14.0~b2-3.fc43.x86_64/Include/internal/pycore_ceval.h:119 No locals. #15 _PyEval_Vector (tstate=0x7ffff7da61f8 <_PyRuntime+315512>, func=<optimized out>, locals=<optimized out>, args=<optimized out>, argcount=<optimized out>, kwnames=<optimized out>) at /usr/src/debug/python3.14-3.14.0~b2-3.fc43.x86_64/Python/ceval.c:1961 total_args = 2 stack_array = {{bits = 140737329463520}, {bits = 140737327563600}, {bits = 1}, {bits = 8091417940339733504}, {bits = 140737488343504}, {bits = 140737351672312}, {bits = 140737334227744}, {bits = 140737334227744}} arguments = 0x7fffffffd120 frame = 0x7ffff7e1f660 #16 0x00007ffff7a53fa0 in _PyFunction_Vectorcall (func=0x7ffff7144040, stack=0x7fffd093b598, nargsf=9223372036854775809, kwnames=0x7ffff625fb80) at /usr/src/debug/python3.14-3.14.0~b2-3.fc43.x86_64/Objects/call.c:413 f = 0x7ffff7144040 nargs = 1 tstate = <optimized out> #17 _PyObject_VectorcallDictTstate (tstate=0x7ffff7da61f8 <_PyRuntime+315512>, callable=0x7ffff7144040, args=<optimized out>, nargsf=1, kwargs=<optimized out>) at /usr/src/debug/python3.14-3.14.0~b2-3.fc43.x86_64/Objects/call.c:146 kwnames = 0x7ffff625fb80 newargs = 0x7fffd093b598 nargs = <optimized out> func = 0x7ffff799e120 <_PyFunction_Vectorcall> res = <optimized out> #18 0x00007ffff7aaee76 in _PyObject_Call_Prepend (tstate=0x7ffff7da61f8 <_PyRuntime+315512>, callable=0x7ffff7144040, obj=0x7ffff68780e0, args=0x7ffff7d6f308 <_PyRuntime+90504>, kwargs=0x7ffff6281dc0) at /usr/src/debug/python3.14-3.14.0~b2-3.fc43.x86_64/Objects/call.c:504 small_stack = {0x7ffff68780e0, 0x7fffffffd508, 0x7fffffffd2a0, 0x7ffff798d14e <_PyDict_FromItems.constprop.0+366>, 0x7fffffffd290} stack = 0x7fffffffd240 argcount = 0 result = <optimized out> #19 call_method (self=0x7ffff68780e0, attr=<optimized out>, args=0x7ffff7d6f308 <_PyRuntime+90504>, kwds=0x7ffff6281dc0) at /usr/src/debug/python3.14-3.14.0~b2-3.fc43.x86_64/Objects/typeobject.c:2919 meth = 0x7ffff7144040 tstate = 0x7ffff7da61f8 <_PyRuntime+315512> cref = <optimized out> res = 0x0 unbound = <optimized out> #20 slot_tp_call (self=0x7ffff68780e0, args=0x7ffff7d6f308 <_PyRuntime+90504>, kwds=0x7ffff6281dc0) at /usr/src/debug/python3.14-3.14.0~b2-3.fc43.x86_64/Objects/typeobject.c:10181 No locals. #21 0x00007ffff795447c in _PyObject_MakeTpCall (tstate=0x7ffff7da61f8 <_PyRuntime+315512>, callable=0x7ffff68780e0, args=0x7fffffffd508, nargs=<optimized out>, keywords=<optimized out>) at /usr/src/debug/python3.14-3.14.0~b2-3.fc43.x86_64/Objects/call.c:242 call = <optimized out> argstuple = <optimized out> kwdict = <optimized out> result = 0x0 #22 0x00007ffff797b194 in _PyEval_EvalFrameDefault (tstate=0x7ffff7da61f8 <_PyRuntime+315512>, frame=0x7ffff7e1f5e0, throwflag=-798002704) at /usr/src/debug/python3.14-3.14.0~b2-3.fc43.x86_64/Python/generated_cases.c.h:2959 callable_o = <optimized out> total_args = -136907912 err = <optimized out> arguments = 0x7fffd06f71f1 args_o_temp = {0x7ffff650b620, 0x7ffff66a8350, 0x7ffff6f28a70, 0x7ffff69474d0, 0x7ffff7d30200 <_Py_NoneStruct>, 0x7ffff7d30200 <_Py_NoneStruct>, 0x555555732f80, 0x7ffff7d256c0 <_Py_FalseStruct>, 0x7ffff71c9490, 0x7ffff796b7b8 <initialize_locals+984>, 0x7ffff672d640} args_o = <optimized out> arg = <optimized out> op = <optimized out> tracer = <optimized out> tmp = {bits = 140736690352625} _tmp_op_ptr = <optimized out> data = <optimized out> _i = <optimized out> kwnames_o = <optimized out> positional_args = -136998528 res_o = <optimized out> _tmp_old_op = <optimized out> dealloc = <optimized out> callable = <optimized out> self_or_null = <optimized out> this_instr = 0x1 args = <optimized out> kwnames = <optimized out> res = <optimized out> opcode = <optimized out> oparg = 10 entry = {frame = {f_executable = {bits = 140737351188993}, previous = 0x7ffff7e1f130, f_funcobj = {bits = 93824994576032}, f_globals = 0x7fff00000001, f_builtins = 0x1, f_locals = 0x1, frame_obj = 0x7ffff7144040, instr_ptr = 0x7ffff7c1a202 <_Py_INTERPRETER_TRAMPOLINE_INSTRUCTIONS+2>, stackpointer = 0x7fffffffd5b8, return_offset = 0, owner = 3 '\003', visited = 0 '\000', localsplus = {{bits = 1}}}, stack = {{bits = 1}}} next_instr = <optimized out> stack_pointer = <optimized out> exception_unwind = <optimized out> enter_tier_two = <optimized out> dying = <optimized out> __func__ = "_PyEval_EvalFrameDefault" opcode_targets = {...} word = <optimized out> word = <optimized out> #23 0x00007ffff7968b85 in _PyEval_EvalFrame (tstate=0x7ffff7da61f8 <_PyRuntime+315512>, frame=0x7ffff7e1f218, throwflag=0) at /usr/src/debug/python3.14-3.14.0~b2-3.fc43.x86_64/Include/internal/pycore_ceval.h:119 No locals. #24 _PyEval_Vector (tstate=0x7ffff7da61f8 <_PyRuntime+315512>, func=<optimized out>, locals=<optimized out>, args=<optimized out>, argcount=<optimized out>, kwnames=<optimized out>) at /usr/src/debug/python3.14-3.14.0~b2-3.fc43.x86_64/Python/ceval.c:1961 total_args = 2 stack_array = {{bits = 140737329294576}, {bits = 140737329238032}, {bits = 1}, {bits = 140737351447416}, {bits = 140737351493136}, {bits = 140737351394600}, {bits = 1}, {bits = 140737488345672}} arguments = 0x7fffffffd660 frame = 0x7ffff7e1f218 #25 0x00007ffff7a53fa0 in _PyFunction_Vectorcall (func=0x7ffff7144040, stack=0x7ffff66d0cb8, nargsf=9223372036854775809, kwnames=0x7ffff672d640) at /usr/src/debug/python3.14-3.14.0~b2-3.fc43.x86_64/Objects/call.c:413 f = 0x7ffff7144040 nargs = 1 tstate = <optimized out> #26 _PyObject_VectorcallDictTstate (tstate=0x7ffff7da61f8 <_PyRuntime+315512>, callable=0x7ffff7144040, args=<optimized out>, nargsf=1, kwargs=<optimized out>) at /usr/src/debug/python3.14-3.14.0~b2-3.fc43.x86_64/Objects/call.c:146 kwnames = 0x7ffff672d640 newargs = 0x7ffff66d0cb8 nargs = <optimized out> func = 0x7ffff799e120 <_PyFunction_Vectorcall> res = <optimized out> #27 0x00007ffff7aaee76 in _PyObject_Call_Prepend (tstate=0x7ffff7da61f8 <_PyRuntime+315512>, callable=0x7ffff7144040, obj=0x7ffff684ecf0, args=0x7ffff7d6f308 <_PyRuntime+90504>, kwargs=0x7ffff672e180) at /usr/src/debug/python3.14-3.14.0~b2-3.fc43.x86_64/Objects/call.c:504 small_stack = {0x7ffff684ecf0, 0x7fffffffda48, 0x7fffffffd7e0, 0x7ffff798d14e <_PyDict_FromItems.constprop.0+366>, 0x7fffffffd7d0} stack = 0x7fffffffd780 argcount = 0 result = <optimized out> #28 call_method (self=0x7ffff684ecf0, attr=<optimized out>, args=0x7ffff7d6f308 <_PyRuntime+90504>, kwds=0x7ffff672e180) at /usr/src/debug/python3.14-3.14.0~b2-3.fc43.x86_64/Objects/typeobject.c:2919 meth = 0x7ffff7144040 tstate = 0x7ffff7da61f8 <_PyRuntime+315512> cref = <optimized out> res = 0x0 unbound = <optimized out> #29 slot_tp_call (self=0x7ffff684ecf0, args=0x7ffff7d6f308 <_PyRuntime+90504>, kwds=0x7ffff672e180) at /usr/src/debug/python3.14-3.14.0~b2-3.fc43.x86_64/Objects/typeobject.c:10181 No locals. #30 0x00007ffff795447c in _PyObject_MakeTpCall (tstate=0x7ffff7da61f8 <_PyRuntime+315512>, callable=0x7ffff684ecf0, args=0x7fffffffda48, nargs=<optimized out>, keywords=<optimized out>) at /usr/src/debug/python3.14-3.14.0~b2-3.fc43.x86_64/Objects/call.c:242 call = <optimized out> argstuple = <optimized out> kwdict = <optimized out> result = 0x0 #31 0x00007ffff797b194 in _PyEval_EvalFrameDefault (tstate=0x7ffff7da61f8 <_PyRuntime+315512>, frame=0x7ffff7e1f130, throwflag=-798002704) at /usr/src/debug/python3.14-3.14.0~b2-3.fc43.x86_64/Python/generated_cases.c.h:2959 callable_o = <optimized out> total_args = -136907912 err = <optimized out> arguments = 0x7fffd06f71f1 args_o_temp = {0x7ffff66dba60, 0x7ffff6841010, 0x7ffff75e4f40, 0x7ffff66f3080, 0x7ffff7d30200 <_Py_NoneStruct>, 0x7ffff7d30200 <_Py_NoneStruct>, 0x555555732f80, 0x7ffff7d256c0 <_Py_FalseStruct>, 0x7ffff71c9490, 0x7ffff75299b0, 0x0} args_o = <optimized out> arg = <optimized out> op = <optimized out> tracer = <optimized out> tmp = {bits = 140736690352625} _tmp_op_ptr = <optimized out> data = <optimized out> _i = <optimized out> kwnames_o = <optimized out> positional_args = -136998528 res_o = <optimized out> _tmp_old_op = <optimized out> dealloc = <optimized out> callable = <optimized out> self_or_null = <optimized out> this_instr = 0x1 args = <optimized out> kwnames = <optimized out> res = <optimized out> opcode = <optimized out> oparg = 10 entry = {frame = {f_executable = {bits = 140737351188993}, previous = 0x0, f_funcobj = {bits = 140737488345824}, f_globals = 0x7ffff768dad8 <_int_free_create_chunk+136>, f_builtins = 0x7ffff7da61f8 <_PyRuntime+315512>, f_locals = 0x1fd, frame_obj = 0x7fffffffdb00, instr_ptr = 0x7ffff7c1a202 <_Py_INTERPRETER_TRAMPOLINE_INSTRUCTIONS+2>, stackpointer = 0x7fffffffdaf8, return_offset = 0, owner = 3 '\003', visited = 0 '\000', localsplus = {{bits = 1}}}, stack = {{bits = 1}}} next_instr = <optimized out> stack_pointer = <optimized out> exception_unwind = <optimized out> enter_tier_two = <optimized out> dying = <optimized out> __func__ = "_PyEval_EvalFrameDefault" opcode_targets = {...} word = <optimized out> word = <optimized out> #32 0x00007ffff7968b85 in _PyEval_EvalFrame (tstate=0x7ffff7da61f8 <_PyRuntime+315512>, frame=0x7ffff7e1f020, throwflag=0) at /usr/src/debug/python3.14-3.14.0~b2-3.fc43.x86_64/Include/internal/pycore_ceval.h:119 No locals. #33 _PyEval_Vector (tstate=0x7ffff7da61f8 <_PyRuntime+315512>, func=<optimized out>, locals=<optimized out>, args=<optimized out>, argcount=<optimized out>, kwnames=<optimized out>) at /usr/src/debug/python3.14-3.14.0~b2-3.fc43.x86_64/Python/ceval.c:1961 total_args = 0 stack_array = {{bits = 140737488346080}, {bits = 140737347104513}, {bits = 140737341557904}, {bits = 8091417940339733504}, {bits = 140737351398568}, {bits = 140737488346160}, {bits = 140737341701952}, {bits = 140737351672312}} arguments = 0x7fffffffdba0 frame = 0x7ffff7e1f020 #34 0x00007ffff7a55f57 in PyEval_EvalCode (co=0x7ffff754d3b0, globals=<optimized out>, locals=0x7ffff7423f40) at /usr/src/debug/python3.14-3.14.0~b2-3.fc43.x86_64/Python/ceval.c:853 tstate = 0x7ffff7da61f8 <_PyRuntime+315512> builtins = 0x7ffff75b1e80 desc = {fc_globals = 0x7ffff7423f40, fc_builtins = 0x7ffff75b1e80, fc_name = 0x7ffff7d61a20 <_PyRuntime+34976>, fc_qualname = 0x7ffff7d61a20 <_PyRuntime+34976>, fc_code = 0x7ffff754d3b0, fc_defaults = 0x0, fc_kwdefaults = 0x0, fc_closure = 0x0} func = 0x7ffff741b3d0 res = <optimized out> #35 0x00007ffff7a95867 in run_mod (mod=mod@entry=0x555555679980, filename=filename@entry=0x7ffff748edb0, globals=globals@entry=0x7ffff7423f40, locals=locals@entry=0x7ffff7423f40, flags=flags@entry=0x7fffffffde98, arena=arena@entry=0x7ffff752bc90, interactive_src=0x0, generate_new_source=0) at /usr/src/debug/python3.14-3.14.0~b2-3.fc43.x86_64/Python/pythonrun.c:1436 tstate = 0x7ffff7da61f8 <_PyRuntime+315512> interactive_filename = <optimized out> co = 0x7ffff754d3b0 v = <optimized out> #36 0x00007ffff7a9640a in pyrun_file (fp=fp@entry=0x5555555582e0, filename=filename@entry=0x7ffff748edb0, start=start@entry=257, globals=globals@entry=0x7ffff7423f40, locals=locals@entry=0x7ffff7423f40, closeit=closeit@entry=1, flags=0x7fffffffde98) at /usr/src/debug/python3.14-3.14.0~b2-3.fc43.x86_64/Python/pythonrun.c:1293 arena = 0x7ffff752bc90 mod = <optimized out> ret = <optimized out> #37 0x00007ffff7a95244 in _PyRun_SimpleFileObject (fp=fp@entry=0x5555555582e0, filename=filename@entry=0x7ffff748edb0, closeit=closeit@entry=1, flags=flags@entry=0x7fffffffde98) at /usr/src/debug/python3.14-3.14.0~b2-3.fc43.x86_64/Python/pythonrun.c:521 ret = <optimized out> main_module = 0x7ffff740e390 dict = 0x7ffff7423f40 set_file_name = 1 has_file = <optimized out> pyc = <optimized out> v = <optimized out> #38 0x00007ffff7a95065 in _PyRun_AnyFileObject (fp=0x5555555582e0, filename=0x7ffff748edb0, closeit=1, flags=0x7fffffffde98) at /usr/src/debug/python3.14-3.14.0~b2-3.fc43.x86_64/Python/pythonrun.c:81 decref_filename = 0 res = <optimized out> #39 0x00007ffff7a4ae60 in pymain_run_file_obj (program_name=0x7ffff748edf0, filename=0x7ffff748edb0, skip_source_first_line=0) at /usr/src/debug/python3.14-3.14.0~b2-3.fc43.x86_64/Modules/main.c:410 fp = <optimized out> sb = {st_dev = 41, st_ino = 27308020, st_nlink = 1, st_mode = 33261, st_uid = 0, st_gid = 0, __pad0 = 0, st_rdev = 0, st_size = 225, st_blksize = 4096, st_blocks = 8, st_atim = {tv_sec = 1749685365, tv_nsec = 744935796}, st_mtim = {tv_sec = 1748822400, tv_nsec = 0}, st_ctim = {tv_sec = 1749685249, tv_nsec = 875740228}, __glibc_reserved = {0, 0, 0}} cf = {cf_flags = 0, cf_feature_version = 14} run = <optimized out> #40 pymain_run_file (config=0x7ffff7d712c0 <_PyRuntime+98624>) at /usr/src/debug/python3.14-3.14.0~b2-3.fc43.x86_64/Modules/main.c:429 filename = 0x7ffff748edb0 program_name = 0x7ffff748edf0 res = <optimized out> #41 pymain_run_python (exitcode=0x7fffffffde8c) at /usr/src/debug/python3.14-3.14.0~b2-3.fc43.x86_64/Modules/main.c:694 main_importer_path = <optimized out> interp = 0x7ffff7d6f378 <_PyRuntime+90616> config = 0x7ffff7d712c0 <_PyRuntime+98624> path0 = 0x7ffff748e8b0 #42 Py_RunMain () at /usr/src/debug/python3.14-3.14.0~b2-3.fc43.x86_64/Modules/main.c:775 exitcode = 0 #43 0x00007ffff7a44e3b in Py_BytesMain (argc=<optimized out>, argv=<optimized out>) at /usr/src/debug/python3.14-3.14.0~b2-3.fc43.x86_64/Modules/main.c:829 args = {argc = 3, use_bytes_argv = 1, bytes_argv = 0x7fffffffe0f8, wchar_argv = 0x0} #44 0x00007ffff76125b5 in __libc_start_call_main (main=main@entry=0x5555555544a0 <main>, argc=argc@entry=3, argv=argv@entry=0x7fffffffe0f8) at ../sysdeps/nptl/libc_start_call_main.h:58 self = <optimized out> result = <optimized out> unwind_buf = {cancel_jmp_buf = {{jmp_buf = {0, -3559646065537008828, 140737488347384, 3, 140737354125312, 93824992243056, -3559646066658985148, -3559662302490608828}, mask_was_saved = 0}}, priv = {pad = {0x0, 0x0, 0x0, 0x7fffffffe0f8}, data = {prev = 0x0, cleanup = 0x0, canceltype = 0}}} not_first_call = <optimized out> #45 0x00007ffff7612668 in __libc_start_main_impl (main=0x5555555544a0 <main>, argc=3, argv=0x7fffffffe0f8, init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7fffffffe0e8) at ../csu/libc-start.c:360 No locals. #46 0x00005555555543d5 in _start () No symbol table info available. And valgrind also shows something interesting: crick/tests/test_space_saving.py::test_weights ==33== Invalid write of size 8 ==33== at 0x499CE91: UnknownInlinedFun (pycore_gc.h:247) ==33== by 0x499CE91: PyList_New (listobject.c:270) ==33== by 0x4AF267B: _PyType_GetSubclasses (typeobject.c:672) ==33== by 0x49B1CDC: _PyObject_VectorcallTstate.lto_priv.0 (pycore_call.h:169) ==33== by 0x4AC3789: PyObject_CallMethod (call.c:645) ==33== by 0x4AF235E: UnknownInlinedFun (_abc.c:804) ==33== by 0x4AF235E: _abc__abc_subclasscheck.lto_priv.0 (_abc.c.h:137) ==33== by 0x49CF80A: _PyEval_EvalFrameDefault (generated_cases.c.h:2263) ==33== by 0x49CAB84: UnknownInlinedFun (pycore_ceval.h:119) ==33== by 0x49CAB84: _PyEval_Vector (ceval.c:1961) ==33== by 0x4A44D5E: UnknownInlinedFun (call.c:413) ==33== by 0x4A44D5E: UnknownInlinedFun (pycore_call.h:169) ==33== by 0x4A44D5E: method_vectorcall.lto_priv.0 (classobject.c:64) ==33== by 0x4A0550E: UnknownInlinedFun (pycore_call.h:169) ==33== by 0x4A0550E: PyObject_CallOneArg (call.c:395) ==33== by 0x4A27D7C: object_issubclass.lto_priv.0 (abstract.c:2766) ==33== by 0x4AF23E1: UnknownInlinedFun (_abc.c:817) ==33== by 0x4AF23E1: _abc__abc_subclasscheck.lto_priv.0 (_abc.c.h:137) ==33== by 0x49CF80A: _PyEval_EvalFrameDefault (generated_cases.c.h:2263) ==33== Address 0x2e5ce62f is 1 bytes before a block of size 56 alloc'd ==33== at 0x4843B26: malloc (vg_replace_malloc.c:446) ==33== by 0x49A4E1D: UnknownInlinedFun (obmalloc.c:63) ==33== by 0x49A4E1D: UnknownInlinedFun (obmalloc.c:966) ==33== by 0x49A4E1D: UnknownInlinedFun (obmalloc.c:2234) ==33== by 0x49A4E1D: UnknownInlinedFun (obmalloc.c:1394) ==33== by 0x49A4E1D: UnknownInlinedFun (pycore_object_alloc.h:46) ==33== by 0x49A4E1D: _PyType_AllocNoTrack (typeobject.c:2347) ==33== by 0x4A3C2F6: UnknownInlinedFun (typeobject.c:2378) ==33== by 0x4A3C2F6: list_vectorcall.lto_priv.0 (listobject.c:3515) ==33== by 0x49D0E94: _PyEval_EvalFrameDefault (generated_cases.c.h:2150) ==33== by 0x49CAB84: UnknownInlinedFun (pycore_ceval.h:119) ==33== by 0x49CAB84: _PyEval_Vector (ceval.c:1961) ==33== by 0x4AB5F9F: UnknownInlinedFun (call.c:413) ==33== by 0x4AB5F9F: _PyObject_VectorcallDictTstate (call.c:146) ==33== by 0x4B10E75: UnknownInlinedFun (call.c:504) ==33== by 0x4B10E75: UnknownInlinedFun (typeobject.c:2919) ==33== by 0x4B10E75: slot_tp_call.lto_priv.0 (typeobject.c:10181) ==33== by 0x4AC9D39: _PyObject_Call (call.c:361) ==33== by 0x49D3F24: UnknownInlinedFun (call.c:373) ==33== by 0x49D3F24: UnknownInlinedFun (call.c:381) ==33== by 0x49D3F24: _PyEval_EvalFrameDefault (generated_cases.c.h:2654) ==33== by 0x49CAB84: UnknownInlinedFun (pycore_ceval.h:119) ==33== by 0x49CAB84: _PyEval_Vector (ceval.c:1961) ==33== by 0x4AB5F9F: UnknownInlinedFun (call.c:413) ==33== by 0x4AB5F9F: _PyObject_VectorcallDictTstate (call.c:146) ==33== by 0x4B10E75: UnknownInlinedFun (call.c:504) ==33== by 0x4B10E75: UnknownInlinedFun (typeobject.c:2919) ==33== by 0x4B10E75: slot_tp_call.lto_priv.0 (typeobject.c:10181) ==33== ==33== Invalid read of size 1 ==33== at 0x49AF3B0: PyList_Append (listobject.c:534) ==33== by 0x4AF2712: _PyType_GetSubclasses (typeobject.c:693) ==33== by 0x49B1CDC: _PyObject_VectorcallTstate.lto_priv.0 (pycore_call.h:169) ==33== by 0x4AC3789: PyObject_CallMethod (call.c:645) ==33== by 0x4AF235E: UnknownInlinedFun (_abc.c:804) ==33== by 0x4AF235E: _abc__abc_subclasscheck.lto_priv.0 (_abc.c.h:137) ==33== by 0x49CF80A: _PyEval_EvalFrameDefault (generated_cases.c.h:2263) ==33== by 0x49CAB84: UnknownInlinedFun (pycore_ceval.h:119) ==33== by 0x49CAB84: _PyEval_Vector (ceval.c:1961) ==33== by 0x4A44D5E: UnknownInlinedFun (call.c:413) ==33== by 0x4A44D5E: UnknownInlinedFun (pycore_call.h:169) ==33== by 0x4A44D5E: method_vectorcall.lto_priv.0 (classobject.c:64) ==33== by 0x4A0550E: UnknownInlinedFun (pycore_call.h:169) ==33== by 0x4A0550E: PyObject_CallOneArg (call.c:395) ==33== by 0x4A27D7C: object_issubclass.lto_priv.0 (abstract.c:2766) ==33== by 0x4AF23E1: UnknownInlinedFun (_abc.c:817) ==33== by 0x4AF23E1: _abc__abc_subclasscheck.lto_priv.0 (_abc.c.h:137) ==33== by 0x49CF80A: _PyEval_EvalFrameDefault (generated_cases.c.h:2263) ==33== Address 0x4d8c8a0ab is not stack'd, malloc'd or (recently) free'd ==33== I don't know if that is a Python bug, or Cython bug.
> I don't know if that is a Python bug, or Cython bug. It's a memory corruption in __pyx_tp_dealloc_5crick_12space_saving_SpaceSaving() function: function generated by Cython. It's not a bug in Python. I suppose that it's this code from crick/space_saving.pyx: --- cdef class SpaceSaving: ... def __dealloc__(self): if self.summary != NULL: if np.PyDataType_ISOBJECT(self.dtype): spsv_object_free(<spsv_object_t *>self.summary) else: spsv_int64_free(<spsv_int64_t *>self.summary) --- I suppose that it's a "use-after-free" bug. It's tedious to debug the bug, so it's hard to give more hints. gdb traces: --- Hardware watchpoint 6: *(void**)((PyThreadState *) 0xb2c6a8)->interp->object_state.freelists.floats.freelist Old value = (void *) 0x0 New value = (void *) 0xffffffff 0x00007fedf648fa41 in __pyx_tp_dealloc_5crick_12space_saving_SpaceSaving () from /builddir/build/BUILD/python-crick-0.0.8-build/crick-0.0.8/crick/space_saving.cpython-314-x86_64-linux-gnu.so ---
I tried but failed to debug the Cython issue. What helped me is to replace these 4 lines in setup.py to get debug symbols: --- if True: #"--debug" in sys.argv: #sys.argv.remove("--debug") compile_args["undef_macros"] = ["NDEBUG"] compile_args["extra_compile_args"] = ["-O0", "-g"] --- It's not trivial to install crick to run tests. I had to use the "hack" from the Fedora specfile: --- $ cd crick $ ln -s ../build/lib.linux-x86_64-cpython-314/crick/*so . --- Otherwise, pytest doesn't find crick extensions such as crick.numpy_version.
Good spot; commenting out that whole `__dealloc__` does fix the crash, but then the ref count leak test fails (naturally). I tried something like this, just in case `__dealloc__` was called twice, but that did not fix it: diff --git a/crick/space_saving.pyx b/crick/space_saving.pyx index 57d963a..83ef1fe 100644 --- a/crick/space_saving.pyx +++ b/crick/space_saving.pyx @@ -203,6 +203,7 @@ cdef class SpaceSaving: spsv_object_free(<spsv_object_t *>self.summary) else: spsv_int64_free(<spsv_int64_t *>self.summary) + self.summary = NULL def __repr__(self): return ("SpaceSaving<capacity={0}, dtype={1}, "
I reproduced this in a virtualenv and reported it upstream as https://github.com/dask/crick/issues/65.
Hello, Please note that this comment was generated automatically by https://pagure.io/releng/blob/main/f/scripts/ftbfs-fti/follow-policy.py If you feel that this output has mistakes, please open an issue at https://pagure.io/releng/ This package fails to install and maintainers are advised to take one of the following actions: - Fix this bug and close this bugzilla once the update makes it to the repository. (The same script that posted this comment will eventually close this bugzilla when the fixed package reaches the repository, so you don't have to worry about it.) or - Move this bug to ASSIGNED if you plan on fixing this, but simply haven't done so yet. or - Orphan the package if you no longer plan to maintain it. If you do not take one of these actions, the process at https://docs.fedoraproject.org/en-US/fesco/Fails_to_build_from_source_Fails_to_install/#_package_removal_for_long_standing_ftbfs_and_fti_bugs will continue. This package may be orphaned in 7+ weeks. This is the first reminder (step 3) from the policy. Don't hesitate to ask for help on https://lists.fedoraproject.org/archives/list/devel@lists.fedoraproject.org/ if you are unsure how to fix this bug.
It looks like a refcounting bug. This patch leads to a successful build. I'm not saying that it's the correct fix, mind you. diff --git a/crick/space_saving.pyx b/crick/space_saving.pyx index 57d963a..4bafbee 100644 --- a/crick/space_saving.pyx +++ b/crick/space_saving.pyx @@ -285,6 +285,7 @@ cdef class SpaceSaving: count = np.asarray(count) item = item.astype(self.dtype, casting='safe', copy=False) + Py_INCREF(<object>item) count = count.astype(np.int64, casting='safe', copy=False) if check_count and (count <= 0).any():
I submitted an upstream PR to address what I believe the issue to be (explanation in the PR): https://github.com/dask/crick/pull/69. Here is a PR for the Fedora package to add the patch, which leads to a successful Rawhide build: https://src.fedoraproject.org/rpms/python-crick/pull-request/3
Hello, Please note that this comment was generated automatically by https://pagure.io/releng/blob/main/f/scripts/ftbfs-fti/follow-policy.py If you feel that this output has mistakes, please open an issue at https://pagure.io/releng/ All subpackages of a package against which this bug was filled are now installable or removed from Fedora 43. Thanks for taking care of it!
> I submitted an upstream PR to address what I believe the issue to be (explanation in the PR): https://github.com/dask/crick/pull/69. Great!