From: Sam Gross Date: Fri, 16 Jan 2026 16:55:40 +0000 (-0500) Subject: [3.14] gh-143880: Fix data race in `functools.partial` in free threading build (... X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=0042384bd56cf88c9bf868776247ef00b34719de;p=thirdparty%2FPython%2Fcpython.git [3.14] gh-143880: Fix data race in `functools.partial` in free threading build (#143882) gh-143880: Fix data race in `functools.partial` in free threading build The assignment to `pto->vectorcall` isn't thread-safe in the free threading build. Note that this is already fixed in the main branch. --- diff --git a/Misc/NEWS.d/next/Library/2026-01-15-13-03-22.gh-issue-143880.sWoLsf.rst b/Misc/NEWS.d/next/Library/2026-01-15-13-03-22.gh-issue-143880.sWoLsf.rst new file mode 100644 index 000000000000..b77f86e5eb8f --- /dev/null +++ b/Misc/NEWS.d/next/Library/2026-01-15-13-03-22.gh-issue-143880.sWoLsf.rst @@ -0,0 +1 @@ +Fix data race in :func:`functools.partial` in the :term:`free threading` build. diff --git a/Modules/_functoolsmodule.c b/Modules/_functoolsmodule.c index 3420e7d8c37b..490c6b83d217 100644 --- a/Modules/_functoolsmodule.c +++ b/Modules/_functoolsmodule.c @@ -375,7 +375,9 @@ partial_vectorcall_fallback(PyThreadState *tstate, partialobject *pto, PyObject *const *args, size_t nargsf, PyObject *kwnames) { +#ifndef Py_GIL_DISABLED pto->vectorcall = NULL; +#endif Py_ssize_t nargs = PyVectorcall_NARGS(nargsf); return _PyObject_MakeTpCall(tstate, (PyObject *)pto, args, nargs, kwnames); }