Uh oh!
There was an error while loading.Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork32k
Description
Feature or enhancement
This is a tracking issue for all thread safety problems related to ctypes. I'll be working on this, but others can feel free to give me some help.
First of all, we need to find where the thread safety problems are.
### Auditing- [x] Audit `_ctypes.c`- [ ] Audit `_ctypes_test.c` (and probably the generated file too)- [ ] Audit `callbacks.c`- [ ] Audit `callproc.c`- [ ] Audit `cfield.c`- [x] Audit `malloc_closure.c`- [ ] Audit `stgdict.c`
I'll be tracking the issues that get found when auditing here. The plan is to just create a new issue and link to it for each new problem instead of flooding this issue with PRs.
Generally, the workflow for fixes should follow most of the rules from#116738, but I suspect we'll need recursive mutexes for quite a few things related to callbacks, because it's difficult to tell what might be re-entrant, and we can't use critical sections for arbitrary function pointers.
### Known Issues- [ ] https://github.com/python/cpython/issues/127946- [ ] https://github.com/python/cpython/issues/128182- [ ] https://github.com/python/cpython/issues/128485- [ ] https://github.com/python/cpython/issues/128567- [ ] https://github.com/python/cpython/issues/128570- [ ] https://github.com/python/cpython/issues/131974
cc@encukou, as the ctypes genius, and@colesbury as the free-threading mastermind.
Linked PRs
- gh-127945: add locking to malloc closure in free-threading #131662
- gh-127945: fix thread safety of ctypes state #131710
- gh-127945: fix thread safety of creating instances of ctypes structures #131716
- gh-127945: make initialization of error_object_name thread safe #131896
- gh-127945: acquire critical section around
PyCFuncPtr_call
#131898 - gh-127945: mark TestLocalization as thread unsafe in ctypes #131899
- gh-127945: fix thread safety and add lock held assertions to paramfunc in ctypes #132473
- gh-127945: move initialization of field desc to module exec in ctypes #132552
- gh-127945: change _ctypes_test static globals to thread local #132575
- gh-127945: fix critical sections around ctypes array #132646
- gh-127945: skip more tests in ctypes when using parallel threads #132682
- gh-127945: add lock held assertions in ctypes arrays #132720
- gh-127945: add test_ctypes to free-threading TSAN CI #132727
- gh-127945: Update What's New in Python 3.14 for free-threaded ctypes #134332
- [3.14] gh-127945: Update What's New in Python 3.14 for free-threaded ctypes (GH-134332) #134364