Skip to content

Remove deprecated and undocumented function ctypes.SetPointerType #133866

Description

@picnixz

Feature or enhancement

This was deprecated in #105733 alongside with ctypes.ARRAY(), but the latter has been eventually soft deprecated instead.

Linked PRs

Activity

  1. self-assigned this
    on May 11, 2025
  2. added
    type-featureA feature request or enhancement
    stdlibStandard Library Python modules in the Lib/ directory
    and removed on May 11, 2025
  3. kumaraditya303 commented on May 11, 2025

    @kumaraditya303
    Contributor

    +1 to remove SetPointerType as it is not thread safe too and can crash as the uses of info->proto use borrowed reference.

  4. picnixz commented on May 11, 2025

    @picnixz
    MemberAuthor

    Oh, do you mean that no one use should be using it? in this case, I'll remove the use set_type instead.

  5. kumaraditya303 commented on May 11, 2025

    @kumaraditya303
    Contributor

    Yes, you should remove the underlying C implementation as well.

  6. picnixz commented on May 11, 2025

    @picnixz
    MemberAuthor

    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)

  7. sergey-miryanov commented on May 11, 2025

    @sergey-miryanov
    Contributor

    set_type set proto for pointer type, that used in lot of places. Also, it will break external users like pyglet who implements IUnknown interface with _type_.

  8. vstinner commented on May 11, 2025

    @vstinner
    Member

    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.

  9. encukou commented on May 12, 2025

    @encukou
    Member

    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 replace set_type by the new API, in all use cases we're aware of. But let's give users time to report other use cases.

  10. added a commit that references this issue on May 29, 2025
  11. added a commit that references this issue on Jul 12, 2025
  12. added a commit that references this issue on Aug 4, 2025
  13. removed their assignment
    on Sep 16, 2025
  14. ngoldbaum commented on Mar 6, 2026

    @ngoldbaum
    Contributor

    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_type
    

    I'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.

  15. added a commit that references this issue on Jun 2, 2026
  16. ZeroIntensity commented on Jul 17, 2026

    @ZeroIntensity
    Member

    All done here?

  17. sergey-miryanov commented on Jul 17, 2026

    @sergey-miryanov
    Contributor

    set_type wasn't deprecated.

  18. ZeroIntensity commented on Jul 17, 2026

    @ZeroIntensity
    Member

    Is that related to this issue? This issue seems to be about SetPointerType, not set_type.

  19. sergey-miryanov commented on Jul 18, 2026

    @sergey-miryanov
    Contributor

    SetPointerType was implemented using set_type, and we discussed above that it would be good to deprecate set_type. But you're right that it's a different matter.

    I think this can be closed.

  20. vstinner commented on Jul 18, 2026

    @vstinner
    Member

    @encukou: What do you think of deprecating the _ctypes.PyCPointerType.set_type() method? The SetPointerType() function just called the method:

    def SetPointerType(pointer, cls):
        pointer.set_type(cls)
  21. encukou commented on Jul 19, 2026

    @encukou
    Member

    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 :)

  22. ZeroIntensity commented on Jul 21, 2026

    @ZeroIntensity
    Member

    What thread safety issues come with set_type? Looking at the implementation, nothing jumps out at me as super wrong.

  23. encukou commented on Jul 22, 2026

    @encukou
    Member

    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 since set_type is unneeded*, undocumented, and as far as I can see essentially unused, it's probably better to get rid of set_type & stick to single assignment for stginfo->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 merging ctypes to stdlib -- the tutorial was updated: this use case is served by struct/union _fields_ being “lazy“.

  24. ZeroIntensity commented on Jul 23, 2026

    @ZeroIntensity
    Member

    Deprecating seems reasonable to me then, as long as there's a clear migration path.

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

    stdlibStandard Library Python modules in the Lib/ directorytopic-ctypestype-featureA feature request or enhancement

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions