gh-132250: Clear error in lsprof callback when method descriptor raises an excep… (GH-132251)
(cherry picked from commit
ab64130b572424695bf072f7608a536997dce14f)
Co-authored-by: Tian Gao <gaogaotiantian@hotmail.com>
self.assertEqual(cc, 1)
self.assertEqual(nc, 1)
+ def test_bad_descriptor(self):
+ # gh-132250
+ # cProfile should not crash when the profiler callback fails to locate
+ # the actual function of a method.
+ with self.profilerclass() as prof:
+ with self.assertRaises(TypeError):
+ bytes.find(str())
+
class TestCommandLine(unittest.TestCase):
def test_sort(self):
--- /dev/null
+Fixed the :exc:`SystemError` in :mod:`cProfile` when locating the actual C function of a method raises an exception.
PyObject *meth = Py_TYPE(callable)->tp_descr_get(
callable, self_arg, (PyObject*)Py_TYPE(self_arg));
if (meth == NULL) {
+ PyErr_Clear();
return NULL;
}
if (PyCFunction_Check(meth)) {