bpo-32604: Fix memory leaks in the new _xxsubinterpreters module. (GH-5507)
(cherry picked from commit 4e9da0d163
)
Co-authored-by: Eric Snow <ericsnowcurrently@gmail.com>
This commit is contained in:
parent
a23d30f64b
commit
f33ecedcad
|
@ -362,13 +362,15 @@ class DestroyTests(TestBase):
|
||||||
def test_from_current(self):
|
def test_from_current(self):
|
||||||
main, = interpreters.list_all()
|
main, = interpreters.list_all()
|
||||||
id = interpreters.create()
|
id = interpreters.create()
|
||||||
script = dedent("""
|
script = dedent(f"""
|
||||||
import _xxsubinterpreters as _interpreters
|
import _xxsubinterpreters as _interpreters
|
||||||
_interpreters.destroy({})
|
try:
|
||||||
""").format(id)
|
_interpreters.destroy({id})
|
||||||
|
except RuntimeError:
|
||||||
|
pass
|
||||||
|
""")
|
||||||
|
|
||||||
with self.assertRaises(RuntimeError):
|
interpreters.run_string(id, script)
|
||||||
interpreters.run_string(id, script)
|
|
||||||
self.assertEqual(set(interpreters.list_all()), {main, id})
|
self.assertEqual(set(interpreters.list_all()), {main, id})
|
||||||
|
|
||||||
def test_from_sibling(self):
|
def test_from_sibling(self):
|
||||||
|
@ -761,12 +763,12 @@ class ChannelIDTests(TestBase):
|
||||||
self.assertEqual(int(cid), 10)
|
self.assertEqual(int(cid), 10)
|
||||||
|
|
||||||
def test_bad_id(self):
|
def test_bad_id(self):
|
||||||
ids = [-1, 2**64, "spam"]
|
for cid in [-1, 'spam']:
|
||||||
for cid in ids:
|
|
||||||
with self.subTest(cid):
|
with self.subTest(cid):
|
||||||
with self.assertRaises(ValueError):
|
with self.assertRaises(ValueError):
|
||||||
interpreters._channel_id(cid)
|
interpreters._channel_id(cid)
|
||||||
|
with self.assertRaises(OverflowError):
|
||||||
|
interpreters._channel_id(2**64)
|
||||||
with self.assertRaises(TypeError):
|
with self.assertRaises(TypeError):
|
||||||
interpreters._channel_id(object())
|
interpreters._channel_id(object())
|
||||||
|
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -1242,6 +1242,7 @@ _PyCrossInterpreterData_Lookup(PyObject *obj)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Py_DECREF(cls);
|
||||||
PyThread_release_lock(_PyRuntime.xidregistry.mutex);
|
PyThread_release_lock(_PyRuntime.xidregistry.mutex);
|
||||||
return getdata;
|
return getdata;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue