Merged revisions 78872 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/branches/py3k

................
  r78872 | victor.stinner | 2010-03-12 15:45:56 +0100 (ven., 12 mars 2010) | 12 lines

  Merged revisions 78826 via svnmerge from
  svn+ssh://pythondev@svn.python.org/python/trunk

  ........
    r78826 | victor.stinner | 2010-03-10 23:30:19 +0100 (mer., 10 mars 2010) | 5 lines

    Issue #3137: Don't ignore errors at startup, especially a keyboard interrupt
    (SIGINT). If an error occurs while importing the site module, the error is
    printed and Python exits. Initialize the GIL before importing the site
    module.
  ........
................
diff --git a/Python/pythonrun.c b/Python/pythonrun.c
index 3764740..f4f8766 100644
--- a/Python/pythonrun.c
+++ b/Python/pythonrun.c
@@ -296,13 +296,14 @@
 	if (initstdio() < 0)
 		Py_FatalError(
 		    "Py_Initialize: can't initialize sys standard streams");
-	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 */
 }
 
 void
@@ -711,22 +712,12 @@
 static void
 initsite(void)
 {
-	PyObject *m, *f;
+	PyObject *m;
 	m = PyImport_ImportModule("site");
 	if (m == NULL) {
-		f = PySys_GetObject("stderr");
-		if (f == NULL || f == Py_None)
-			return;
-		if (Py_VerboseFlag) {
-			PyFile_WriteString(
-				"'import site' failed; traceback:\n", f);
-			PyErr_Print();
-		}
-		else {
-			PyFile_WriteString(
-			  "'import site' failed; use -v for traceback\n", f);
-			PyErr_Clear();
-		}
+		PyErr_Print();
+		Py_Finalize();
+		exit(1);
 	}
 	else {
 		Py_DECREF(m);
@@ -1907,6 +1898,8 @@
 	char *msg = NULL;
 	errtype = PyExc_SyntaxError;
 	switch (err->error) {
+	case E_ERROR:
+		return;
 	case E_SYNTAX:
 		errtype = PyExc_IndentationError;
 		if (err->expected == INDENT)