From: Mark Dickinson Date: Sat, 13 Feb 2010 18:43:28 +0000 (+0000) Subject: Merged revisions 78172-78173 via svnmerge from X-Git-Tag: v3.1.2rc1~88 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=6243c6ab10533e5f8d22b5991e254a45180b8920;p=python Merged revisions 78172-78173 via svnmerge from svn+ssh://pythondev@svn.python.org/python/branches/py3k ........ r78172 | mark.dickinson | 2010-02-13 18:34:53 +0000 (Sat, 13 Feb 2010) | 4 lines Issue #7924: Fix an intermittent 'XXX undetected error' crash in test_capi, due to test_capsule failing to clear an exception. Many thanks to Florent Xicluna for the diagnosis and fix. ........ r78173 | mark.dickinson | 2010-02-13 18:37:34 +0000 (Sat, 13 Feb 2010) | 1 line Revert an earlier attempt (r76810) to fix the intermittent test_capi failures fixed in r78172. ........ --- diff --git a/Misc/NEWS b/Misc/NEWS index 054bb3d0b4..f764d12832 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -308,6 +308,10 @@ Extension Modules Tests ----- +- Issue #7924: Fix an intermittent 'XXX undetected error' failure in + test_capi (only seen so far on platforms where the curses module + wasn't built), due to an uncleared exception. + - issue #7728: test_timeout was changed to use test_support.bind_port instead of a hard coded port. diff --git a/Modules/_testcapimodule.c b/Modules/_testcapimodule.c index c850baf854..2d88175c12 100644 --- a/Modules/_testcapimodule.c +++ b/Modules/_testcapimodule.c @@ -1393,27 +1393,14 @@ test_capsule(PyObject *self, PyObject *args) Py_DECREF(object); Py_DECREF(module); } + else + PyErr_Clear(); } exit: if (error) { return raiseTestError("test_capsule", error); } - /* 13/12/2009: something is causing test_capi to fail occasionally on - the Solaris buildbot, with the output: - - internal test_L_code - internal test_Z_code - internal test_bug_7414 - internal test_capsule - XXX undetected error - internaltest test_capi crashed -- : No module named datetime - - It seems possible that test_capsule is raising an exception but - failing to return NULL. Do a PyErr_Occurred check to find out. - */ - if (PyErr_Occurred()) - return NULL; Py_RETURN_NONE; #undef FAIL }