https://github.com/python/cpython/commit/364ae607d8035db8ba92486ebebd8225446c1a90
commit: 364ae607d8035db8ba92486ebebd8225446c1a90
branch: main
author: Serhiy Storchaka <[email protected]>
committer: serhiy-storchaka <[email protected]>
date: 2025-10-27T21:42:32+02:00
summary:
gh-140634: Fix a reference counting bug in os.sched_param.__reduce__()
(GH-140667)
files:
A Misc/NEWS.d/next/Library/2025-10-27-13-49-31.gh-issue-140634.ULng9G.rst
M Lib/test/test_os/test_posix.py
M Modules/posixmodule.c
diff --git a/Lib/test/test_os/test_posix.py b/Lib/test/test_os/test_posix.py
index de24719a1ca455..37da293a441e46 100644
--- a/Lib/test/test_os/test_posix.py
+++ b/Lib/test/test_os/test_posix.py
@@ -1427,6 +1427,14 @@ def test_sched_param(self):
self.assertNotEqual(newparam, param)
self.assertEqual(newparam.sched_priority, 0)
+ @requires_sched
+ def test_bug_140634(self):
+ sched_priority = float('inf') # any new reference
+ param = posix.sched_param(sched_priority)
+ param.__reduce__()
+ del sched_priority, param # should not crash
+ support.gc_collect() # just to be sure
+
@unittest.skipUnless(hasattr(posix, "sched_rr_get_interval"), "no
function")
def test_sched_rr_get_interval(self):
try:
diff --git
a/Misc/NEWS.d/next/Library/2025-10-27-13-49-31.gh-issue-140634.ULng9G.rst
b/Misc/NEWS.d/next/Library/2025-10-27-13-49-31.gh-issue-140634.ULng9G.rst
new file mode 100644
index 00000000000000..b1ba9b26ad5431
--- /dev/null
+++ b/Misc/NEWS.d/next/Library/2025-10-27-13-49-31.gh-issue-140634.ULng9G.rst
@@ -0,0 +1 @@
+Fix a reference counting bug in :meth:`!os.sched_param.__reduce__`.
diff --git a/Modules/posixmodule.c b/Modules/posixmodule.c
index a30712f75d5d06..50464b01efba31 100644
--- a/Modules/posixmodule.c
+++ b/Modules/posixmodule.c
@@ -8724,7 +8724,7 @@ os_sched_param_impl(PyTypeObject *type, PyObject
*sched_priority)
static PyObject *
os_sched_param_reduce(PyObject *self, PyObject *Py_UNUSED(dummy))
{
- return Py_BuildValue("(O(N))", Py_TYPE(self),
PyStructSequence_GetItem(self, 0));
+ return Py_BuildValue("(O(O))", Py_TYPE(self),
PyStructSequence_GetItem(self, 0));
}
static PyMethodDef os_sched_param_reduce_method = {
_______________________________________________
Python-checkins mailing list -- [email protected]
To unsubscribe send an email to [email protected]
https://mail.python.org/mailman3//lists/python-checkins.python.org
Member address: [email protected]