Index: Python/ceval.c =================================================================== --- Python/ceval.c (revision 59033) +++ Python/ceval.c (working copy) @@ -530,6 +530,7 @@ register PyObject *t; register PyObject *stream = NULL; /* for PRINT opcodes */ register PyObject **fastlocals, **freevars; + PyObject *error_type, *error_value, *error_traceback; PyObject *retval = NULL; /* Return value */ PyThreadState *tstate = PyThreadState_GET(); PyCodeObject *co; @@ -700,6 +701,8 @@ tstate->frame = f; if (tstate->use_tracing) { + PyErr_Fetch(&error_type, &error_value, &error_traceback); + PyErr_Clear(); if (tstate->c_tracefunc != NULL) { /* tstate->c_tracefunc, if defined, is a function that will be called on *every* entry @@ -731,6 +734,7 @@ goto exit_eval_frame; } } + PyErr_Restore(error_type, error_value, error_traceback); } co = f->f_code;