It seems obvious that when Py_Finalize() decides that there's nothing
to do, it should not call sys.exitfunc either...
diff --git a/Python/pythonrun.c b/Python/pythonrun.c
index e574281..1007860 100644
--- a/Python/pythonrun.c
+++ b/Python/pythonrun.c
@@ -179,12 +179,12 @@
 	PyInterpreterState *interp;
 	PyThreadState *tstate;
 
-	call_sys_exitfunc();
-
 	if (!initialized)
 		return;
 	initialized = 0;
 
+	call_sys_exitfunc();
+
 	/* Get current thread state and interpreter pointer */
 	tstate = PyThreadState_Get();
 	interp = tstate->interp;