Skip to content

Make the Python test suite pass with the GIL disabled #116749

Closed
@colesbury

Description

@colesbury

Feature or enhancement

This issue is to track the remaining bugs that prevent the Python test suite from passing with the GIL disabled, as well as the PRs under review that fix known issues.

Note that this is not intended to cover all free-threading related issues: some thread-safety issues don't result in tests crashing or failing and are not tracked here. This is intended to cover the minimum set of changes needed to ensure that the test suite passes reliably with the GIL disabled.

PRs

Integration branch

Branches to merge
git merge disable-gil-default &&
git merge gh-112075-lock-split-keys &&
git merge gh-117783-immortalize

This branch contains the merge of the above PRs and is used to find bugs that are not covered by outstanding PRs. Note that setting PYTHON_GIL=0 isn't sufficient because some tests do not propagate the environment variable to tests in subprocesses. Instead, the branch changes the default mode to disable the GIL for testing purposes.

Issues without PRs that fix them

  • N/A

Bugs without issues

Windows

Linux

macOS

https://buildbot.python.org/all/#/builders/1367/builds/119/steps/5/logs/stdio

  • test_daemon_threads_shutdown_stderr_deadlock - Assertion failed: (tstate == NULL || tstate->interp == interp), function _PyEval_ReleaseLock, file ceval_gil.c,
  • test_queue test_shutdown_all_methods_in_many_threads - AttributeError: 'Queue' object has no attribute '_lock'
test_shutdown_all_methods_in_many_threads (test.test_queue.CQueueTest.test_shutdown_all_methods_in_many_threads) ... Warning -- Uncaught thread exception: AttributeError
Exception in thread Thread-2081 (_read_msg_thread):
Traceback (most recent call last):
  File "/Users/ec2-user/buildbot/buildarea/pull_request.itamaro-macos-arm64-aws.macos-with-brew.refleak.nogil/build/Lib/threading.py", line 1039, in _bootstrap_inner
    self.run()
    ~~~~~~~~^^
  File "/Users/ec2-user/buildbot/buildarea/pull_request.itamaro-macos-arm64-aws.macos-with-brew.refleak.nogil/build/Lib/threading.py", line 990, in run
    self._target(*self._args, **self._kwargs)
    ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/ec2-user/buildbot/buildarea/pull_request.itamaro-macos-arm64-aws.macos-with-brew.refleak.nogil/build/Lib/test/test_queue.py", line 352, in _read_msg_thread
    q.get(False)
    ~~~~~^^^^^^^
  File "/Users/ec2-user/buildbot/buildarea/pull_request.itamaro-macos-arm64-aws.macos-with-brew.refleak.nogil/build/Lib/queue.py", line 216, in get
    item = self._get()
           ~~~~~~~~~^^
  File "/Users/ec2-user/buildbot/buildarea/pull_request.itamaro-macos-arm64-aws.macos-with-brew.refleak.nogil/build/Lib/threading.py", line 304, in __enter__
    return self._lock.__enter__()
           ^^^^^^^^^^
AttributeError: 'Queue' object has no attribute '_lock'

Old bugs?

  • test.test_smtpnet.SmtpSSLTest.test_connect_default_port connection closed (possibly related)
  • test.test_multiprocessing_forkserver.test_processes hangs ?

Linked PRs

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions