From 4ab61b3eed103089a2c4185e6cee453d5dbbc611 Mon Sep 17 00:00:00 2001 From: Peter Bierma Date: Thu, 12 Jun 2025 13:28:06 -0400 Subject: [PATCH] Revert "gh-135410: use a critical section around `StringIO.__next__` (#135412)" This reverts commit e6c3039cb39e68ae9af9ddcaca341c5af8f9cf23. --- Lib/test/test_memoryio.py | 19 ------------------- ...-06-11-19-05-49.gh-issue-135410.E89Boi.rst | 2 -- Modules/_io/stringio.c | 12 +----------- 3 files changed, 1 insertion(+), 32 deletions(-) delete mode 100644 Misc/NEWS.d/next/Library/2025-06-11-19-05-49.gh-issue-135410.E89Boi.rst diff --git a/Lib/test/test_memoryio.py b/Lib/test/test_memoryio.py index 249e0f3ba32f29..63998a86c45b53 100644 --- a/Lib/test/test_memoryio.py +++ b/Lib/test/test_memoryio.py @@ -5,7 +5,6 @@ import unittest from test import support -from test.support import threading_helper import gc import io @@ -13,7 +12,6 @@ import pickle import sys import weakref -import threading class IntLike: def __init__(self, num): @@ -725,22 +723,6 @@ def test_newline_argument(self): 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 @@ def test_setstate(self): 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 a5917fba3f7bb9..00000000000000 --- 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 8482c268176c5b..56913fafefba8b 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 pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy