Skip to content

More gil-disabled type thread safety #114214

@DinoV

Description

@DinoV

Bug report

Bug description:

Some areas of typeobject are still not thread safe after fixing mro. Those at least include:

  • tp_flags - most of these that change at runtime are probably protected by locks after MRO (e.g. Py_TPFLAGS_VALID_VERSION_TAG and various flags set while readying). But at least some get modified outside of the lock still (e.g. Py_TPFLAGS_IS_ABSTRACT, Py_TPFLAGS_SEQUENCE and Py_TPFLAGS_MAPPING via the abc module). These should maybe all be atomic and/ors or protected by the same type lock.
  • tp_watched - also needs atomic and/or in PyType_Watch and PyType_Unwatch

CPython versions tested on:

CPython main branch

Operating systems tested on:

No response

Activity

kumaraditya303

kumaraditya303 commented on Jul 1, 2025

@kumaraditya303
Contributor

tp_flags - most of these that change at runtime are probably protected by locks after MRO (e.g. Py_TPFLAGS_VALID_VERSION_TAG and various flags set while readying). But at least some get modified outside of the lock still (e.g. Py_TPFLAGS_IS_ABSTRACT, Py_TPFLAGS_SEQUENCE and Py_TPFLAGS_MAPPING via the abc module). These should maybe all be atomic and/ors or protected by the same type lock.
tp_watched - also needs atomic and/or in PyType_Watch and PyType_Unwatch

I think both of the issues are fixed now:

  1. the type slot thread safety fixed the thread safety of tp_flags. gh-127266: avoid data races when updating type slots v2 #133177
  2. PyType_Watch is now documented to be thread unsafe. gh-131544: Update docs for PyType_AddWatcher #132015
kumaraditya303

kumaraditya303 commented on Jul 1, 2025

@kumaraditya303
Contributor

Closing as it is fixed on main branch.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions

      More gil-disabled type thread safety · Issue #114214 · python/cpython

      Follow Lee on X/Twitter - Father, Husband, Serial builder creating AI, crypto, games & web tools. We are friends :) AI Will Come To Life!

      Check out: eBank.nz (Art Generator) | Netwrck.com (AI Tools) | Text-Generator.io (AI API) | BitBank.nz (Crypto AI) | ReadingTime (Kids Reading) | RewordGame | BigMultiplayerChess | WebFiddle | How.nz | Helix AI Assistant