Skip to content

Thread sanitizer (free-threading) tests fail: test_signal raises RecursionError #121065

Description

@sobolevn

Bug report

 0:02:53 load avg: 5.00 [ 9/22/1] test_signal failed (1 error) (1 min 1 sec) -- running (3): test_logging (2 min 13 sec), test_io (2 min 17 sec), test_queue (1 min 52 sec)
test test_signal failed -- Traceback (most recent call last):
  File "/home/runner/work/cpython/cpython/Lib/test/test_signal.py", line 1384, in test_stress_modifying_handlers
    cycle_handlers()
    ~~~~~~~~~~~~~~^^
  File "/home/runner/work/cpython/cpython/Lib/test/test_signal.py", line 1374, in cycle_handlers
    signal.signal(signum, handler)
    ~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^
  File "/home/runner/work/cpython/cpython/Lib/signal.py", line 58, in signal
    handler = _signal.signal(_enum_to_int(signalnum), _enum_to_int(handler))
                             ~~~~~~~~~~~~^^^^^^^^^^^
  File "/home/runner/work/cpython/cpython/Lib/signal.py", line 41, in _enum_to_int
    return int(value)
  File "/home/runner/work/cpython/cpython/Lib/test/test_signal.py", line 1359, in custom_handler
    def custom_handler(signum, frame):
    
  File "/home/runner/work/cpython/cpython/Lib/test/test_signal.py", line 1359, in custom_handler
    def custom_handler(signum, frame):
    
  File "/home/runner/work/cpython/cpython/Lib/test/test_signal.py", line 1359, in custom_handler
    def custom_handler(signum, frame):
    
  [Previous line repeated 237 more times]
RecursionError: maximum recursion depth exceeded

Link: https://github.com/python/cpython/actions/runs/9686054998/job/26727620578

Linked PRs

Activity

  1. skirpichev commented on Jun 27, 2024

    @skirpichev
    Member

    I don't see similar failures before this merge: 22b0de2

  2. Fidget-Spinner commented on Jun 27, 2024

    @Fidget-Spinner
    Member

    @skirpichev @sobolevn that test is flaky. for example, after 22b0de2, 6f7acaa passed perfectly fine.

  3. Fidget-Spinner commented on Jun 27, 2024

    @Fidget-Spinner
    Member

    Another example: #121083 came after that commit, and still passes that test.

  4. vstinner commented on Jun 27, 2024

    @vstinner
    Member

    Maybe we can reduce the number of signals sent, or increase the recursion limit.

  5. colesbury commented on Jun 27, 2024

    @colesbury
    Contributor

    Let's disable the test for now and then investigate the root cause.

  6. added 2 commits that reference this issue on Jun 27, 2024
  7. added a commit that references this issue on Jun 30, 2024
  8. added a commit that references this issue on Jul 11, 2024
  9. added a commit that references this issue on Jul 17, 2024
  10. befeleme commented on Jan 16, 2026

    @befeleme
    Contributor

    We have experienced this issue in Fedora Linux in the past, but haven't seen this happening in Python 3.15.0~a2, a3 or a5.

  11. vstinner commented on Jan 19, 2026

    @vstinner
    Member

    The test is skipped on Free Threaded builds for 1 year 1/2.

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions