Skip to content

Instantly share code, notes, and snippets.

@vfdev-5
Created January 7, 2025 02:13
Show Gist options
  • Select an option

  • Save vfdev-5/450dddf763d1ef9039c4385722cf797c to your computer and use it in GitHub Desktop.

Select an option

Save vfdev-5/450dddf763d1ef9039c4385722cf797c to your computer and use it in GitHub Desktop.
another cpython stgdict free-theading
==================
WARNING: ThreadSanitizer: data race (pid=264065)
Read of size 4 at 0x7fffb80a0430 by thread T17:
#0 PyCStructUnionType_update_stginfo /project/cpython/./Modules/_ctypes/stgdict.c:438:19 (_ctypes.cpython-313t-x86_64-linux-gnu.so+0x20976) (BuildId: 6a7727f376cee83a3124898fe6eb84e45e3a54bc)
#1 PyCStructType_setattro /project/cpython/./Modules/_ctypes/_ctypes.c:1096:16 (_ctypes.cpython-313t-x86_64-linux-gnu.so+0xc809) (BuildId: 6a7727f376cee83a3124898fe6eb84e45e3a54bc)
#2 PyObject_SetAttr /project/cpython/Objects/object.c:1415:15 (python3.13t+0x294fba) (BuildId: 65e52348ca9319985f9f5e265fd43aab2c867d59)
#3 StructUnionType_init /project/cpython/./Modules/_ctypes/_ctypes.c:685:13 (_ctypes.cpython-313t-x86_64-linux-gnu.so+0xe222) (BuildId: 6a7727f376cee83a3124898fe6eb84e45e3a54bc)
#4 PyCStructType_init /project/cpython/./Modules/_ctypes/_ctypes.c:715:12 (_ctypes.cpython-313t-x86_64-linux-gnu.so+0xc84a) (BuildId: 6a7727f376cee83a3124898fe6eb84e45e3a54bc)
#5 type_call /project/cpython/Objects/typeobject.c:1993:19 (python3.13t+0x2eb21c) (BuildId: 65e52348ca9319985f9f5e265fd43aab2c867d59)
#6 _PyObject_MakeTpCall /project/cpython/Objects/call.c:242:18 (python3.13t+0x1ea44c) (BuildId: 65e52348ca9319985f9f5e265fd43aab2c867d59)
#7 _PyObject_VectorcallDictTstate /project/cpython/Objects/call.c:130:16 (python3.13t+0x1ea1cd) (BuildId: 65e52348ca9319985f9f5e265fd43aab2c867d59)
#8 PyObject_VectorcallDict /project/cpython/Objects/call.c:159:12 (python3.13t+0x1eaa6c) (BuildId: 65e52348ca9319985f9f5e265fd43aab2c867d59)
#9 builtin___build_class__ /project/cpython/Python/bltinmodule.c:210:15 (python3.13t+0x3d6a4f) (BuildId: 65e52348ca9319985f9f5e265fd43aab2c867d59)
#10 cfunction_vectorcall_FASTCALL_KEYWORDS /project/cpython/Objects/methodobject.c:441:24 (python3.13t+0x289f20) (BuildId: 65e52348ca9319985f9f5e265fd43aab2c867d59)
#11 _PyObject_VectorcallTstate /project/cpython/./Include/internal/pycore_call.h:168:11 (python3.13t+0x1eafea) (BuildId: 65e52348ca9319985f9f5e265fd43aab2c867d59)
#12 PyObject_Vectorcall /project/cpython/Objects/call.c:327:12 (python3.13t+0x1eafea)
#13 _PyEval_EvalFrameDefault /project/cpython/Python/generated_cases.c.h:813:23 (python3.13t+0x3e28eb) (BuildId: 65e52348ca9319985f9f5e265fd43aab2c867d59)
#14 _PyEval_EvalFrame /project/cpython/./Include/internal/pycore_ceval.h:119:16 (python3.13t+0x3dea1a) (BuildId: 65e52348ca9319985f9f5e265fd43aab2c867d59)
#15 _PyEval_Vector /project/cpython/Python/ceval.c:1807:12 (python3.13t+0x3dea1a)
#16 _PyFunction_Vectorcall /project/cpython/Objects/call.c (python3.13t+0x1eb65f) (BuildId: 65e52348ca9319985f9f5e265fd43aab2c867d59)
#17 _PyObject_VectorcallTstate /project/cpython/./Include/internal/pycore_call.h:168:11 (python3.13t+0x1ef62f) (BuildId: 65e52348ca9319985f9f5e265fd43aab2c867d59)
#18 method_vectorcall /project/cpython/Objects/classobject.c:70:20 (python3.13t+0x1ef62f)
#19 _PyVectorcall_Call /project/cpython/Objects/call.c:273:16 (python3.13t+0x1eb2d3) (BuildId: 65e52348ca9319985f9f5e265fd43aab2c867d59)
#20 _PyObject_Call /project/cpython/Objects/call.c:348:16 (python3.13t+0x1eb2d3)
#21 PyObject_Call /project/cpython/Objects/call.c:373:12 (python3.13t+0x1eb355) (BuildId: 65e52348ca9319985f9f5e265fd43aab2c867d59)
#22 thread_run /project/cpython/./Modules/_threadmodule.c:337:21 (python3.13t+0x5649f2) (BuildId: 65e52348ca9319985f9f5e265fd43aab2c867d59)
#23 pythread_wrapper /project/cpython/Python/thread_pthread.h:243:5 (python3.13t+0x4bdd97) (BuildId: 65e52348ca9319985f9f5e265fd43aab2c867d59)
Previous write of size 4 at 0x7fffb80a0430 by thread T8:
#0 PyCStructUnionType_update_stginfo /project/cpython/./Modules/_ctypes/stgdict.c:441:21 (_ctypes.cpython-313t-x86_64-linux-gnu.so+0x209f3) (BuildId: 6a7727f376cee83a3124898fe6eb84e45e3a54bc)
#1 PyCStructType_setattro /project/cpython/./Modules/_ctypes/_ctypes.c:1096:16 (_ctypes.cpython-313t-x86_64-linux-gnu.so+0xc809) (BuildId: 6a7727f376cee83a3124898fe6eb84e45e3a54bc)
#2 PyObject_SetAttr /project/cpython/Objects/object.c:1415:15 (python3.13t+0x294fba) (BuildId: 65e52348ca9319985f9f5e265fd43aab2c867d59)
#3 StructUnionType_init /project/cpython/./Modules/_ctypes/_ctypes.c:685:13 (_ctypes.cpython-313t-x86_64-linux-gnu.so+0xe222) (BuildId: 6a7727f376cee83a3124898fe6eb84e45e3a54bc)
#4 PyCStructType_init /project/cpython/./Modules/_ctypes/_ctypes.c:715:12 (_ctypes.cpython-313t-x86_64-linux-gnu.so+0xc84a) (BuildId: 6a7727f376cee83a3124898fe6eb84e45e3a54bc)
#5 type_call /project/cpython/Objects/typeobject.c:1993:19 (python3.13t+0x2eb21c) (BuildId: 65e52348ca9319985f9f5e265fd43aab2c867d59)
#6 _PyObject_MakeTpCall /project/cpython/Objects/call.c:242:18 (python3.13t+0x1ea44c) (BuildId: 65e52348ca9319985f9f5e265fd43aab2c867d59)
#7 _PyObject_VectorcallDictTstate /project/cpython/Objects/call.c:130:16 (python3.13t+0x1ea1cd) (BuildId: 65e52348ca9319985f9f5e265fd43aab2c867d59)
#8 PyObject_VectorcallDict /project/cpython/Objects/call.c:159:12 (python3.13t+0x1eaa6c) (BuildId: 65e52348ca9319985f9f5e265fd43aab2c867d59)
#9 builtin___build_class__ /project/cpython/Python/bltinmodule.c:210:15 (python3.13t+0x3d6a4f) (BuildId: 65e52348ca9319985f9f5e265fd43aab2c867d59)
#10 cfunction_vectorcall_FASTCALL_KEYWORDS /project/cpython/Objects/methodobject.c:441:24 (python3.13t+0x289f20) (BuildId: 65e52348ca9319985f9f5e265fd43aab2c867d59)
#11 _PyObject_VectorcallTstate /project/cpython/./Include/internal/pycore_call.h:168:11 (python3.13t+0x1eafea) (BuildId: 65e52348ca9319985f9f5e265fd43aab2c867d59)
#12 PyObject_Vectorcall /project/cpython/Objects/call.c:327:12 (python3.13t+0x1eafea)
#13 _PyEval_EvalFrameDefault /project/cpython/Python/generated_cases.c.h:813:23 (python3.13t+0x3e28eb) (BuildId: 65e52348ca9319985f9f5e265fd43aab2c867d59)
#14 _PyEval_EvalFrame /project/cpython/./Include/internal/pycore_ceval.h:119:16 (python3.13t+0x3dea1a) (BuildId: 65e52348ca9319985f9f5e265fd43aab2c867d59)
#15 _PyEval_Vector /project/cpython/Python/ceval.c:1807:12 (python3.13t+0x3dea1a)
#16 _PyFunction_Vectorcall /project/cpython/Objects/call.c (python3.13t+0x1eb65f) (BuildId: 65e52348ca9319985f9f5e265fd43aab2c867d59)
#17 _PyObject_VectorcallTstate /project/cpython/./Include/internal/pycore_call.h:168:11 (python3.13t+0x1ef62f) (BuildId: 65e52348ca9319985f9f5e265fd43aab2c867d59)
#18 method_vectorcall /project/cpython/Objects/classobject.c:70:20 (python3.13t+0x1ef62f)
#19 _PyVectorcall_Call /project/cpython/Objects/call.c:273:16 (python3.13t+0x1eb2d3) (BuildId: 65e52348ca9319985f9f5e265fd43aab2c867d59)
#20 _PyObject_Call /project/cpython/Objects/call.c:348:16 (python3.13t+0x1eb2d3)
#21 PyObject_Call /project/cpython/Objects/call.c:373:12 (python3.13t+0x1eb355) (BuildId: 65e52348ca9319985f9f5e265fd43aab2c867d59)
#22 thread_run /project/cpython/./Modules/_threadmodule.c:337:21 (python3.13t+0x5649f2) (BuildId: 65e52348ca9319985f9f5e265fd43aab2c867d59)
#23 pythread_wrapper /project/cpython/Python/thread_pthread.h:243:5 (python3.13t+0x4bdd97) (BuildId: 65e52348ca9319985f9f5e265fd43aab2c867d59)
Thread T17 (tid=264083, running) created by main thread at:
#0 pthread_create <null> (python3.13t+0xde1df) (BuildId: 65e52348ca9319985f9f5e265fd43aab2c867d59)
#1 do_start_joinable_thread /project/cpython/Python/thread_pthread.h:290:14 (python3.13t+0x4bcc48) (BuildId: 65e52348ca9319985f9f5e265fd43aab2c867d59)
#2 PyThread_start_joinable_thread /project/cpython/Python/thread_pthread.h:314:9 (python3.13t+0x4bca6a) (BuildId: 65e52348ca9319985f9f5e265fd43aab2c867d59)
#3 ThreadHandle_start /project/cpython/./Modules/_threadmodule.c:422:9 (python3.13t+0x564587) (BuildId: 65e52348ca9319985f9f5e265fd43aab2c867d59)
#4 do_start_new_thread /project/cpython/./Modules/_threadmodule.c:1849:9 (python3.13t+0x564587)
#5 thread_PyThread_start_joinable_thread /project/cpython/./Modules/_threadmodule.c:1972:14 (python3.13t+0x563621) (BuildId: 65e52348ca9319985f9f5e265fd43aab2c867d59)
#6 cfunction_call /project/cpython/Objects/methodobject.c:540:18 (python3.13t+0x28abb7) (BuildId: 65e52348ca9319985f9f5e265fd43aab2c867d59)
#7 _PyObject_MakeTpCall /project/cpython/Objects/call.c:242:18 (python3.13t+0x1ea44c) (BuildId: 65e52348ca9319985f9f5e265fd43aab2c867d59)
#8 _PyObject_VectorcallTstate /project/cpython/./Include/internal/pycore_call.h:166:16 (python3.13t+0x1eb0a8) (BuildId: 65e52348ca9319985f9f5e265fd43aab2c867d59)
#9 PyObject_Vectorcall /project/cpython/Objects/call.c:327:12 (python3.13t+0x1eb0a8)
#10 _PyEval_EvalFrameDefault /project/cpython/Python/generated_cases.c.h:1502:19 (python3.13t+0x3e556d) (BuildId: 65e52348ca9319985f9f5e265fd43aab2c867d59)
#11 _PyEval_EvalFrame /project/cpython/./Include/internal/pycore_ceval.h:119:16 (python3.13t+0x3de6f2) (BuildId: 65e52348ca9319985f9f5e265fd43aab2c867d59)
#12 _PyEval_Vector /project/cpython/Python/ceval.c:1807:12 (python3.13t+0x3de6f2)
#13 PyEval_EvalCode /project/cpython/Python/ceval.c:597:21 (python3.13t+0x3de6f2)
#14 run_eval_code_obj /project/cpython/Python/pythonrun.c:1337:9 (python3.13t+0x4a0a5e) (BuildId: 65e52348ca9319985f9f5e265fd43aab2c867d59)
#15 run_mod /project/cpython/Python/pythonrun.c:1422:19 (python3.13t+0x4a0185) (BuildId: 65e52348ca9319985f9f5e265fd43aab2c867d59)
#16 pyrun_file /project/cpython/Python/pythonrun.c:1255:15 (python3.13t+0x49c280) (BuildId: 65e52348ca9319985f9f5e265fd43aab2c867d59)
#17 _PyRun_SimpleFileObject /project/cpython/Python/pythonrun.c:490:13 (python3.13t+0x49c280)
#18 _PyRun_AnyFileObject /project/cpython/Python/pythonrun.c:77:15 (python3.13t+0x49b948) (BuildId: 65e52348ca9319985f9f5e265fd43aab2c867d59)
#19 pymain_run_file_obj /project/cpython/Modules/main.c:410:15 (python3.13t+0x4d7e6f) (BuildId: 65e52348ca9319985f9f5e265fd43aab2c867d59)
#20 pymain_run_file /project/cpython/Modules/main.c:429:15 (python3.13t+0x4d7e6f)
#21 pymain_run_python /project/cpython/Modules/main.c:697:21 (python3.13t+0x4d70bc) (BuildId: 65e52348ca9319985f9f5e265fd43aab2c867d59)
#22 Py_RunMain /project/cpython/Modules/main.c:776:5 (python3.13t+0x4d70bc)
#23 pymain_main /project/cpython/Modules/main.c:806:12 (python3.13t+0x4d74f8) (BuildId: 65e52348ca9319985f9f5e265fd43aab2c867d59)
#24 Py_BytesMain /project/cpython/Modules/main.c:830:12 (python3.13t+0x4d757b) (BuildId: 65e52348ca9319985f9f5e265fd43aab2c867d59)
#25 main /project/cpython/./Programs/python.c:15:12 (python3.13t+0x15c7eb) (BuildId: 65e52348ca9319985f9f5e265fd43aab2c867d59)
Thread T8 (tid=264074, running) created by main thread at:
#0 pthread_create <null> (python3.13t+0xde1df) (BuildId: 65e52348ca9319985f9f5e265fd43aab2c867d59)
#1 do_start_joinable_thread /project/cpython/Python/thread_pthread.h:290:14 (python3.13t+0x4bcc48) (BuildId: 65e52348ca9319985f9f5e265fd43aab2c867d59)
#2 PyThread_start_joinable_thread /project/cpython/Python/thread_pthread.h:314:9 (python3.13t+0x4bca6a) (BuildId: 65e52348ca9319985f9f5e265fd43aab2c867d59)
#3 ThreadHandle_start /project/cpython/./Modules/_threadmodule.c:422:9 (python3.13t+0x564587) (BuildId: 65e52348ca9319985f9f5e265fd43aab2c867d59)
#4 do_start_new_thread /project/cpython/./Modules/_threadmodule.c:1849:9 (python3.13t+0x564587)
#5 thread_PyThread_start_joinable_thread /project/cpython/./Modules/_threadmodule.c:1972:14 (python3.13t+0x563621) (BuildId: 65e52348ca9319985f9f5e265fd43aab2c867d59)
#6 cfunction_call /project/cpython/Objects/methodobject.c:540:18 (python3.13t+0x28abb7) (BuildId: 65e52348ca9319985f9f5e265fd43aab2c867d59)
#7 _PyObject_MakeTpCall /project/cpython/Objects/call.c:242:18 (python3.13t+0x1ea44c) (BuildId: 65e52348ca9319985f9f5e265fd43aab2c867d59)
#8 _PyObject_VectorcallTstate /project/cpython/./Include/internal/pycore_call.h:166:16 (python3.13t+0x1eb0a8) (BuildId: 65e52348ca9319985f9f5e265fd43aab2c867d59)
#9 PyObject_Vectorcall /project/cpython/Objects/call.c:327:12 (python3.13t+0x1eb0a8)
#10 _PyEval_EvalFrameDefault /project/cpython/Python/generated_cases.c.h:1502:19 (python3.13t+0x3e556d) (BuildId: 65e52348ca9319985f9f5e265fd43aab2c867d59)
#11 _PyEval_EvalFrame /project/cpython/./Include/internal/pycore_ceval.h:119:16 (python3.13t+0x3de6f2) (BuildId: 65e52348ca9319985f9f5e265fd43aab2c867d59)
#12 _PyEval_Vector /project/cpython/Python/ceval.c:1807:12 (python3.13t+0x3de6f2)
#13 PyEval_EvalCode /project/cpython/Python/ceval.c:597:21 (python3.13t+0x3de6f2)
#14 run_eval_code_obj /project/cpython/Python/pythonrun.c:1337:9 (python3.13t+0x4a0a5e) (BuildId: 65e52348ca9319985f9f5e265fd43aab2c867d59)
#15 run_mod /project/cpython/Python/pythonrun.c:1422:19 (python3.13t+0x4a0185) (BuildId: 65e52348ca9319985f9f5e265fd43aab2c867d59)
#16 pyrun_file /project/cpython/Python/pythonrun.c:1255:15 (python3.13t+0x49c280) (BuildId: 65e52348ca9319985f9f5e265fd43aab2c867d59)
#17 _PyRun_SimpleFileObject /project/cpython/Python/pythonrun.c:490:13 (python3.13t+0x49c280)
#18 _PyRun_AnyFileObject /project/cpython/Python/pythonrun.c:77:15 (python3.13t+0x49b948) (BuildId: 65e52348ca9319985f9f5e265fd43aab2c867d59)
#19 pymain_run_file_obj /project/cpython/Modules/main.c:410:15 (python3.13t+0x4d7e6f) (BuildId: 65e52348ca9319985f9f5e265fd43aab2c867d59)
#20 pymain_run_file /project/cpython/Modules/main.c:429:15 (python3.13t+0x4d7e6f)
#21 pymain_run_python /project/cpython/Modules/main.c:697:21 (python3.13t+0x4d70bc) (BuildId: 65e52348ca9319985f9f5e265fd43aab2c867d59)
#22 Py_RunMain /project/cpython/Modules/main.c:776:5 (python3.13t+0x4d70bc)
#23 pymain_main /project/cpython/Modules/main.c:806:12 (python3.13t+0x4d74f8) (BuildId: 65e52348ca9319985f9f5e265fd43aab2c867d59)
#24 Py_BytesMain /project/cpython/Modules/main.c:830:12 (python3.13t+0x4d757b) (BuildId: 65e52348ca9319985f9f5e265fd43aab2c867d59)
#25 main /project/cpython/./Programs/python.c:15:12 (python3.13t+0x15c7eb) (BuildId: 65e52348ca9319985f9f5e265fd43aab2c867d59)
SUMMARY: ThreadSanitizer: data race /project/cpython/./Modules/_ctypes/stgdict.c:438:19 in PyCStructUnionType_update_stginfo
==================
==================
WARNING: ThreadSanitizer: data race (pid=264065)
Write of size 4 at 0x7fffb80a0430 by thread T7:
#0 PyCStructUnionType_update_stginfo /project/cpython/./Modules/_ctypes/stgdict.c:441:21 (_ctypes.cpython-313t-x86_64-linux-gnu.so+0x209f3) (BuildId: 6a7727f376cee83a3124898fe6eb84e45e3a54bc)
#1 PyCStructType_setattro /project/cpython/./Modules/_ctypes/_ctypes.c:1096:16 (_ctypes.cpython-313t-x86_64-linux-gnu.so+0xc809) (BuildId: 6a7727f376cee83a3124898fe6eb84e45e3a54bc)
#2 PyObject_SetAttr /project/cpython/Objects/object.c:1415:15 (python3.13t+0x294fba) (BuildId: 65e52348ca9319985f9f5e265fd43aab2c867d59)
#3 StructUnionType_init /project/cpython/./Modules/_ctypes/_ctypes.c:685:13 (_ctypes.cpython-313t-x86_64-linux-gnu.so+0xe222) (BuildId: 6a7727f376cee83a3124898fe6eb84e45e3a54bc)
#4 PyCStructType_init /project/cpython/./Modules/_ctypes/_ctypes.c:715:12 (_ctypes.cpython-313t-x86_64-linux-gnu.so+0xc84a) (BuildId: 6a7727f376cee83a3124898fe6eb84e45e3a54bc)
#5 type_call /project/cpython/Objects/typeobject.c:1993:19 (python3.13t+0x2eb21c) (BuildId: 65e52348ca9319985f9f5e265fd43aab2c867d59)
#6 _PyObject_MakeTpCall /project/cpython/Objects/call.c:242:18 (python3.13t+0x1ea44c) (BuildId: 65e52348ca9319985f9f5e265fd43aab2c867d59)
#7 _PyObject_VectorcallDictTstate /project/cpython/Objects/call.c:130:16 (python3.13t+0x1ea1cd) (BuildId: 65e52348ca9319985f9f5e265fd43aab2c867d59)
#8 PyObject_VectorcallDict /project/cpython/Objects/call.c:159:12 (python3.13t+0x1eaa6c) (BuildId: 65e52348ca9319985f9f5e265fd43aab2c867d59)
#9 builtin___build_class__ /project/cpython/Python/bltinmodule.c:210:15 (python3.13t+0x3d6a4f) (BuildId: 65e52348ca9319985f9f5e265fd43aab2c867d59)
#10 cfunction_vectorcall_FASTCALL_KEYWORDS /project/cpython/Objects/methodobject.c:441:24 (python3.13t+0x289f20) (BuildId: 65e52348ca9319985f9f5e265fd43aab2c867d59)
#11 _PyObject_VectorcallTstate /project/cpython/./Include/internal/pycore_call.h:168:11 (python3.13t+0x1eafea) (BuildId: 65e52348ca9319985f9f5e265fd43aab2c867d59)
#12 PyObject_Vectorcall /project/cpython/Objects/call.c:327:12 (python3.13t+0x1eafea)
#13 _PyEval_EvalFrameDefault /project/cpython/Python/generated_cases.c.h:813:23 (python3.13t+0x3e28eb) (BuildId: 65e52348ca9319985f9f5e265fd43aab2c867d59)
#14 _PyEval_EvalFrame /project/cpython/./Include/internal/pycore_ceval.h:119:16 (python3.13t+0x3dea1a) (BuildId: 65e52348ca9319985f9f5e265fd43aab2c867d59)
#15 _PyEval_Vector /project/cpython/Python/ceval.c:1807:12 (python3.13t+0x3dea1a)
#16 _PyFunction_Vectorcall /project/cpython/Objects/call.c (python3.13t+0x1eb65f) (BuildId: 65e52348ca9319985f9f5e265fd43aab2c867d59)
#17 _PyObject_VectorcallTstate /project/cpython/./Include/internal/pycore_call.h:168:11 (python3.13t+0x1ef62f) (BuildId: 65e52348ca9319985f9f5e265fd43aab2c867d59)
#18 method_vectorcall /project/cpython/Objects/classobject.c:70:20 (python3.13t+0x1ef62f)
#19 _PyVectorcall_Call /project/cpython/Objects/call.c:273:16 (python3.13t+0x1eb2d3) (BuildId: 65e52348ca9319985f9f5e265fd43aab2c867d59)
#20 _PyObject_Call /project/cpython/Objects/call.c:348:16 (python3.13t+0x1eb2d3)
#21 PyObject_Call /project/cpython/Objects/call.c:373:12 (python3.13t+0x1eb355) (BuildId: 65e52348ca9319985f9f5e265fd43aab2c867d59)
#22 thread_run /project/cpython/./Modules/_threadmodule.c:337:21 (python3.13t+0x5649f2) (BuildId: 65e52348ca9319985f9f5e265fd43aab2c867d59)
#23 pythread_wrapper /project/cpython/Python/thread_pthread.h:243:5 (python3.13t+0x4bdd97) (BuildId: 65e52348ca9319985f9f5e265fd43aab2c867d59)
Previous write of size 4 at 0x7fffb80a0430 by thread T12:
#0 PyCStructUnionType_update_stginfo /project/cpython/./Modules/_ctypes/stgdict.c:441:21 (_ctypes.cpython-313t-x86_64-linux-gnu.so+0x209f3) (BuildId: 6a7727f376cee83a3124898fe6eb84e45e3a54bc)
#1 PyCStructType_setattro /project/cpython/./Modules/_ctypes/_ctypes.c:1096:16 (_ctypes.cpython-313t-x86_64-linux-gnu.so+0xc809) (BuildId: 6a7727f376cee83a3124898fe6eb84e45e3a54bc)
#2 PyObject_SetAttr /project/cpython/Objects/object.c:1415:15 (python3.13t+0x294fba) (BuildId: 65e52348ca9319985f9f5e265fd43aab2c867d59)
#3 StructUnionType_init /project/cpython/./Modules/_ctypes/_ctypes.c:685:13 (_ctypes.cpython-313t-x86_64-linux-gnu.so+0xe222) (BuildId: 6a7727f376cee83a3124898fe6eb84e45e3a54bc)
#4 PyCStructType_init /project/cpython/./Modules/_ctypes/_ctypes.c:715:12 (_ctypes.cpython-313t-x86_64-linux-gnu.so+0xc84a) (BuildId: 6a7727f376cee83a3124898fe6eb84e45e3a54bc)
#5 type_call /project/cpython/Objects/typeobject.c:1993:19 (python3.13t+0x2eb21c) (BuildId: 65e52348ca9319985f9f5e265fd43aab2c867d59)
#6 _PyObject_MakeTpCall /project/cpython/Objects/call.c:242:18 (python3.13t+0x1ea44c) (BuildId: 65e52348ca9319985f9f5e265fd43aab2c867d59)
#7 _PyObject_VectorcallDictTstate /project/cpython/Objects/call.c:130:16 (python3.13t+0x1ea1cd) (BuildId: 65e52348ca9319985f9f5e265fd43aab2c867d59)
#8 PyObject_VectorcallDict /project/cpython/Objects/call.c:159:12 (python3.13t+0x1eaa6c) (BuildId: 65e52348ca9319985f9f5e265fd43aab2c867d59)
#9 builtin___build_class__ /project/cpython/Python/bltinmodule.c:210:15 (python3.13t+0x3d6a4f) (BuildId: 65e52348ca9319985f9f5e265fd43aab2c867d59)
#10 cfunction_vectorcall_FASTCALL_KEYWORDS /project/cpython/Objects/methodobject.c:441:24 (python3.13t+0x289f20) (BuildId: 65e52348ca9319985f9f5e265fd43aab2c867d59)
#11 _PyObject_VectorcallTstate /project/cpython/./Include/internal/pycore_call.h:168:11 (python3.13t+0x1eafea) (BuildId: 65e52348ca9319985f9f5e265fd43aab2c867d59)
#12 PyObject_Vectorcall /project/cpython/Objects/call.c:327:12 (python3.13t+0x1eafea)
#13 _PyEval_EvalFrameDefault /project/cpython/Python/generated_cases.c.h:813:23 (python3.13t+0x3e28eb) (BuildId: 65e52348ca9319985f9f5e265fd43aab2c867d59)
#14 _PyEval_EvalFrame /project/cpython/./Include/internal/pycore_ceval.h:119:16 (python3.13t+0x3dea1a) (BuildId: 65e52348ca9319985f9f5e265fd43aab2c867d59)
#15 _PyEval_Vector /project/cpython/Python/ceval.c:1807:12 (python3.13t+0x3dea1a)
#16 _PyFunction_Vectorcall /project/cpython/Objects/call.c (python3.13t+0x1eb65f) (BuildId: 65e52348ca9319985f9f5e265fd43aab2c867d59)
#17 _PyObject_VectorcallTstate /project/cpython/./Include/internal/pycore_call.h:168:11 (python3.13t+0x1ef62f) (BuildId: 65e52348ca9319985f9f5e265fd43aab2c867d59)
#18 method_vectorcall /project/cpython/Objects/classobject.c:70:20 (python3.13t+0x1ef62f)
#19 _PyVectorcall_Call /project/cpython/Objects/call.c:273:16 (python3.13t+0x1eb2d3) (BuildId: 65e52348ca9319985f9f5e265fd43aab2c867d59)
#20 _PyObject_Call /project/cpython/Objects/call.c:348:16 (python3.13t+0x1eb2d3)
#21 PyObject_Call /project/cpython/Objects/call.c:373:12 (python3.13t+0x1eb355) (BuildId: 65e52348ca9319985f9f5e265fd43aab2c867d59)
#22 thread_run /project/cpython/./Modules/_threadmodule.c:337:21 (python3.13t+0x5649f2) (BuildId: 65e52348ca9319985f9f5e265fd43aab2c867d59)
#23 pythread_wrapper /project/cpython/Python/thread_pthread.h:243:5 (python3.13t+0x4bdd97) (BuildId: 65e52348ca9319985f9f5e265fd43aab2c867d59)
Thread T7 (tid=264073, running) created by main thread at:
#0 pthread_create <null> (python3.13t+0xde1df) (BuildId: 65e52348ca9319985f9f5e265fd43aab2c867d59)
#1 do_start_joinable_thread /project/cpython/Python/thread_pthread.h:290:14 (python3.13t+0x4bcc48) (BuildId: 65e52348ca9319985f9f5e265fd43aab2c867d59)
#2 PyThread_start_joinable_thread /project/cpython/Python/thread_pthread.h:314:9 (python3.13t+0x4bca6a) (BuildId: 65e52348ca9319985f9f5e265fd43aab2c867d59)
#3 ThreadHandle_start /project/cpython/./Modules/_threadmodule.c:422:9 (python3.13t+0x564587) (BuildId: 65e52348ca9319985f9f5e265fd43aab2c867d59)
#4 do_start_new_thread /project/cpython/./Modules/_threadmodule.c:1849:9 (python3.13t+0x564587)
#5 thread_PyThread_start_joinable_thread /project/cpython/./Modules/_threadmodule.c:1972:14 (python3.13t+0x563621) (BuildId: 65e52348ca9319985f9f5e265fd43aab2c867d59)
#6 cfunction_call /project/cpython/Objects/methodobject.c:540:18 (python3.13t+0x28abb7) (BuildId: 65e52348ca9319985f9f5e265fd43aab2c867d59)
#7 _PyObject_MakeTpCall /project/cpython/Objects/call.c:242:18 (python3.13t+0x1ea44c) (BuildId: 65e52348ca9319985f9f5e265fd43aab2c867d59)
#8 _PyObject_VectorcallTstate /project/cpython/./Include/internal/pycore_call.h:166:16 (python3.13t+0x1eb0a8) (BuildId: 65e52348ca9319985f9f5e265fd43aab2c867d59)
#9 PyObject_Vectorcall /project/cpython/Objects/call.c:327:12 (python3.13t+0x1eb0a8)
#10 _PyEval_EvalFrameDefault /project/cpython/Python/generated_cases.c.h:1502:19 (python3.13t+0x3e556d) (BuildId: 65e52348ca9319985f9f5e265fd43aab2c867d59)
#11 _PyEval_EvalFrame /project/cpython/./Include/internal/pycore_ceval.h:119:16 (python3.13t+0x3de6f2) (BuildId: 65e52348ca9319985f9f5e265fd43aab2c867d59)
#12 _PyEval_Vector /project/cpython/Python/ceval.c:1807:12 (python3.13t+0x3de6f2)
#13 PyEval_EvalCode /project/cpython/Python/ceval.c:597:21 (python3.13t+0x3de6f2)
#14 run_eval_code_obj /project/cpython/Python/pythonrun.c:1337:9 (python3.13t+0x4a0a5e) (BuildId: 65e52348ca9319985f9f5e265fd43aab2c867d59)
#15 run_mod /project/cpython/Python/pythonrun.c:1422:19 (python3.13t+0x4a0185) (BuildId: 65e52348ca9319985f9f5e265fd43aab2c867d59)
#16 pyrun_file /project/cpython/Python/pythonrun.c:1255:15 (python3.13t+0x49c280) (BuildId: 65e52348ca9319985f9f5e265fd43aab2c867d59)
#17 _PyRun_SimpleFileObject /project/cpython/Python/pythonrun.c:490:13 (python3.13t+0x49c280)
#18 _PyRun_AnyFileObject /project/cpython/Python/pythonrun.c:77:15 (python3.13t+0x49b948) (BuildId: 65e52348ca9319985f9f5e265fd43aab2c867d59)
#19 pymain_run_file_obj /project/cpython/Modules/main.c:410:15 (python3.13t+0x4d7e6f) (BuildId: 65e52348ca9319985f9f5e265fd43aab2c867d59)
#20 pymain_run_file /project/cpython/Modules/main.c:429:15 (python3.13t+0x4d7e6f)
#21 pymain_run_python /project/cpython/Modules/main.c:697:21 (python3.13t+0x4d70bc) (BuildId: 65e52348ca9319985f9f5e265fd43aab2c867d59)
#22 Py_RunMain /project/cpython/Modules/main.c:776:5 (python3.13t+0x4d70bc)
#23 pymain_main /project/cpython/Modules/main.c:806:12 (python3.13t+0x4d74f8) (BuildId: 65e52348ca9319985f9f5e265fd43aab2c867d59)
#24 Py_BytesMain /project/cpython/Modules/main.c:830:12 (python3.13t+0x4d757b) (BuildId: 65e52348ca9319985f9f5e265fd43aab2c867d59)
#25 main /project/cpython/./Programs/python.c:15:12 (python3.13t+0x15c7eb) (BuildId: 65e52348ca9319985f9f5e265fd43aab2c867d59)
Thread T12 (tid=264078, running) created by main thread at:
#0 pthread_create <null> (python3.13t+0xde1df) (BuildId: 65e52348ca9319985f9f5e265fd43aab2c867d59)
#1 do_start_joinable_thread /project/cpython/Python/thread_pthread.h:290:14 (python3.13t+0x4bcc48) (BuildId: 65e52348ca9319985f9f5e265fd43aab2c867d59)
#2 PyThread_start_joinable_thread /project/cpython/Python/thread_pthread.h:314:9 (python3.13t+0x4bca6a) (BuildId: 65e52348ca9319985f9f5e265fd43aab2c867d59)
#3 ThreadHandle_start /project/cpython/./Modules/_threadmodule.c:422:9 (python3.13t+0x564587) (BuildId: 65e52348ca9319985f9f5e265fd43aab2c867d59)
#4 do_start_new_thread /project/cpython/./Modules/_threadmodule.c:1849:9 (python3.13t+0x564587)
#5 thread_PyThread_start_joinable_thread /project/cpython/./Modules/_threadmodule.c:1972:14 (python3.13t+0x563621) (BuildId: 65e52348ca9319985f9f5e265fd43aab2c867d59)
#6 cfunction_call /project/cpython/Objects/methodobject.c:540:18 (python3.13t+0x28abb7) (BuildId: 65e52348ca9319985f9f5e265fd43aab2c867d59)
#7 _PyObject_MakeTpCall /project/cpython/Objects/call.c:242:18 (python3.13t+0x1ea44c) (BuildId: 65e52348ca9319985f9f5e265fd43aab2c867d59)
#8 _PyObject_VectorcallTstate /project/cpython/./Include/internal/pycore_call.h:166:16 (python3.13t+0x1eb0a8) (BuildId: 65e52348ca9319985f9f5e265fd43aab2c867d59)
#9 PyObject_Vectorcall /project/cpython/Objects/call.c:327:12 (python3.13t+0x1eb0a8)
#10 _PyEval_EvalFrameDefault /project/cpython/Python/generated_cases.c.h:1502:19 (python3.13t+0x3e556d) (BuildId: 65e52348ca9319985f9f5e265fd43aab2c867d59)
#11 _PyEval_EvalFrame /project/cpython/./Include/internal/pycore_ceval.h:119:16 (python3.13t+0x3de6f2) (BuildId: 65e52348ca9319985f9f5e265fd43aab2c867d59)
#12 _PyEval_Vector /project/cpython/Python/ceval.c:1807:12 (python3.13t+0x3de6f2)
#13 PyEval_EvalCode /project/cpython/Python/ceval.c:597:21 (python3.13t+0x3de6f2)
#14 run_eval_code_obj /project/cpython/Python/pythonrun.c:1337:9 (python3.13t+0x4a0a5e) (BuildId: 65e52348ca9319985f9f5e265fd43aab2c867d59)
#15 run_mod /project/cpython/Python/pythonrun.c:1422:19 (python3.13t+0x4a0185) (BuildId: 65e52348ca9319985f9f5e265fd43aab2c867d59)
#16 pyrun_file /project/cpython/Python/pythonrun.c:1255:15 (python3.13t+0x49c280) (BuildId: 65e52348ca9319985f9f5e265fd43aab2c867d59)
#17 _PyRun_SimpleFileObject /project/cpython/Python/pythonrun.c:490:13 (python3.13t+0x49c280)
#18 _PyRun_AnyFileObject /project/cpython/Python/pythonrun.c:77:15 (python3.13t+0x49b948) (BuildId: 65e52348ca9319985f9f5e265fd43aab2c867d59)
#19 pymain_run_file_obj /project/cpython/Modules/main.c:410:15 (python3.13t+0x4d7e6f) (BuildId: 65e52348ca9319985f9f5e265fd43aab2c867d59)
#20 pymain_run_file /project/cpython/Modules/main.c:429:15 (python3.13t+0x4d7e6f)
#21 pymain_run_python /project/cpython/Modules/main.c:697:21 (python3.13t+0x4d70bc) (BuildId: 65e52348ca9319985f9f5e265fd43aab2c867d59)
#22 Py_RunMain /project/cpython/Modules/main.c:776:5 (python3.13t+0x4d70bc)
#23 pymain_main /project/cpython/Modules/main.c:806:12 (python3.13t+0x4d74f8) (BuildId: 65e52348ca9319985f9f5e265fd43aab2c867d59)
#24 Py_BytesMain /project/cpython/Modules/main.c:830:12 (python3.13t+0x4d757b) (BuildId: 65e52348ca9319985f9f5e265fd43aab2c867d59)
#25 main /project/cpython/./Programs/python.c:15:12 (python3.13t+0x15c7eb) (BuildId: 65e52348ca9319985f9f5e265fd43aab2c867d59)
SUMMARY: ThreadSanitizer: data race /project/cpython/./Modules/_ctypes/stgdict.c:441:21 in PyCStructUnionType_update_stginfo
==================
ThreadSanitizer: reported 2 warnings
import ctypes
import concurrent.futures
import threading
def make_nd_memref_descriptor(rank, dtype):
class MemRefDescriptor(ctypes.Structure):
_fields_ = [
("aligned", ctypes.POINTER(dtype)),
]
return MemRefDescriptor
class F32(ctypes.Structure):
_fields_ = [("f32", ctypes.c_float)]
def test_ctypes():
arg1_ndim = 1
ctp = F32
ctypes.pointer(
ctypes.pointer(make_nd_memref_descriptor(arg1_ndim, ctp)())
)
if __name__ == "__main__":
num_workers = 20
barrier = threading.Barrier(num_workers)
def closure():
barrier.wait()
test_ctypes()
with concurrent.futures.ThreadPoolExecutor(max_workers=num_workers) as executor:
futures = []
for i in range(num_workers):
futures.append(executor.submit(closure))
assert len(list(f.result() for f in futures)) == num_workers
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment