From: Miss Islington (bot) <31488909+miss-islington@users.noreply.github.com> Date: Thu, 12 Jun 2025 22:58:58 +0000 (+0200) Subject: [3.14] Revert "gh-135410: use a critical section around `StringIO.__next__` (GH-13541... X-Git-Tag: v3.14.0b3~40 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=b3efd3d7d3b052a8b3a1d2afa2c8001b3bac26d5;p=thirdparty%2FPython%2Fcpython.git [3.14] Revert "gh-135410: use a critical section around `StringIO.__next__` (GH-135412)" (GH-135439) (gh-135449) Revert "gh-135410: use a critical section around `StringIO.__next__` (GH-135412)" (GH-135439) This reverts commit e6c3039cb39e68ae9af9ddcaca341c5af8f9cf23. (cherry picked from commit 73431356d324842cac0d545018c3ad21c85bc883) Co-authored-by: Peter Bierma --- diff --git a/Lib/test/test_memoryio.py b/Lib/test/test_memoryio.py index 249e0f3ba32f..63998a86c45b 100644 --- a/Lib/test/test_memoryio.py +++ b/Lib/test/test_memoryio.py @@ -5,7 +5,6 @@ BytesIO -- for bytes import unittest from test import support -from test.support import threading_helper import gc import io @@ -13,7 +12,6 @@ import _pyio as pyio import pickle import sys import weakref -import threading class IntLike: def __init__(self, num): @@ -725,22 +723,6 @@ class TextIOTestMixin: for newline in (None, "", "\n", "\r", "\r\n"): self.ioclass(newline=newline) - @unittest.skipUnless(support.Py_GIL_DISABLED, "only meaningful under free-threading") - @threading_helper.requires_working_threading() - def test_concurrent_use(self): - memio = self.ioclass("") - - def use(): - memio.write("x" * 10) - memio.readlines() - - threads = [threading.Thread(target=use) for _ in range(8)] - with threading_helper.catch_threading_exception() as cm: - with threading_helper.start_threads(threads): - pass - - self.assertIsNone(cm.exc_value) - class PyStringIOTest(MemoryTestMixin, MemorySeekTestMixin, TextIOTestMixin, unittest.TestCase): @@ -908,7 +890,6 @@ class CStringIOTest(PyStringIOTest): self.assertRaises(ValueError, memio.__setstate__, ("closed", "", 0, None)) - class CStringIOPickleTest(PyStringIOPickleTest): UnsupportedOperation = io.UnsupportedOperation diff --git a/Misc/NEWS.d/next/Library/2025-06-11-19-05-49.gh-issue-135410.E89Boi.rst b/Misc/NEWS.d/next/Library/2025-06-11-19-05-49.gh-issue-135410.E89Boi.rst deleted file mode 100644 index a5917fba3f7b..000000000000 --- a/Misc/NEWS.d/next/Library/2025-06-11-19-05-49.gh-issue-135410.E89Boi.rst +++ /dev/null @@ -1,2 +0,0 @@ -Fix a crash when iterating over :class:`io.StringIO` on the :term:`free -threaded ` build. diff --git a/Modules/_io/stringio.c b/Modules/_io/stringio.c index dd97ceac32e3..9d1bfa3ea05c 100644 --- a/Modules/_io/stringio.c +++ b/Modules/_io/stringio.c @@ -404,7 +404,7 @@ _io_StringIO_readline_impl(stringio *self, Py_ssize_t size) } static PyObject * -stringio_iternext_lock_held(PyObject *op) +stringio_iternext(PyObject *op) { PyObject *line; stringio *self = stringio_CAST(op); @@ -441,16 +441,6 @@ stringio_iternext_lock_held(PyObject *op) return line; } -static PyObject * -stringio_iternext(PyObject *op) -{ - PyObject *res; - Py_BEGIN_CRITICAL_SECTION(op); - res = stringio_iternext_lock_held(op); - Py_END_CRITICAL_SECTION(); - return res; -} - /*[clinic input] @critical_section _io.StringIO.truncate