Index: eval_error.c
===================================================================
--- eval_error.c	(revision 26452)
+++ eval_error.c	(working copy)
@@ -67,13 +67,15 @@
 error_print(void)
 {
     volatile VALUE errat = Qnil;		/* OK */
-    VALUE errinfo = GET_THREAD()->errinfo;
+    rb_thread_t *th = GET_THREAD();
+    VALUE errinfo = th->errinfo;
     volatile VALUE eclass, e;
     const char *volatile einfo;
     volatile long elen;
 
     if (NIL_P(errinfo))
 	return;
+    rb_thread_raised_clear(th);
 
     PUSH_TAG();
     if (EXEC_TAG() == 0) {

