diff --git a/Python/pythonrun.c b/Python/pythonrun.c
index e7a0512..875e44e 100644
--- a/Python/pythonrun.c
+++ b/Python/pythonrun.c
@@ -18,6 +18,7 @@
 #include "eval.h"
 #include "marshal.h"
 #include "osdefs.h"
+#include "abstract.h"
 
 #ifdef HAVE_SIGNAL_H
 #include <signal.h>
@@ -66,6 +67,7 @@
 static void err_input(perrdetail *);
 static void initsigs(void);
 static void call_py_exitfuncs(void);
+static void wait_for_thread_shutdown(void);
 static void call_ll_exitfuncs(void);
 extern void _PyUnicode_Init(void);
 extern void _PyUnicode_Fini(void);
@@ -363,6 +365,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
@@ -2059,6 +2063,34 @@
 	PyErr_Clear();
 }
 
+/* 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;
