Skip to content

Missing critical sections for PyDict_Next calls in _functoolsmodule.c #145446

@bkap123

Description

@bkap123

Bug report

Bug description:

After some discussion on PR #145362, I noticed that in Modules/_functoolsmodule.c, all use cases of PyDict_Next do not use a critical section, which is necessary in for the free-threaded build. The docs say that for PyDict_Next:

The function is not thread-safe in the free-threaded build without external synchronization. You can use Py_BEGIN_CRITICAL_SECTION to lock the dictionary while iterating over it

I have not checked if other files are missing a critical section, but it is definitely possible. I will draft a PR shortly for this issue in the coming days, but if anyone else finds other occurrences of PyDict_Next that are not thread-safe, please let me know.

CPython versions tested on:

CPython main branch

Operating systems tested on:

Linux

Linked PRs

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions