Repository navigation
Remove deprecated and undocumented function ctypes.SetPointerType #133866
Description
Activity
- addedtype-featureA feature request or enhancementA feature request or enhancementextension-modulesC modules in the Modules dirC modules in the Modules dirstdlibStandard Library Python modules in the Lib/ directoryStandard Library Python modules in the Lib/ directoryand removedextension-modulesC modules in the Modules dirC modules in the Modules dir
on May 11, 2025 +1 to remove
SetPointerTypeas it is not thread safe too and can crash as the uses ofinfo->protouse borrowed reference.Oh, do you mean that no one use should be using it? in this case, I'll remove the
use set_type instead.Yes, you should remove the underlying C implementation as well.
Yes, you should remove the underlying C implementation as well.
I'm not entirely sure I can do it. We only communicated that the Python interface is deprecated, not the C one (even if this should not be used). cc @vstinner @encukou.
(I'm however in favor of doing it, just that I don't know if we can do it without an explicit notice)
set_typeset proto for pointer type, that used in lot of places. Also, it will break external users likepygletwho implementsIUnknowninterface with_type_.I don't think that the ctypes C API is considered as part of the public C API. I'm not sure if it's technically usable outside CPython.
Yes, we'll need to deprecate
set_type, and its C implementation, separately; in 3.15.Now that
__pointer_type__is in, it should be possible to replaceset_typeby the new API, in all use cases we're aware of. But let's give users time to report other use cases.- added a commit that references this issue
on May 29, 2025 FWIW, I think the CFFI TSan CI hit a race caused by something related to this issue:
https://github.com/python-cffi/cffi/actions/runs/22596398074/job/65467405565?pr=232#step:5:365
Details
WARNING: ThreadSanitizer: data race (pid=432) Read of size 8 at 0x7f7ff8914f38 by thread T1137: #0 ctype_get_pointer_type /work/.pyenv/sources/3.14.3t/Python-3.14.3/./Modules/_ctypes/_ctypes.c:592:15 (_ctypes.cpython-314t-x86_64-linux-gnu.so+0xb858) (BuildId: 0dc90d8ab245295ae10f5fc556e9cf4e597e59a0) #1 getset_get /work/.pyenv/sources/3.14.3t/Python-3.14.3/Objects/descrobject.c:194:16 (libpython3.14t.so.1.0+0x144578) (BuildId: cb8f90e4c5e317580b5b21cb4ef066a699b7c085) #2 _Py_type_getattro_impl /work/.pyenv/sources/3.14.3t/Python-3.14.3/Objects/typeobject.c:6058:19 (libpython3.14t.so.1.0+0x23e11d) (BuildId: cb8f90e4c5e317580b5b21cb4ef066a699b7c085) #3 _Py_type_getattro /work/.pyenv/sources/3.14.3t/Python-3.14.3/Objects/typeobject.c:6119:12 (libpython3.14t.so.1.0+0x23e420) (BuildId: cb8f90e4c5e317580b5b21cb4ef066a699b7c085) #4 PyObject_GetAttr /work/.pyenv/sources/3.14.3t/Python-3.14.3/Objects/object.c:1299:18 (libpython3.14t.so.1.0+0x1e5b97) (BuildId: cb8f90e4c5e317580b5b21cb4ef066a699b7c085) #5 _PyEval_EvalFrameDefault /work/.pyenv/sources/3.14.3t/Python-3.14.3/Python/generated_cases.c.h:8043:30 (libpython3.14t.so.1.0+0x350994) (BuildId: cb8f90e4c5e317580b5b21cb4ef066a699b7c085) #6 _PyEval_EvalFrame /work/.pyenv/sources/3.14.3t/Python-3.14.3/./Include/internal/pycore_ceval.h:120:16 (libpython3.14t.so.1.0+0x336d80) (BuildId: cb8f90e4c5e317580b5b21cb4ef066a699b7c085) #7 _PyEval_Vector /work/.pyenv/sources/3.14.3t/Python-3.14.3/Python/ceval.c:2083:12 (libpython3.14t.so.1.0+0x336d80) #8 _PyFunction_Vectorcall /work/.pyenv/sources/3.14.3t/Python-3.14.3/Objects/call.c (libpython3.14t.so.1.0+0x12c691) (BuildId: cb8f90e4c5e317580b5b21cb4ef066a699b7c085) #9 _PyObject_VectorcallTstate /work/.pyenv/sources/3.14.3t/Python-3.14.3/./Include/internal/pycore_call.h:169:11 (libpython3.14t.so.1.0+0x131076) (BuildId: cb8f90e4c5e317580b5b21cb4ef066a699b7c085) #10 method_vectorcall /work/.pyenv/sources/3.14.3t/Python-3.14.3/Objects/classobject.c:95:18 (libpython3.14t.so.1.0+0x131076) #11 _PyVectorcall_Call /work/.pyenv/sources/3.14.3t/Python-3.14.3/Objects/call.c:273:16 (libpython3.14t.so.1.0+0x12c317) (BuildId: cb8f90e4c5e317580b5b21cb4ef066a699b7c085) #12 _PyObject_Call /work/.pyenv/sources/3.14.3t/Python-3.14.3/Objects/call.c:348:16 (libpython3.14t.so.1.0+0x12c317) #13 PyObject_Call /work/.pyenv/sources/3.14.3t/Python-3.14.3/Objects/call.c:373:12 (libpython3.14t.so.1.0+0x12c387) (BuildId: cb8f90e4c5e317580b5b21cb4ef066a699b7c085) #14 _PyEval_EvalFrameDefault /work/.pyenv/sources/3.14.3t/Python-3.14.3/Python/generated_cases.c.h:2657:32 (libpython3.14t.so.1.0+0x33fc93) (BuildId: cb8f90e4c5e317580b5b21cb4ef066a699b7c085) #15 _PyEval_EvalFrame /work/.pyenv/sources/3.14.3t/Python-3.14.3/./Include/internal/pycore_ceval.h:120:16 (libpython3.14t.so.1.0+0x336d80) (BuildId: cb8f90e4c5e317580b5b21cb4ef066a699b7c085) #16 _PyEval_Vector /work/.pyenv/sources/3.14.3t/Python-3.14.3/Python/ceval.c:2083:12 (libpython3.14t.so.1.0+0x336d80) #17 _PyFunction_Vectorcall /work/.pyenv/sources/3.14.3t/Python-3.14.3/Objects/call.c (libpython3.14t.so.1.0+0x12c691) (BuildId: cb8f90e4c5e317580b5b21cb4ef066a699b7c085) #18 _PyObject_VectorcallTstate /work/.pyenv/sources/3.14.3t/Python-3.14.3/./Include/internal/pycore_call.h:169:11 (libpython3.14t.so.1.0+0x130fd1) (BuildId: cb8f90e4c5e317580b5b21cb4ef066a699b7c085) #19 method_vectorcall /work/.pyenv/sources/3.14.3t/Python-3.14.3/Objects/classobject.c:73:20 (libpython3.14t.so.1.0+0x130fd1) #20 _PyVectorcall_Call /work/.pyenv/sources/3.14.3t/Python-3.14.3/Objects/call.c:273:16 (libpython3.14t.so.1.0+0x12c317) (BuildId: cb8f90e4c5e317580b5b21cb4ef066a699b7c085) #21 _PyObject_Call /work/.pyenv/sources/3.14.3t/Python-3.14.3/Objects/call.c:348:16 (libpython3.14t.so.1.0+0x12c317) #22 PyObject_Call /work/.pyenv/sources/3.14.3t/Python-3.14.3/Objects/call.c:373:12 (libpython3.14t.so.1.0+0x12c387) (BuildId: cb8f90e4c5e317580b5b21cb4ef066a699b7c085) #23 _PyEval_EvalFrameDefault /work/.pyenv/sources/3.14.3t/Python-3.14.3/Python/generated_cases.c.h:2657:32 (libpython3.14t.so.1.0+0x33fc93) (BuildId: cb8f90e4c5e317580b5b21cb4ef066a699b7c085) #24 _PyEval_EvalFrame /work/.pyenv/sources/3.14.3t/Python-3.14.3/./Include/internal/pycore_ceval.h:120:16 (libpython3.14t.so.1.0+0x336d80) (BuildId: cb8f90e4c5e317580b5b21cb4ef066a699b7c085) #25 _PyEval_Vector /work/.pyenv/sources/3.14.3t/Python-3.14.3/Python/ceval.c:2083:12 (libpython3.14t.so.1.0+0x336d80) #26 _PyFunction_Vectorcall /work/.pyenv/sources/3.14.3t/Python-3.14.3/Objects/call.c (libpython3.14t.so.1.0+0x12c691) (BuildId: cb8f90e4c5e317580b5b21cb4ef066a699b7c085) #27 _PyObject_VectorcallTstate /work/.pyenv/sources/3.14.3t/Python-3.14.3/./Include/internal/pycore_call.h:169:11 (libpython3.14t.so.1.0+0x130fd1) (BuildId: cb8f90e4c5e317580b5b21cb4ef066a699b7c085) #28 method_vectorcall /work/.pyenv/sources/3.14.3t/Python-3.14.3/Objects/classobject.c:73:20 (libpython3.14t.so.1.0+0x130fd1) #29 _PyObject_VectorcallTstate /work/.pyenv/sources/3.14.3t/Python-3.14.3/./Include/internal/pycore_call.h:169:11 (libpython3.14t.so.1.0+0x3908c9) (BuildId: cb8f90e4c5e317580b5b21cb4ef066a699b7c085) #30 context_run /work/.pyenv/sources/3.14.3t/Python-3.14.3/Python/context.c:722:29 (libpython3.14t.so.1.0+0x3908c9) #31 _PyEval_EvalFrameDefault /work/.pyenv/sources/3.14.3t/Python-3.14.3/Python/generated_cases.c.h:3747:35 (libpython3.14t.so.1.0+0x344028) (BuildId: cb8f90e4c5e317580b5b21cb4ef066a699b7c085) #32 _PyEval_EvalFrame /work/.pyenv/sources/3.14.3t/Python-3.14.3/./Include/internal/pycore_ceval.h:120:16 (libpython3.14t.so.1.0+0x336d80) (BuildId: cb8f90e4c5e317580b5b21cb4ef066a699b7c085) #33 _PyEval_Vector /work/.pyenv/sources/3.14.3t/Python-3.14.3/Python/ceval.c:2083:12 (libpython3.14t.so.1.0+0x336d80) #34 _PyFunction_Vectorcall /work/.pyenv/sources/3.14.3t/Python-3.14.3/Objects/call.c (libpython3.14t.so.1.0+0x12c691) (BuildId: cb8f90e4c5e317580b5b21cb4ef066a699b7c085) #35 _PyObject_VectorcallTstate /work/.pyenv/sources/3.14.3t/Python-3.14.3/./Include/internal/pycore_call.h:169:11 (libpython3.14t.so.1.0+0x130fd1) (BuildId: cb8f90e4c5e317580b5b21cb4ef066a699b7c085) #36 method_vectorcall /work/.pyenv/sources/3.14.3t/Python-3.14.3/Objects/classobject.c:73:20 (libpython3.14t.so.1.0+0x130fd1) #37 _PyVectorcall_Call /work/.pyenv/sources/3.14.3t/Python-3.14.3/Objects/call.c:273:16 (libpython3.14t.so.1.0+0x12c317) (BuildId: cb8f90e4c5e317580b5b21cb4ef066a699b7c085) #38 _PyObject_Call /work/.pyenv/sources/3.14.3t/Python-3.14.3/Objects/call.c:348:16 (libpython3.14t.so.1.0+0x12c317) #39 PyObject_Call /work/.pyenv/sources/3.14.3t/Python-3.14.3/Objects/call.c:373:12 (libpython3.14t.so.1.0+0x12c387) (BuildId: cb8f90e4c5e317580b5b21cb4ef066a699b7c085) #40 thread_run /work/.pyenv/sources/3.14.3t/Python-3.14.3/./Modules/_threadmodule.c:359:21 (libpython3.14t.so.1.0+0x501e42) (BuildId: cb8f90e4c5e317580b5b21cb4ef066a699b7c085) #41 pythread_wrapper /work/.pyenv/sources/3.14.3t/Python-3.14.3/Python/thread_pthread.h:242:5 (libpython3.14t.so.1.0+0x440877) (BuildId: cb8f90e4c5e317580b5b21cb4ef066a699b7c085) Previous write of size 8 at 0x7f7ff8914f38 by thread T1138: #0 PyCPointerType_SetProto /work/.pyenv/sources/3.14.3t/Python-3.14.3/./Modules/_ctypes/_ctypes.c:1258:9 (_ctypes.cpython-314t-x86_64-linux-gnu.so+0x10057) (BuildId: 0dc90d8ab245295ae10f5fc556e9cf4e597e59a0) #1 PyCPointerType_init /work/.pyenv/sources/3.14.3t/Python-3.14.3/./Modules/_ctypes/_ctypes.c:1312:13 (_ctypes.cpython-314t-x86_64-linux-gnu.so+0xf4c2) (BuildId: 0dc90d8ab245295ae10f5fc556e9cf4e597e59a0) #2 type_call /work/.pyenv/sources/3.14.3t/Python-3.14.3/Objects/typeobject.c:2321:19 (libpython3.14t.so.1.0+0x23fda9) (BuildId: cb8f90e4c5e317580b5b21cb4ef066a699b7c085) #3 _PyObject_MakeTpCall /work/.pyenv/sources/3.14.3t/Python-3.14.3/Objects/call.c:242:18 (libpython3.14t.so.1.0+0x12b49e) (BuildId: cb8f90e4c5e317580b5b21cb4ef066a699b7c085) #4 type_vectorcall /work/.pyenv/sources/3.14.3t/Python-3.14.3/Objects/typeobject.c:4759:12 (libpython3.14t.so.1.0+0x2432d7) (BuildId: cb8f90e4c5e317580b5b21cb4ef066a699b7c085) #5 _PyEval_EvalFrameDefault /work/.pyenv/sources/3.14.3t/Python-3.14.3/Python/generated_cases.c.h:2153:35 (libpython3.14t.so.1.0+0x33ddec) (BuildId: cb8f90e4c5e317580b5b21cb4ef066a699b7c085) #6 _PyEval_EvalFrame /work/.pyenv/sources/3.14.3t/Python-3.14.3/./Include/internal/pycore_ceval.h:120:16 (libpython3.14t.so.1.0+0x336d80) (BuildId: cb8f90e4c5e317580b5b21cb4ef066a699b7c085) #7 _PyEval_Vector /work/.pyenv/sources/3.14.3t/Python-3.14.3/Python/ceval.c:2083:12 (libpython3.14t.so.1.0+0x336d80) #8 _PyFunction_Vectorcall /work/.pyenv/sources/3.14.3t/Python-3.14.3/Objects/call.c (libpython3.14t.so.1.0+0x12c691) (BuildId: cb8f90e4c5e317580b5b21cb4ef066a699b7c085) #9 _PyObject_VectorcallTstate /work/.pyenv/sources/3.14.3t/Python-3.14.3/./Include/internal/pycore_call.h:169:11 (libpython3.14t.so.1.0+0x131076) (BuildId: cb8f90e4c5e317580b5b21cb4ef066a699b7c085) #10 method_vectorcall /work/.pyenv/sources/3.14.3t/Python-3.14.3/Objects/classobject.c:95:18 (libpython3.14t.so.1.0+0x131076) #11 _PyVectorcall_Call /work/.pyenv/sources/3.14.3t/Python-3.14.3/Objects/call.c:273:16 (libpython3.14t.so.1.0+0x12c317) (BuildId: cb8f90e4c5e317580b5b21cb4ef066a699b7c085) #12 _PyObject_Call /work/.pyenv/sources/3.14.3t/Python-3.14.3/Objects/call.c:348:16 (libpython3.14t.so.1.0+0x12c317) #13 PyObject_Call /work/.pyenv/sources/3.14.3t/Python-3.14.3/Objects/call.c:373:12 (libpython3.14t.so.1.0+0x12c387) (BuildId: cb8f90e4c5e317580b5b21cb4ef066a699b7c085) #14 _PyEval_EvalFrameDefault /work/.pyenv/sources/3.14.3t/Python-3.14.3/Python/generated_cases.c.h:2657:32 (libpython3.14t.so.1.0+0x33fc93) (BuildId: cb8f90e4c5e317580b5b21cb4ef066a699b7c085) #15 _PyEval_EvalFrame /work/.pyenv/sources/3.14.3t/Python-3.14.3/./Include/internal/pycore_ceval.h:120:16 (libpython3.14t.so.1.0+0x336d80) (BuildId: cb8f90e4c5e317580b5b21cb4ef066a699b7c085) #16 _PyEval_Vector /work/.pyenv/sources/3.14.3t/Python-3.14.3/Python/ceval.c:2083:12 (libpython3.14t.so.1.0+0x336d80) #17 _PyFunction_Vectorcall /work/.pyenv/sources/3.14.3t/Python-3.14.3/Objects/call.c (libpython3.14t.so.1.0+0x12c691) (BuildId: cb8f90e4c5e317580b5b21cb4ef066a699b7c085) #18 _PyObject_VectorcallTstate /work/.pyenv/sources/3.14.3t/Python-3.14.3/./Include/internal/pycore_call.h:169:11 (libpython3.14t.so.1.0+0x130fd1) (BuildId: cb8f90e4c5e317580b5b21cb4ef066a699b7c085) #19 method_vectorcall /work/.pyenv/sources/3.14.3t/Python-3.14.3/Objects/classobject.c:73:20 (libpython3.14t.so.1.0+0x130fd1) #20 _PyVectorcall_Call /work/.pyenv/sources/3.14.3t/Python-3.14.3/Objects/call.c:273:16 (libpython3.14t.so.1.0+0x12c317) (BuildId: cb8f90e4c5e317580b5b21cb4ef066a699b7c085) #21 _PyObject_Call /work/.pyenv/sources/3.14.3t/Python-3.14.3/Objects/call.c:348:16 (libpython3.14t.so.1.0+0x12c317) #22 PyObject_Call /work/.pyenv/sources/3.14.3t/Python-3.14.3/Objects/call.c:373:12 (libpython3.14t.so.1.0+0x12c387) (BuildId: cb8f90e4c5e317580b5b21cb4ef066a699b7c085) #23 _PyEval_EvalFrameDefault /work/.pyenv/sources/3.14.3t/Python-3.14.3/Python/generated_cases.c.h:2657:32 (libpython3.14t.so.1.0+0x33fc93) (BuildId: cb8f90e4c5e317580b5b21cb4ef066a699b7c085) #24 _PyEval_EvalFrame /work/.pyenv/sources/3.14.3t/Python-3.14.3/./Include/internal/pycore_ceval.h:120:16 (libpython3.14t.so.1.0+0x336d80) (BuildId: cb8f90e4c5e317580b5b21cb4ef066a699b7c085) #25 _PyEval_Vector /work/.pyenv/sources/3.14.3t/Python-3.14.3/Python/ceval.c:2083:12 (libpython3.14t.so.1.0+0x336d80) #26 _PyFunction_Vectorcall /work/.pyenv/sources/3.14.3t/Python-3.14.3/Objects/call.c (libpython3.14t.so.1.0+0x12c691) (BuildId: cb8f90e4c5e317580b5b21cb4ef066a699b7c085) #27 _PyObject_VectorcallTstate /work/.pyenv/sources/3.14.3t/Python-3.14.3/./Include/internal/pycore_call.h:169:11 (libpython3.14t.so.1.0+0x130fd1) (BuildId: cb8f90e4c5e317580b5b21cb4ef066a699b7c085) #28 method_vectorcall /work/.pyenv/sources/3.14.3t/Python-3.14.3/Objects/classobject.c:73:20 (libpython3.14t.so.1.0+0x130fd1) #29 _PyObject_VectorcallTstate /work/.pyenv/sources/3.14.3t/Python-3.14.3/./Include/internal/pycore_call.h:169:11 (libpython3.14t.so.1.0+0x3908c9) (BuildId: cb8f90e4c5e317580b5b21cb4ef066a699b7c085) #30 context_run /work/.pyenv/sources/3.14.3t/Python-3.14.3/Python/context.c:722:29 (libpython3.14t.so.1.0+0x3908c9) #31 _PyEval_EvalFrameDefault /work/.pyenv/sources/3.14.3t/Python-3.14.3/Python/generated_cases.c.h:3747:35 (libpython3.14t.so.1.0+0x344028) (BuildId: cb8f90e4c5e317580b5b21cb4ef066a699b7c085) #32 _PyEval_EvalFrame /work/.pyenv/sources/3.14.3t/Python-3.14.3/./Include/internal/pycore_ceval.h:120:16 (libpython3.14t.so.1.0+0x336d80) (BuildId: cb8f90e4c5e317580b5b21cb4ef066a699b7c085) #33 _PyEval_Vector /work/.pyenv/sources/3.14.3t/Python-3.14.3/Python/ceval.c:2083:12 (libpython3.14t.so.1.0+0x336d80) #34 _PyFunction_Vectorcall /work/.pyenv/sources/3.14.3t/Python-3.14.3/Objects/call.c (libpython3.14t.so.1.0+0x12c691) (BuildId: cb8f90e4c5e317580b5b21cb4ef066a699b7c085) #35 _PyObject_VectorcallTstate /work/.pyenv/sources/3.14.3t/Python-3.14.3/./Include/internal/pycore_call.h:169:11 (libpython3.14t.so.1.0+0x130fd1) (BuildId: cb8f90e4c5e317580b5b21cb4ef066a699b7c085) #36 method_vectorcall /work/.pyenv/sources/3.14.3t/Python-3.14.3/Objects/classobject.c:73:20 (libpython3.14t.so.1.0+0x130fd1) #37 _PyVectorcall_Call /work/.pyenv/sources/3.14.3t/Python-3.14.3/Objects/call.c:273:16 (libpython3.14t.so.1.0+0x12c317) (BuildId: cb8f90e4c5e317580b5b21cb4ef066a699b7c085) #38 _PyObject_Call /work/.pyenv/sources/3.14.3t/Python-3.14.3/Objects/call.c:348:16 (libpython3.14t.so.1.0+0x12c317) #39 PyObject_Call /work/.pyenv/sources/3.14.3t/Python-3.14.3/Objects/call.c:373:12 (libpython3.14t.so.1.0+0x12c387) (BuildId: cb8f90e4c5e317580b5b21cb4ef066a699b7c085) #40 thread_run /work/.pyenv/sources/3.14.3t/Python-3.14.3/./Modules/_threadmodule.c:359:21 (libpython3.14t.so.1.0+0x501e42) (BuildId: cb8f90e4c5e317580b5b21cb4ef066a699b7c085) #41 pythread_wrapper /work/.pyenv/sources/3.14.3t/Python-3.14.3/Python/thread_pthread.h:242:5 (libpython3.14t.so.1.0+0x440877) (BuildId: cb8f90e4c5e317580b5b21cb4ef066a699b7c085) Thread T1137 'Thread-1137 (cl' (tid=1652, running) created by main thread at: #0 pthread_create <null> (python3.14+0x64bde) (BuildId: de7a72a55f9634d4b8bebf4d6ad6ace6e892d873) #1 do_start_joinable_thread /work/.pyenv/sources/3.14.3t/Python-3.14.3/Python/thread_pthread.h:289:14 (libpython3.14t.so.1.0+0x43f6fa) (BuildId: cb8f90e4c5e317580b5b21cb4ef066a699b7c085) #2 PyThread_start_joinable_thread /work/.pyenv/sources/3.14.3t/Python-3.14.3/Python/thread_pthread.h:331:9 (libpython3.14t.so.1.0+0x43f51a) (BuildId: cb8f90e4c5e317580b5b21cb4ef066a699b7c085) #3 ThreadHandle_start /work/.pyenv/sources/3.14.3t/Python-3.14.3/./Modules/_threadmodule.c:445:9 (libpython3.14t.so.1.0+0x5019d6) (BuildId: cb8f90e4c5e317580b5b21cb4ef066a699b7c085) #4 do_start_new_thread /work/.pyenv/sources/3.14.3t/Python-3.14.3/./Modules/_threadmodule.c:1868:9 (libpython3.14t.so.1.0+0x5019d6) #5 thread_PyThread_start_joinable_thread /work/.pyenv/sources/3.14.3t/Python-3.14.3/./Modules/_threadmodule.c:1991:14 (libpython3.14t.so.1.0+0x5007d1) (BuildId: cb8f90e4c5e317580b5b21cb4ef066a699b7c085) #6 cfunction_call /work/.pyenv/sources/3.14.3t/Python-3.14.3/Objects/methodobject.c:564:18 (libpython3.14t.so.1.0+0x1db2f9) (BuildId: cb8f90e4c5e317580b5b21cb4ef066a699b7c085) #7 _PyObject_MakeTpCall /work/.pyenv/sources/3.14.3t/Python-3.14.3/Objects/call.c:242:18 (libpython3.14t.so.1.0+0x12b49e) (BuildId: cb8f90e4c5e317580b5b21cb4ef066a699b7c085) #8 _PyObject_VectorcallTstate /work/.pyenv/sources/3.14.3t/Python-3.14.3/./Include/internal/pycore_call.h:167:16 (libpython3.14t.so.1.0+0x12c0ba) (BuildId: cb8f90e4c5e317580b5b21cb4ef066a699b7c085) #9 PyObject_Vectorcall /work/.pyenv/sources/3.14.3t/Python-3.14.3/Objects/call.c:327:12 (libpython3.14t.so.1.0+0x12c0ba) #10 _PyEval_EvalFrameDefault /work/.pyenv/sources/3.14.3t/Python-3.14.3/Python/generated_cases.c.h:3230:35 (libpython3.14t.so.1.0+0x3421f7) (BuildId: cb8f90e4c5e317580b5b21cb4ef066a699b7c085) #11 _PyEval_EvalFrame /work/.pyenv/sources/3.14.3t/Python-3.14.3/./Include/internal/pycore_ceval.h:120:16 (libpython3.14t.so.1.0+0x336d80) (BuildId: cb8f90e4c5e317580b5b21cb4ef066a699b7c085) #12 _PyEval_Vector /work/.pyenv/sources/3.14.3t/Python-3.14.3/Python/ceval.c:2083:12 (libpython3.14t.so.1.0+0x336d80) #13 _PyFunction_Vectorcall /work/.pyenv/sources/3.14.3t/Python-3.14.3/Objects/call.c (libpython3.14t.so.1.0+0x12c691) (BuildId: cb8f90e4c5e317580b5b21cb4ef066a699b7c085) #14 _PyObject_VectorcallDictTstate /work/.pyenv/sources/3.14.3t/Python-3.14.3/Objects/call.c:146:15 (libpython3.14t.so.1.0+0x12b1e0) (BuildId: cb8f90e4c5e317580b5b21cb4ef066a699b7c085) #15 _PyObject_Call_Prepend /work/.pyenv/sources/3.14.3t/Python-3.14.3/Objects/call.c:504:24 (libpython3.14t.so.1.0+0x12ccd6) (BuildId: cb8f90e4c5e317580b5b21cb4ef066a699b7c085) #16 call_method /work/.pyenv/sources/3.14.3t/Python-3.14.3/Objects/typeobject.c:2937:19 (libpython3.14t.so.1.0+0x24d608) (BuildId: cb8f90e4c5e317580b5b21cb4ef066a699b7c085) #17 slot_tp_call /work/.pyenv/sources/3.14.3t/Python-3.14.3/Objects/typeobject.c:10254:12 (libpython3.14t.so.1.0+0x24d441) (BuildId: cb8f90e4c5e317580b5b21cb4ef066a699b7c085) #18 _PyObject_MakeTpCall /work/.pyenv/sources/3.14.3t/Python-3.14.3/Objects/call.c:242:18 (libpython3.14t.so.1.0+0x12b49e) (BuildId: cb8f90e4c5e317580b5b21cb4ef066a699b7c085) #19 _PyObject_VectorcallTstate /work/.pyenv/sources/3.14.3t/Python-3.14.3/./Include/internal/pycore_call.h:167:16 (libpython3.14t.so.1.0+0x12c0ba) (BuildId: cb8f90e4c5e317580b5b21cb4ef066a699b7c085) #20 PyObject_Vectorcall /work/.pyenv/sources/3.14.3t/Python-3.14.3/Objects/call.c:327:12 (libpython3.14t.so.1.0+0x12c0ba) #21 _PyEval_EvalFrameDefault /work/.pyenv/sources/3.14.3t/Python-3.14.3/Python/generated_cases.c.h:3230:35 (libpython3.14t.so.1.0+0x3421f7) (BuildId: cb8f90e4c5e317580b5b21cb4ef066a699b7c085) #22 _PyEval_EvalFrame /work/.pyenv/sources/3.14.3t/Python-3.14.3/./Include/internal/pycore_ceval.h:120:16 (libpython3.14t.so.1.0+0x336d80) (BuildId: cb8f90e4c5e317580b5b21cb4ef066a699b7c085) #23 _PyEval_Vector /work/.pyenv/sources/3.14.3t/Python-3.14.3/Python/ceval.c:2083:12 (libpython3.14t.so.1.0+0x336d80) #24 _PyFunction_Vectorcall /work/.pyenv/sources/3.14.3t/Python-3.14.3/Objects/call.c (libpython3.14t.so.1.0+0x12c691) (BuildId: cb8f90e4c5e317580b5b21cb4ef066a699b7c085) #25 _PyObject_VectorcallDictTstate /work/.pyenv/sources/3.14.3t/Python-3.14.3/Objects/call.c:146:15 (libpython3.14t.so.1.0+0x12b1e0) (BuildId: cb8f90e4c5e317580b5b21cb4ef066a699b7c085) #26 _PyObject_Call_Prepend /work/.pyenv/sources/3.14.3t/Python-3.14.3/Objects/call.c:504:24 (libpython3.14t.so.1.0+0x12ccd6) (BuildId: cb8f90e4c5e317580b5b21cb4ef066a699b7c085) #27 call_method /work/.pyenv/sources/3.14.3t/Python-3.14.3/Objects/typeobject.c:2937:19 (libpython3.14t.so.1.0+0x24d608) (BuildId: cb8f90e4c5e317580b5b21cb4ef066a699b7c085) #28 slot_tp_call /work/.pyenv/sources/3.14.3t/Python-3.14.3/Objects/typeobject.c:10254:12 (libpython3.14t.so.1.0+0x24d441) (BuildId: cb8f90e4c5e317580b5b21cb4ef066a699b7c085) #29 _PyObject_Call /work/.pyenv/sources/3.14.3t/Python-3.14.3/Objects/call.c:361:18 (libpython3.14t.so.1.0+0x12c2e4) (BuildId: cb8f90e4c5e317580b5b21cb4ef066a699b7c085) #30 PyObject_Call /work/.pyenv/sources/3.14.3t/Python-3.14.3/Objects/call.c:373:12 (libpython3.14t.so.1.0+0x12c387) (BuildId: cb8f90e4c5e317580b5b21cb4ef066a699b7c085) #31 _PyEval_EvalFrameDefault /work/.pyenv/sources/3.14.3t/Python-3.14.3/Python/generated_cases.c.h:2657:32 (libpython3.14t.so.1.0+0x33fc93) (BuildId: cb8f90e4c5e317580b5b21cb4ef066a699b7c085) #32 _PyEval_EvalFrame /work/.pyenv/sources/3.14.3t/Python-3.14.3/./Include/internal/pycore_ceval.h:120:16 (libpython3.14t.so.1.0+0x336d80) (BuildId: cb8f90e4c5e317580b5b21cb4ef066a699b7c085) #33 _PyEval_Vector /work/.pyenv/sources/3.14.3t/Python-3.14.3/Python/ceval.c:2083:12 (libpython3.14t.so.1.0+0x336d80) #34 _PyFunction_Vectorcall /work/.pyenv/sources/3.14.3t/Python-3.14.3/Objects/call.c (libpython3.14t.so.1.0+0x12c691) (BuildId: cb8f90e4c5e317580b5b21cb4ef066a699b7c085) #35 _PyObject_VectorcallDictTstate /work/.pyenv/sources/3.14.3t/Python-3.14.3/Objects/call.c:146:15 (libpython3.14t.so.1.0+0x12b1e0) (BuildId: cb8f90e4c5e317580b5b21cb4ef066a699b7c085) #36 _PyObject_Call_Prepend /work/.pyenv/sources/3.14.3t/Python-3.14.3/Objects/call.c:504:24 (libpython3.14t.so.1.0+0x12ccd6) (BuildId: cb8f90e4c5e317580b5b21cb4ef066a699b7c085) #37 call_method /work/.pyenv/sources/3.14.3t/Python-3.14.3/Objects/typeobject.c:2937:19 (libpython3.14t.so.1.0+0x24d608) (BuildId: cb8f90e4c5e317580b5b21cb4ef066a699b7c085) #38 slot_tp_call /work/.pyenv/sources/3.14.3t/Python-3.14.3/Objects/typeobject.c:10254:12 (libpython3.14t.so.1.0+0x24d441) (BuildId: cb8f90e4c5e317580b5b21cb4ef066a699b7c085) #39 _PyObject_MakeTpCall /work/.pyenv/sources/3.14.3t/Python-3.14.3/Objects/call.c:242:18 (libpython3.14t.so.1.0+0x12b49e) (BuildId: cb8f90e4c5e317580b5b21cb4ef066a699b7c085) #40 _PyObject_VectorcallTstate /work/.pyenv/sources/3.14.3t/Python-3.14.3/./Include/internal/pycore_call.h:167:16 (libpython3.14t.so.1.0+0x12c0ba) (BuildId: cb8f90e4c5e317580b5b21cb4ef066a699b7c085) #41 PyObject_Vectorcall /work/.pyenv/sources/3.14.3t/Python-3.14.3/Objects/call.c:327:12 (libpython3.14t.so.1.0+0x12c0ba) #42 _PyEval_EvalFrameDefault /work/.pyenv/sources/3.14.3t/Python-3.14.3/Python/generated_cases.c.h:3230:35 (libpython3.14t.so.1.0+0x3421f7) (BuildId: cb8f90e4c5e317580b5b21cb4ef066a699b7c085) #43 _PyEval_EvalFrame /work/.pyenv/sources/3.14.3t/Python-3.14.3/./Include/internal/pycore_ceval.h:120:16 (libpython3.14t.so.1.0+0x336d80) (BuildId: cb8f90e4c5e317580b5b21cb4ef066a699b7c085) #44 _PyEval_Vector /work/.pyenv/sources/3.14.3t/Python-3.14.3/Python/ceval.c:2083:12 (libpython3.14t.so.1.0+0x336d80) #45 _PyFunction_Vectorcall /work/.pyenv/sources/3.14.3t/Python-3.14.3/Objects/call.c (libpython3.14t.so.1.0+0x12c691) (BuildId: cb8f90e4c5e317580b5b21cb4ef066a699b7c085) #46 _PyObject_VectorcallDictTstate /work/.pyenv/sources/3.14.3t/Python-3.14.3/Objects/call.c:146:15 (libpython3.14t.so.1.0+0x12b1e0) (BuildId: cb8f90e4c5e317580b5b21cb4ef066a699b7c085) #47 _PyObject_Call_Prepend /work/.pyenv/sources/3.14.3t/Python-3.14.3/Objects/call.c:504:24 (libpython3.14t.so.1.0+0x12ccd6) (BuildId: cb8f90e4c5e317580b5b21cb4ef066a699b7c085) #48 call_method /work/.pyenv/sources/3.14.3t/Python-3.14.3/Objects/typeobject.c:2937:19 (libpython3.14t.so.1.0+0x24d608) (BuildId: cb8f90e4c5e317580b5b21cb4ef066a699b7c085) #49 slot_tp_call /work/.pyenv/sources/3.14.3t/Python-3.14.3/Objects/typeobject.c:10254:12 (libpython3.14t.so.1.0+0x24d441) (BuildId: cb8f90e4c5e317580b5b21cb4ef066a699b7c085) #50 _PyObject_MakeTpCall /work/.pyenv/sources/3.14.3t/Python-3.14.3/Objects/call.c:242:18 (libpython3.14t.so.1.0+0x12b49e) (BuildId: cb8f90e4c5e317580b5b21cb4ef066a699b7c085) #51 _PyObject_VectorcallTstate /work/.pyenv/sources/3.14.3t/Python-3.14.3/./Include/internal/pycore_call.h:167:16 (libpython3.14t.so.1.0+0x12c0ba) (BuildId: cb8f90e4c5e317580b5b21cb4ef066a699b7c085) #52 PyObject_Vectorcall /work/.pyenv/sources/3.14.3t/Python-3.14.3/Objects/call.c:327:12 (libpython3.14t.so.1.0+0x12c0ba) #53 _PyEval_EvalFrameDefault /work/.pyenv/sources/3.14.3t/Python-3.14.3/Python/generated_cases.c.h:2962:35 (libpython3.14t.so.1.0+0x341035) (BuildId: cb8f90e4c5e317580b5b21cb4ef066a699b7c085) #54 _PyEval_EvalFrame /work/.pyenv/sources/3.14.3t/Python-3.14.3/./Include/internal/pycore_ceval.h:120:16 (libpython3.14t.so.1.0+0x336d80) (BuildId: cb8f90e4c5e317580b5b21cb4ef066a699b7c085) #55 _PyEval_Vector /work/.pyenv/sources/3.14.3t/Python-3.14.3/Python/ceval.c:2083:12 (libpython3.14t.so.1.0+0x336d80) #56 _PyFunction_Vectorcall /work/.pyenv/sources/3.14.3t/Python-3.14.3/Objects/call.c (libpython3.14t.so.1.0+0x12c691) (BuildId: cb8f90e4c5e317580b5b21cb4ef066a699b7c085) #57 _PyObject_VectorcallDictTstate /work/.pyenv/sources/3.14.3t/Python-3.14.3/Objects/call.c:146:15 (libpython3.14t.so.1.0+0x12b1e0) (BuildId: cb8f90e4c5e317580b5b21cb4ef066a699b7c085) #58 _PyObject_Call_Prepend /work/.pyenv/sources/3.14.3t/Python-3.14.3/Objects/call.c:504:24 (libpython3.14t.so.1.0+0x12ccd6) (BuildId: cb8f90e4c5e317580b5b21cb4ef066a699b7c085) #59 call_method /work/.pyenv/sources/3.14.3t/Python-3.14.3/Objects/typeobject.c:2937:19 (libpython3.14t.so.1.0+0x24d608) (BuildId: cb8f90e4c5e317580b5b21cb4ef066a699b7c085) #60 slot_tp_call /work/.pyenv/sources/3.14.3t/Python-3.14.3/Objects/typeobject.c:10254:12 (libpython3.14t.so.1.0+0x24d441) (BuildId: cb8f90e4c5e317580b5b21cb4ef066a699b7c085) #61 _PyObject_MakeTpCall /work/.pyenv/sources/3.14.3t/Python-3.14.3/Objects/call.c:242:18 (libpython3.14t.so.1.0+0x12b49e) (BuildId: cb8f90e4c5e317580b5b21cb4ef066a699b7c085) #62 _PyObject_VectorcallTstate /work/.pyenv/sources/3.14.3t/Python-3.14.3/./Include/internal/pycore_call.h:167:16 (libpython3.14t.so.1.0+0x12c0ba) (BuildId: cb8f90e4c5e317580b5b21cb4ef066a699b7c085) #63 PyObject_Vectorcall /work/.pyenv/sources/3.14.3t/Python-3.14.3/Objects/call.c:327:12 (libpython3.14t.so.1.0+0x12c0ba) #64 _PyEval_EvalFrameDefault /work/.pyenv/sources/3.14.3t/Python-3.14.3/Python/generated_cases.c.h:2962:35 (libpython3.14t.so.1.0+0x341035) (BuildId: cb8f90e4c5e317580b5b21cb4ef066a699b7c085) #65 _PyEval_EvalFrame /work/.pyenv/sources/3.14.3t/Python-3.14.3/./Include/internal/pycore_ceval.h:120:16 (libpython3.14t.so.1.0+0x3368bf) (BuildId: cb8f90e4c5e317580b5b21cb4ef066a699b7c085) #66 _PyEval_Vector /work/.pyenv/sources/3.14.3t/Python-3.14.3/Python/ceval.c:2083:12 (libpython3.14t.so.1.0+0x3368bf) #67 PyEval_EvalCode /work/.pyenv/sources/3.14.3t/Python-3.14.3/Python/ceval.c:975:21 (libpython3.14t.so.1.0+0x3368bf) #68 builtin_exec_impl /work/.pyenv/sources/3.14.3t/Python-3.14.3/Python/bltinmodule.c:1180:17 (libpython3.14t.so.1.0+0x32fc23) (BuildId: cb8f90e4c5e317580b5b21cb4ef066a699b7c085) #69 builtin_exec /work/.pyenv/sources/3.14.3t/Python-3.14.3/Python/clinic/bltinmodule.c.h:571:20 (libpython3.14t.so.1.0+0x32fc23) #70 cfunction_vectorcall_FASTCALL_KEYWORDS /work/.pyenv/sources/3.14.3t/Python-3.14.3/Objects/methodobject.c:465:24 (libpython3.14t.so.1.0+0x1da645) (BuildId: cb8f90e4c5e317580b5b21cb4ef066a699b7c085) #71 _PyObject_VectorcallTstate /work/.pyenv/sources/3.14.3t/Python-3.14.3/./Include/internal/pycore_call.h:169:11 (libpython3.14t.so.1.0+0x12bffc) (BuildId: cb8f90e4c5e317580b5b21cb4ef066a699b7c085) #72 PyObject_Vectorcall /work/.pyenv/sources/3.14.3t/Python-3.14.3/Objects/call.c:327:12 (libpython3.14t.so.1.0+0x12bffc) #73 _PyEval_EvalFrameDefault /work/.pyenv/sources/3.14.3t/Python-3.14.3/Python/generated_cases.c.h:1622:35 (libpython3.14t.so.1.0+0x33be8f) (BuildId: cb8f90e4c5e317580b5b21cb4ef066a699b7c085) #74 _PyEval_EvalFrame /work/.pyenv/sources/3.14.3t/Python-3.14.3/./Include/internal/pycore_ceval.h:120:16 (libpython3.14t.so.1.0+0x336d80) (BuildId: cb8f90e4c5e317580b5b21cb4ef066a699b7c085) #75 _PyEval_Vector /work/.pyenv/sources/3.14.3t/Python-3.14.3/Python/ceval.c:2083:12 (libpython3.14t.so.1.0+0x336d80) #76 _PyFunction_Vectorcall /work/.pyenv/sources/3.14.3t/Python-3.14.3/Objects/call.c (libpython3.14t.so.1.0+0x12c691) (BuildId: cb8f90e4c5e317580b5b21cb4ef066a699b7c085) #77 _PyVectorcall_Call /work/.pyenv/sources/3.14.3t/Python-3.14.3/Objects/call.c:273:16 (libpython3.14t.so.1.0+0x12c317) (BuildId: cb8f90e4c5e317580b5b21cb4ef066a699b7c085) #78 _PyObject_Call /work/.pyenv/sources/3.14.3t/Python-3.14.3/Objects/call.c:348:16 (libpython3.14t.so.1.0+0x12c317) #79 PyObject_Call /work/.pyenv/sources/3.14.3t/Python-3.14.3/Objects/call.c:373:12 (libpython3.14t.so.1.0+0x12c387) (BuildId: cb8f90e4c5e317580b5b21cb4ef066a699b7c085) #80 pymain_run_module /work/.pyenv/sources/3.14.3t/Python-3.14.3/Modules/main.c:353:14 (libpython3.14t.so.1.0+0x45ea1e) (BuildId: cb8f90e4c5e317580b5b21cb4ef066a699b7c085) #81 pymain_run_python /work/.pyenv/sources/3.14.3t/Python-3.14.3/Modules/main.c:688:21 (libpython3.14t.so.1.0+0x45e0b0) (BuildId: cb8f90e4c5e317580b5b21cb4ef066a699b7c085) #82 Py_RunMain /work/.pyenv/sources/3.14.3t/Python-3.14.3/Modules/main.c:775:5 (libpython3.14t.so.1.0+0x45e0b0) #83 pymain_main /work/.pyenv/sources/3.14.3t/Python-3.14.3/Modules/main.c:805:12 (libpython3.14t.so.1.0+0x45e838) (BuildId: cb8f90e4c5e317580b5b21cb4ef066a699b7c085) #84 Py_BytesMain /work/.pyenv/sources/3.14.3t/Python-3.14.3/Modules/main.c:829:12 (libpython3.14t.so.1.0+0x45e8bc) (BuildId: cb8f90e4c5e317580b5b21cb4ef066a699b7c085) #85 main /work/.pyenv/sources/3.14.3t/Python-3.14.3/./Programs/python.c:15:12 (python3.14+0xe8c9b) (BuildId: de7a72a55f9634d4b8bebf4d6ad6ace6e892d873) Thread T1138 'Thread-1138 (cl' (tid=1653, running) created by main thread at: #0 pthread_create <null> (python3.14+0x64bde) (BuildId: de7a72a55f9634d4b8bebf4d6ad6ace6e892d873) #1 do_start_joinable_thread /work/.pyenv/sources/3.14.3t/Python-3.14.3/Python/thread_pthread.h:289:14 (libpython3.14t.so.1.0+0x43f6fa) (BuildId: cb8f90e4c5e317580b5b21cb4ef066a699b7c085) #2 PyThread_start_joinable_thread /work/.pyenv/sources/3.14.3t/Python-3.14.3/Python/thread_pthread.h:331:9 (libpython3.14t.so.1.0+0x43f51a) (BuildId: cb8f90e4c5e317580b5b21cb4ef066a699b7c085) #3 ThreadHandle_start /work/.pyenv/sources/3.14.3t/Python-3.14.3/./Modules/_threadmodule.c:445:9 (libpython3.14t.so.1.0+0x5019d6) (BuildId: cb8f90e4c5e317580b5b21cb4ef066a699b7c085) #4 do_start_new_thread /work/.pyenv/sources/3.14.3t/Python-3.14.3/./Modules/_threadmodule.c:1868:9 (libpython3.14t.so.1.0+0x5019d6) #5 thread_PyThread_start_joinable_thread /work/.pyenv/sources/3.14.3t/Python-3.14.3/./Modules/_threadmodule.c:1991:14 (libpython3.14t.so.1.0+0x5007d1) (BuildId: cb8f90e4c5e317580b5b21cb4ef066a699b7c085) #6 cfunction_call /work/.pyenv/sources/3.14.3t/Python-3.14.3/Objects/methodobject.c:564:18 (libpython3.14t.so.1.0+0x1db2f9) (BuildId: cb8f90e4c5e317580b5b21cb4ef066a699b7c085) #7 _PyObject_MakeTpCall /work/.pyenv/sources/3.14.3t/Python-3.14.3/Objects/call.c:242:18 (libpython3.14t.so.1.0+0x12b49e) (BuildId: cb8f90e4c5e317580b5b21cb4ef066a699b7c085) #8 _PyObject_VectorcallTstate /work/.pyenv/sources/3.14.3t/Python-3.14.3/./Include/internal/pycore_call.h:167:16 (libpython3.14t.so.1.0+0x12c0ba) (BuildId: cb8f90e4c5e317580b5b21cb4ef066a699b7c085) #9 PyObject_Vectorcall /work/.pyenv/sources/3.14.3t/Python-3.14.3/Objects/call.c:327:12 (libpython3.14t.so.1.0+0x12c0ba) #10 _PyEval_EvalFrameDefault /work/.pyenv/sources/3.14.3t/Python-3.14.3/Python/generated_cases.c.h:3230:35 (libpython3.14t.so.1.0+0x3421f7) (BuildId: cb8f90e4c5e317580b5b21cb4ef066a699b7c085) #11 _PyEval_EvalFrame /work/.pyenv/sources/3.14.3t/Python-3.14.3/./Include/internal/pycore_ceval.h:120:16 (libpython3.14t.so.1.0+0x336d80) (BuildId: cb8f90e4c5e317580b5b21cb4ef066a699b7c085) #12 _PyEval_Vector /work/.pyenv/sources/3.14.3t/Python-3.14.3/Python/ceval.c:2083:12 (libpython3.14t.so.1.0+0x336d80) #13 _PyFunction_Vectorcall /work/.pyenv/sources/3.14.3t/Python-3.14.3/Objects/call.c (libpython3.14t.so.1.0+0x12c691) (BuildId: cb8f90e4c5e317580b5b21cb4ef066a699b7c085) #14 _PyObject_VectorcallDictTstate /work/.pyenv/sources/3.14.3t/Python-3.14.3/Objects/call.c:146:15 (libpython3.14t.so.1.0+0x12b1e0) (BuildId: cb8f90e4c5e317580b5b21cb4ef066a699b7c085) #15 _PyObject_Call_Prepend /work/.pyenv/sources/3.14.3t/Python-3.14.3/Objects/call.c:504:24 (libpython3.14t.so.1.0+0x12ccd6) (BuildId: cb8f90e4c5e317580b5b21cb4ef066a699b7c085) #16 call_method /work/.pyenv/sources/3.14.3t/Python-3.14.3/Objects/typeobject.c:2937:19 (libpython3.14t.so.1.0+0x24d608) (BuildId: cb8f90e4c5e317580b5b21cb4ef066a699b7c085) #17 slot_tp_call /work/.pyenv/sources/3.14.3t/Python-3.14.3/Objects/typeobject.c:10254:12 (libpython3.14t.so.1.0+0x24d441) (BuildId: cb8f90e4c5e317580b5b21cb4ef066a699b7c085) #18 _PyObject_MakeTpCall /work/.pyenv/sources/3.14.3t/Python-3.14.3/Objects/call.c:242:18 (libpython3.14t.so.1.0+0x12b49e) (BuildId: cb8f90e4c5e317580b5b21cb4ef066a699b7c085) #19 _PyObject_VectorcallTstate /work/.pyenv/sources/3.14.3t/Python-3.14.3/./Include/internal/pycore_call.h:167:16 (libpython3.14t.so.1.0+0x12c0ba) (BuildId: cb8f90e4c5e317580b5b21cb4ef066a699b7c085) #20 PyObject_Vectorcall /work/.pyenv/sources/3.14.3t/Python-3.14.3/Objects/call.c:327:12 (libpython3.14t.so.1.0+0x12c0ba) #21 _PyEval_EvalFrameDefault /work/.pyenv/sources/3.14.3t/Python-3.14.3/Python/generated_cases.c.h:3230:35 (libpython3.14t.so.1.0+0x3421f7) (BuildId: cb8f90e4c5e317580b5b21cb4ef066a699b7c085) #22 _PyEval_EvalFrame /work/.pyenv/sources/3.14.3t/Python-3.14.3/./Include/internal/pycore_ceval.h:120:16 (libpython3.14t.so.1.0+0x336d80) (BuildId: cb8f90e4c5e317580b5b21cb4ef066a699b7c085) #23 _PyEval_Vector /work/.pyenv/sources/3.14.3t/Python-3.14.3/Python/ceval.c:2083:12 (libpython3.14t.so.1.0+0x336d80) #24 _PyFunction_Vectorcall /work/.pyenv/sources/3.14.3t/Python-3.14.3/Objects/call.c (libpython3.14t.so.1.0+0x12c691) (BuildId: cb8f90e4c5e317580b5b21cb4ef066a699b7c085) #25 _PyObject_VectorcallDictTstate /work/.pyenv/sources/3.14.3t/Python-3.14.3/Objects/call.c:146:15 (libpython3.14t.so.1.0+0x12b1e0) (BuildId: cb8f90e4c5e317580b5b21cb4ef066a699b7c085) #26 _PyObject_Call_Prepend /work/.pyenv/sources/3.14.3t/Python-3.14.3/Objects/call.c:504:24 (libpython3.14t.so.1.0+0x12ccd6) (BuildId: cb8f90e4c5e317580b5b21cb4ef066a699b7c085) #27 call_method /work/.pyenv/sources/3.14.3t/Python-3.14.3/Objects/typeobject.c:2937:19 (libpython3.14t.so.1.0+0x24d608) (BuildId: cb8f90e4c5e317580b5b21cb4ef066a699b7c085) #28 slot_tp_call /work/.pyenv/sources/3.14.3t/Python-3.14.3/Objects/typeobject.c:10254:12 (libpython3.14t.so.1.0+0x24d441) (BuildId: cb8f90e4c5e317580b5b21cb4ef066a699b7c085) #29 _PyObject_Call /work/.pyenv/sources/3.14.3t/Python-3.14.3/Objects/call.c:361:18 (libpython3.14t.so.1.0+0x12c2e4) (BuildId: cb8f90e4c5e317580b5b21cb4ef066a699b7c085) #30 PyObject_Call /work/.pyenv/sources/3.14.3t/Python-3.14.3/Objects/call.c:373:12 (libpython3.14t.so.1.0+0x12c387) (BuildId: cb8f90e4c5e317580b5b21cb4ef066a699b7c085) #31 _PyEval_EvalFrameDefault /work/.pyenv/sources/3.14.3t/Python-3.14.3/Python/generated_cases.c.h:2657:32 (libpython3.14t.so.1.0+0x33fc93) (BuildId: cb8f90e4c5e317580b5b21cb4ef066a699b7c085) #32 _PyEval_EvalFrame /work/.pyenv/sources/3.14.3t/Python-3.14.3/./Include/internal/pycore_ceval.h:120:16 (libpython3.14t.so.1.0+0x336d80) (BuildId: cb8f90e4c5e317580b5b21cb4ef066a699b7c085) #33 _PyEval_Vector /work/.pyenv/sources/3.14.3t/Python-3.14.3/Python/ceval.c:2083:12 (libpython3.14t.so.1.0+0x336d80) #34 _PyFunction_Vectorcall /work/.pyenv/sources/3.14.3t/Python-3.14.3/Objects/call.c (libpython3.14t.so.1.0+0x12c691) (BuildId: cb8f90e4c5e317580b5b21cb4ef066a699b7c085) #35 _PyObject_VectorcallDictTstate /work/.pyenv/sources/3.14.3t/Python-3.14.3/Objects/call.c:146:15 (libpython3.14t.so.1.0+0x12b1e0) (BuildId: cb8f90e4c5e317580b5b21cb4ef066a699b7c085) #36 _PyObject_Call_Prepend /work/.pyenv/sources/3.14.3t/Python-3.14.3/Objects/call.c:504:24 (libpython3.14t.so.1.0+0x12ccd6) (BuildId: cb8f90e4c5e317580b5b21cb4ef066a699b7c085) #37 call_method /work/.pyenv/sources/3.14.3t/Python-3.14.3/Objects/typeobject.c:2937:19 (libpython3.14t.so.1.0+0x24d608) (BuildId: cb8f90e4c5e317580b5b21cb4ef066a699b7c085) #38 slot_tp_call /work/.pyenv/sources/3.14.3t/Python-3.14.3/Objects/typeobject.c:10254:12 (libpython3.14t.so.1.0+0x24d441) (BuildId: cb8f90e4c5e317580b5b21cb4ef066a699b7c085) #39 _PyObject_MakeTpCall /work/.pyenv/sources/3.14.3t/Python-3.14.3/Objects/call.c:242:18 (libpython3.14t.so.1.0+0x12b49e) (BuildId: cb8f90e4c5e317580b5b21cb4ef066a699b7c085) #40 _PyObject_VectorcallTstate /work/.pyenv/sources/3.14.3t/Python-3.14.3/./Include/internal/pycore_call.h:167:16 (libpython3.14t.so.1.0+0x12c0ba) (BuildId: cb8f90e4c5e317580b5b21cb4ef066a699b7c085) #41 PyObject_Vectorcall /work/.pyenv/sources/3.14.3t/Python-3.14.3/Objects/call.c:327:12 (libpython3.14t.so.1.0+0x12c0ba) #42 _PyEval_EvalFrameDefault /work/.pyenv/sources/3.14.3t/Python-3.14.3/Python/generated_cases.c.h:3230:35 (libpython3.14t.so.1.0+0x3421f7) (BuildId: cb8f90e4c5e317580b5b21cb4ef066a699b7c085) #43 _PyEval_EvalFrame /work/.pyenv/sources/3.14.3t/Python-3.14.3/./Include/internal/pycore_ceval.h:120:16 (libpython3.14t.so.1.0+0x336d80) (BuildId: cb8f90e4c5e317580b5b21cb4ef066a699b7c085) #44 _PyEval_Vector /work/.pyenv/sources/3.14.3t/Python-3.14.3/Python/ceval.c:2083:12 (libpython3.14t.so.1.0+0x336d80) #45 _PyFunction_Vectorcall /work/.pyenv/sources/3.14.3t/Python-3.14.3/Objects/call.c (libpython3.14t.so.1.0+0x12c691) (BuildId: cb8f90e4c5e317580b5b21cb4ef066a699b7c085) #46 _PyObject_VectorcallDictTstate /work/.pyenv/sources/3.14.3t/Python-3.14.3/Objects/call.c:146:15 (libpython3.14t.so.1.0+0x12b1e0) (BuildId: cb8f90e4c5e317580b5b21cb4ef066a699b7c085) #47 _PyObject_Call_Prepend /work/.pyenv/sources/3.14.3t/Python-3.14.3/Objects/call.c:504:24 (libpython3.14t.so.1.0+0x12ccd6) (BuildId: cb8f90e4c5e317580b5b21cb4ef066a699b7c085) #48 call_method /work/.pyenv/sources/3.14.3t/Python-3.14.3/Objects/typeobject.c:2937:19 (libpython3.14t.so.1.0+0x24d608) (BuildId: cb8f90e4c5e317580b5b21cb4ef066a699b7c085) #49 slot_tp_call /work/.pyenv/sources/3.14.3t/Python-3.14.3/Objects/typeobject.c:10254:12 (libpython3.14t.so.1.0+0x24d441) (BuildId: cb8f90e4c5e317580b5b21cb4ef066a699b7c085) #50 _PyObject_MakeTpCall /work/.pyenv/sources/3.14.3t/Python-3.14.3/Objects/call.c:242:18 (libpython3.14t.so.1.0+0x12b49e) (BuildId: cb8f90e4c5e317580b5b21cb4ef066a699b7c085) #51 _PyObject_VectorcallTstate /work/.pyenv/sources/3.14.3t/Python-3.14.3/./Include/internal/pycore_call.h:167:16 (libpython3.14t.so.1.0+0x12c0ba) (BuildId: cb8f90e4c5e317580b5b21cb4ef066a699b7c085) #52 PyObject_Vectorcall /work/.pyenv/sources/3.14.3t/Python-3.14.3/Objects/call.c:327:12 (libpython3.14t.so.1.0+0x12c0ba) #53 _PyEval_EvalFrameDefault /work/.pyenv/sources/3.14.3t/Python-3.14.3/Python/generated_cases.c.h:2962:35 (libpython3.14t.so.1.0+0x341035) (BuildId: cb8f90e4c5e317580b5b21cb4ef066a699b7c085) #54 _PyEval_EvalFrame /work/.pyenv/sources/3.14.3t/Python-3.14.3/./Include/internal/pycore_ceval.h:120:16 (libpython3.14t.so.1.0+0x336d80) (BuildId: cb8f90e4c5e317580b5b21cb4ef066a699b7c085) #55 _PyEval_Vector /work/.pyenv/sources/3.14.3t/Python-3.14.3/Python/ceval.c:2083:12 (libpython3.14t.so.1.0+0x336d80) #56 _PyFunction_Vectorcall /work/.pyenv/sources/3.14.3t/Python-3.14.3/Objects/call.c (libpython3.14t.so.1.0+0x12c691) (BuildId: cb8f90e4c5e317580b5b21cb4ef066a699b7c085) #57 _PyObject_VectorcallDictTstate /work/.pyenv/sources/3.14.3t/Python-3.14.3/Objects/call.c:146:15 (libpython3.14t.so.1.0+0x12b1e0) (BuildId: cb8f90e4c5e317580b5b21cb4ef066a699b7c085) #58 _PyObject_Call_Prepend /work/.pyenv/sources/3.14.3t/Python-3.14.3/Objects/call.c:504:24 (libpython3.14t.so.1.0+0x12ccd6) (BuildId: cb8f90e4c5e317580b5b21cb4ef066a699b7c085) #59 call_method /work/.pyenv/sources/3.14.3t/Python-3.14.3/Objects/typeobject.c:2937:19 (libpython3.14t.so.1.0+0x24d608) (BuildId: cb8f90e4c5e317580b5b21cb4ef066a699b7c085) #60 slot_tp_call /work/.pyenv/sources/3.14.3t/Python-3.14.3/Objects/typeobject.c:10254:12 (libpython3.14t.so.1.0+0x24d441) (BuildId: cb8f90e4c5e317580b5b21cb4ef066a699b7c085) #61 _PyObject_MakeTpCall /work/.pyenv/sources/3.14.3t/Python-3.14.3/Objects/call.c:242:18 (libpython3.14t.so.1.0+0x12b49e) (BuildId: cb8f90e4c5e317580b5b21cb4ef066a699b7c085) #62 _PyObject_VectorcallTstate /work/.pyenv/sources/3.14.3t/Python-3.14.3/./Include/internal/pycore_call.h:167:16 (libpython3.14t.so.1.0+0x12c0ba) (BuildId: cb8f90e4c5e317580b5b21cb4ef066a699b7c085) #63 PyObject_Vectorcall /work/.pyenv/sources/3.14.3t/Python-3.14.3/Objects/call.c:327:12 (libpython3.14t.so.1.0+0x12c0ba) #64 _PyEval_EvalFrameDefault /work/.pyenv/sources/3.14.3t/Python-3.14.3/Python/generated_cases.c.h:2962:35 (libpython3.14t.so.1.0+0x341035) (BuildId: cb8f90e4c5e317580b5b21cb4ef066a699b7c085) #65 _PyEval_EvalFrame /work/.pyenv/sources/3.14.3t/Python-3.14.3/./Include/internal/pycore_ceval.h:120:16 (libpython3.14t.so.1.0+0x3368bf) (BuildId: cb8f90e4c5e317580b5b21cb4ef066a699b7c085) #66 _PyEval_Vector /work/.pyenv/sources/3.14.3t/Python-3.14.3/Python/ceval.c:2083:12 (libpython3.14t.so.1.0+0x3368bf) #67 PyEval_EvalCode /work/.pyenv/sources/3.14.3t/Python-3.14.3/Python/ceval.c:975:21 (libpython3.14t.so.1.0+0x3368bf) #68 builtin_exec_impl /work/.pyenv/sources/3.14.3t/Python-3.14.3/Python/bltinmodule.c:1180:17 (libpython3.14t.so.1.0+0x32fc23) (BuildId: cb8f90e4c5e317580b5b21cb4ef066a699b7c085) #69 builtin_exec /work/.pyenv/sources/3.14.3t/Python-3.14.3/Python/clinic/bltinmodule.c.h:571:20 (libpython3.14t.so.1.0+0x32fc23) #70 cfunction_vectorcall_FASTCALL_KEYWORDS /work/.pyenv/sources/3.14.3t/Python-3.14.3/Objects/methodobject.c:465:24 (libpython3.14t.so.1.0+0x1da645) (BuildId: cb8f90e4c5e317580b5b21cb4ef066a699b7c085) #71 _PyObject_VectorcallTstate /work/.pyenv/sources/3.14.3t/Python-3.14.3/./Include/internal/pycore_call.h:169:11 (libpython3.14t.so.1.0+0x12bffc) (BuildId: cb8f90e4c5e317580b5b21cb4ef066a699b7c085) #72 PyObject_Vectorcall /work/.pyenv/sources/3.14.3t/Python-3.14.3/Objects/call.c:327:12 (libpython3.14t.so.1.0+0x12bffc) #73 _PyEval_EvalFrameDefault /work/.pyenv/sources/3.14.3t/Python-3.14.3/Python/generated_cases.c.h:1622:35 (libpython3.14t.so.1.0+0x33be8f) (BuildId: cb8f90e4c5e317580b5b21cb4ef066a699b7c085) #74 _PyEval_EvalFrame /work/.pyenv/sources/3.14.3t/Python-3.14.3/./Include/internal/pycore_ceval.h:120:16 (libpython3.14t.so.1.0+0x336d80) (BuildId: cb8f90e4c5e317580b5b21cb4ef066a699b7c085) #75 _PyEval_Vector /work/.pyenv/sources/3.14.3t/Python-3.14.3/Python/ceval.c:2083:12 (libpython3.14t.so.1.0+0x336d80) #76 _PyFunction_Vectorcall /work/.pyenv/sources/3.14.3t/Python-3.14.3/Objects/call.c (libpython3.14t.so.1.0+0x12c691) (BuildId: cb8f90e4c5e317580b5b21cb4ef066a699b7c085) #77 _PyVectorcall_Call /work/.pyenv/sources/3.14.3t/Python-3.14.3/Objects/call.c:273:16 (libpython3.14t.so.1.0+0x12c317) (BuildId: cb8f90e4c5e317580b5b21cb4ef066a699b7c085) #78 _PyObject_Call /work/.pyenv/sources/3.14.3t/Python-3.14.3/Objects/call.c:348:16 (libpython3.14t.so.1.0+0x12c317) #79 PyObject_Call /work/.pyenv/sources/3.14.3t/Python-3.14.3/Objects/call.c:373:12 (libpython3.14t.so.1.0+0x12c387) (BuildId: cb8f90e4c5e317580b5b21cb4ef066a699b7c085) #80 pymain_run_module /work/.pyenv/sources/3.14.3t/Python-3.14.3/Modules/main.c:353:14 (libpython3.14t.so.1.0+0x45ea1e) (BuildId: cb8f90e4c5e317580b5b21cb4ef066a699b7c085) #81 pymain_run_python /work/.pyenv/sources/3.14.3t/Python-3.14.3/Modules/main.c:688:21 (libpython3.14t.so.1.0+0x45e0b0) (BuildId: cb8f90e4c5e317580b5b21cb4ef066a699b7c085) #82 Py_RunMain /work/.pyenv/sources/3.14.3t/Python-3.14.3/Modules/main.c:775:5 (libpython3.14t.so.1.0+0x45e0b0) #83 pymain_main /work/.pyenv/sources/3.14.3t/Python-3.14.3/Modules/main.c:805:12 (libpython3.14t.so.1.0+0x45e838) (BuildId: cb8f90e4c5e317580b5b21cb4ef066a699b7c085) #84 Py_BytesMain /work/.pyenv/sources/3.14.3t/Python-3.14.3/Modules/main.c:829:12 (libpython3.14t.so.1.0+0x45e8bc) (BuildId: cb8f90e4c5e317580b5b21cb4ef066a699b7c085) #85 main /work/.pyenv/sources/3.14.3t/Python-3.14.3/./Programs/python.c:15:12 (python3.14+0xe8c9b) (BuildId: de7a72a55f9634d4b8bebf4d6ad6ace6e892d873) SUMMARY: ThreadSanitizer: data race /work/.pyenv/sources/3.14.3t/Python-3.14.3/./Modules/_ctypes/_ctypes.c:592:15 in ctype_get_pointer_typeI'm trying to reduce this a little bit. I'm not sure if it only triggers on 3.14 or if it's possible on 3.15 as well. The CFFI CI was using free-threaded 3.14.3.
All done here?
set_typewasn't deprecated.Is that related to this issue? This issue seems to be about
SetPointerType, notset_type.SetPointerTypewas implemented usingset_type, and we discussed above that it would be good to deprecateset_type. But you're right that it's a different matter.I think this can be closed.
Reacted by Peter Bierma@encukou: What do you think of deprecating the
_ctypes.PyCPointerType.set_type()method? TheSetPointerType()function just called the method:def SetPointerType(pointer, cls): pointer.set_type(cls)
It makes sense, for the thread safety reasons. I left the issue open for that (my workflow would be to close this after opening the new one).
But I'm deferring to @ZeroIntensity now :)What thread safety issues come with
set_type? Looking at the implementation, nothing jumps out at me as super wrong.AFAIK it's this line in
PyCPointerType_SetProto:Py_XSETREF(stginfo->proto, Py_NewRef(proto));
Other code borrows
stginfo->proto, assuming that it's set only once for a given object.
We could add a lock around this, but sinceset_typeis unneeded*, undocumented, and as far as I can see essentially unused, it's probably better to get rid ofset_type& stick to single assignment forstginfo->proto.
* for background on the use case: the need for
SetPointerType/set_type-- "filling in" a pointer's type after creation -- is mentioned in ctypes 0.6.3+ docs (and earlier with a note that it “doesn't seem to work completely”). In 0.9.9.6 -- just before mergingctypesto stdlib -- the tutorial was updated: this use case is served by struct/union_fields_being “lazy“.Deprecating seems reasonable to me then, as long as there's a clear migration path.
Feature or enhancement
This was deprecated in #105733 alongside with
ctypes.ARRAY(), but the latter has been eventually soft deprecated instead.Linked PRs
ctypes.SetPointerType#133869