gh-123321: Make Parser/myreadline.c locking safe in free-threaded build (#123690)

Use a `PyMutex` to avoid the race in mutex initialization. Use relaxed
atomics to avoid the data race on reading `_PyOS_ReadlineTState` when
checking for re-entrant calls.
This commit is contained in:
Sam Gross 2024-09-06 15:07:08 -04:00 committed by GitHub
parent 8a46a2ec50
commit 0c080d7c77
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 11 additions and 25 deletions

View file

@ -7,7 +7,7 @@ import sys
import tempfile
import textwrap
import unittest
from test.support import requires_gil_enabled, verbose
from test.support import verbose
from test.support.import_helper import import_module
from test.support.os_helper import unlink, temp_dir, TESTFN
from test.support.pty_helper import run_pty
@ -351,7 +351,6 @@ readline.write_history_file(history_file)
self.assertEqual(lines[-1].strip(), b"last input")
@requires_working_threading()
@requires_gil_enabled()
def test_gh123321_threadsafe(self):
"""gh-123321: readline should be thread-safe and not crash"""
script = textwrap.dedent(r"""