diff --git a/Lib/site.py b/Lib/site.py
index 21c7db2..66c56c2 100644
--- a/Lib/site.py
+++ b/Lib/site.py
@@ -472,6 +472,12 @@
         import sitecustomize
     except ImportError:
         pass
+    except Exception:
+        if sys.flags.verbose:
+            sys.excepthook(*sys.exc_info())
+        else:
+            print >>sys.stderr, \
+                "'import sitecustomize' failed; use -v for traceback"
 
 
 def execusercustomize():
@@ -480,6 +486,12 @@
         import usercustomize
     except ImportError:
         pass
+    except Exception:
+        if sys.flags.verbose:
+            sys.excepthook(*sys.exc_info())
+        else:
+            print>>sys.stderr, \
+                "'import usercustomize' failed; use -v for traceback"
 
 
 def main():
diff --git a/Modules/main.c b/Modules/main.c
index 2d2bbf4..de0c851 100644
--- a/Modules/main.c
+++ b/Modules/main.c
@@ -569,10 +569,16 @@
 		}
 
 		if (sts==-1) {
-			sts = PyRun_AnyFileExFlags(
-				fp,
-				filename == NULL ? "<stdin>" : filename,
-				filename != NULL, &cf) != 0;
+			/* call pending calls like signal handlers (SIGINT) */
+			if (Py_MakePendingCalls() == -1) {
+				PyErr_Print();
+				sts = 1;
+			} else {
+				sts = PyRun_AnyFileExFlags(
+					fp,
+					filename == NULL ? "<stdin>" : filename,
+					filename != NULL, &cf) != 0;
+			}
 		}
 		
 	}
diff --git a/Parser/tokenizer.c b/Parser/tokenizer.c
index 79f1fa8..b84a154 100644
--- a/Parser/tokenizer.c
+++ b/Parser/tokenizer.c
@@ -764,8 +764,12 @@
 	return -1;
 
 error_clear:
-	/* Fallback to iso-8859-1: for backward compatibility */
 	Py_DECREF(enc);
+	if (!PyErr_ExceptionMatches(PyExc_UnicodeDecodeError)) {
+		tok->done = E_ERROR;
+		return -1;
+	}
+	/* Fallback to iso-8859-1: for backward compatibility */
 	PyErr_Clear();
 	return 0;
 }
diff --git a/Python/import.c b/Python/import.c
index 43eabb8..eb731d0 100644
--- a/Python/import.c
+++ b/Python/import.c
@@ -2744,8 +2744,6 @@
 	}
 	else {
 		/* No globals -- use standard builtins, and fake globals */
-		PyErr_Clear();
-
 		builtins = PyImport_ImportModuleLevel("__builtin__",
 						      NULL, NULL, NULL, 0);
 		if (builtins == NULL)
diff --git a/Python/pythonrun.c b/Python/pythonrun.c
index f0dcfb3..3ea4d8c 100644
--- a/Python/pythonrun.c
+++ b/Python/pythonrun.c
@@ -245,14 +245,15 @@
 	}
 
 	initmain(); /* Module __main__ */
-	if (!Py_NoSiteFlag)
-		initsite(); /* Module site */
 
 	/* auto-thread-state API, if available */
 #ifdef WITH_THREAD
 	_PyGILState_Init(interp, tstate);
 #endif /* WITH_THREAD */
 
+	if (!Py_NoSiteFlag)
+		initsite(); /* Module site */
+
 	if ((p = Py_GETENV("PYTHONIOENCODING")) && *p != '\0') {
 		p = icodeset = codeset = strdup(p);
 		free_codeset = 1;
@@ -281,8 +282,13 @@
 				loc_codeset = strdup(loc_codeset);
 				Py_DECREF(enc);
 			} else {
-				loc_codeset = NULL;
-				PyErr_Clear();
+				if (PyErr_ExceptionMatches(PyExc_LookupError)) {
+					PyErr_Clear();
+					loc_codeset = NULL;
+				} else {
+					PyErr_Print();
+					exit(1);
+				}
 			}
 		} else
 			loc_codeset = NULL;
@@ -1543,6 +1549,8 @@
 	char *msg = NULL;
 	errtype = PyExc_SyntaxError;
 	switch (err->error) {
+	case E_ERROR:
+		return;
 	case E_SYNTAX:
 		errtype = PyExc_IndentationError;
 		if (err->expected == INDENT)
