diff --git a/Lib/test/test_threading.py b/Lib/test/test_threading.py
index ba60d8a..6723d00 100644
--- a/Lib/test/test_threading.py
+++ b/Lib/test/test_threading.py
@@ -306,6 +306,30 @@
         self.assertFalse(rc == 2, "interpreted was blocked")
         self.assertTrue(rc == 0, "Unexpected error")
 
+    def test_join_nondaemon_on_shutdown(self):
+        # Issue 1722344
+        # Raising SystemExit skipped threading._shutdown
+        import subprocess
+        p = subprocess.Popen([sys.executable, "-c", """if 1:
+                import threading
+                from time import sleep
+
+                def child():
+                    sleep(1)
+                    # As a non-daemon thread we SHOULD wake up and nothing
+                    # should be torn down yet
+                    print "Woke up, sleep function is:", sleep
+
+                threading.Thread(target=child).start()
+                raise SystemExit
+            """],
+            stdout=subprocess.PIPE,
+            stderr=subprocess.PIPE)
+        stdout, stderr = p.communicate()
+        self.assertEqual(stdout, "Woke up, sleep function is: <built-in function sleep>\n")
+        self.assertEqual(stderr, "")
+
+
 
     def test_enumerate_after_join(self):
         # Try hard to trigger #1703448: a thread is still returned in
diff --git a/Misc/ACKS b/Misc/ACKS
index c8f80e6..50190fa 100644
--- a/Misc/ACKS
+++ b/Misc/ACKS
@@ -540,6 +540,7 @@
 Tim O'Malley
 Pascal Oberndoerfer
 Jeffrey Ollie
+Adam Olsen
 Grant Olson
 Piet van Oostrum
 Jason Orendorff
diff --git a/Misc/NEWS b/Misc/NEWS
index d291f1d..49c739f 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -12,6 +12,10 @@
 Core and Builtins
 -----------------
 
+- Issue #1722344: threading._shutdown() is now called in Py_Finalize(), which
+  fixes the problem of some exceptions being thrown at shutdown when the
+  interpreter is killed. Patch by Adam Olsen.
+
 - Issue #7168: Document PyFloat_AsString and PyFloat_AsReprString, and
   note that they are unsafe and deprecated.
 
diff --git a/Modules/main.c b/Modules/main.c
index 014ea5f..1511dd9 100644
--- a/Modules/main.c
+++ b/Modules/main.c
@@ -222,33 +222,6 @@
 }
 
 
-/* Wait until threading._shutdown completes, provided
-   the threading module was imported in the first place.
-   The shutdown routine will wait until all non-daemon
-   "threading" threads have completed. */
-#include "abstract.h"
-static void
-WaitForThreadShutdown(void)
-{
-#ifdef WITH_THREAD
-	PyObject *result;
-	PyThreadState *tstate = PyThreadState_GET();
-	PyObject *threading = PyMapping_GetItemString(tstate->interp->modules,
-						      "threading");
-	if (threading == NULL) {
-		/* threading not imported */
-		PyErr_Clear();
-		return;
-	}
-	result = PyObject_CallMethod(threading, "_shutdown", "");
-	if (result == NULL)
-		PyErr_WriteUnraisable(threading);
-	else
-		Py_DECREF(result);
-	Py_DECREF(threading);
-#endif
-}
-
 /* Main program */
 
 int
@@ -624,8 +597,6 @@
 		sts = PyRun_AnyFileFlags(stdin, "<stdin>", &cf) != 0;
 	}
 
-	WaitForThreadShutdown();
-
 	Py_Finalize();
 #ifdef RISCOS
 	if (Py_RISCOSWimpFlag)
diff --git a/Python/pythonrun.c b/Python/pythonrun.c
index 8fc0ca1..4f8417a 100644
--- a/Python/pythonrun.c
+++ b/Python/pythonrun.c
@@ -17,6 +17,7 @@
 #include "ast.h"
 #include "eval.h"
 #include "marshal.h"
+#include "abstract.h"
 
 #ifdef HAVE_SIGNAL_H
 #include <signal.h>
@@ -61,6 +62,7 @@
 			      PyCompilerFlags *);
 static void err_input(perrdetail *);
 static void initsigs(void);
+static void wait_for_thread_shutdown(void);
 static void call_sys_exitfunc(void);
 static void call_ll_exitfuncs(void);
 extern void _PyUnicode_Init(void);
@@ -390,6 +392,8 @@
 	if (!initialized)
 		return;
 
+	wait_for_thread_shutdown();
+
 	/* The interpreter is still entirely intact at this point, and the
 	 * exit funcs may be relying on that.  In particular, if some thread
 	 * or exit func is still waiting to do an import, the import machinery
@@ -1666,6 +1670,32 @@
 #include "pythread.h"
 #endif
 
+/* Wait until threading._shutdown completes, provided
+   the threading module was imported in the first place.
+   The shutdown routine will wait until all non-daemon
+   "threading" threads have completed. */
+static void
+wait_for_thread_shutdown(void)
+{
+#ifdef WITH_THREAD
+	PyObject *result;
+	PyThreadState *tstate = PyThreadState_GET();
+	PyObject *threading = PyMapping_GetItemString(tstate->interp->modules,
+						      "threading");
+	if (threading == NULL) {
+		/* threading not imported */
+		PyErr_Clear();
+		return;
+	}
+	result = PyObject_CallMethod(threading, "_shutdown", "");
+	if (result == NULL)
+		PyErr_WriteUnraisable(threading);
+	else
+		Py_DECREF(result);
+	Py_DECREF(threading);
+#endif
+}
+
 #define NEXITFUNCS 32
 static void (*exitfuncs[NEXITFUNCS])(void);
 static int nexitfuncs = 0;
