diff --git a/Include/pystate.h b/Include/pystate.h
index e02df88..81de569 100644
--- a/Include/pystate.h
+++ b/Include/pystate.h
@@ -113,6 +113,8 @@
 PyAPI_FUNC(PyObject*) PyState_FindModule(struct PyModuleDef*);
 
 PyAPI_FUNC(PyThreadState *) PyThreadState_New(PyInterpreterState *);
+PyAPI_FUNC(PyThreadState *) _PyThreadState_Prealloc(PyInterpreterState *);
+PyAPI_FUNC(void) _PyThreadState_Init(PyThreadState *);
 PyAPI_FUNC(void) PyThreadState_Clear(PyThreadState *);
 PyAPI_FUNC(void) PyThreadState_Delete(PyThreadState *);
 #ifdef WITH_THREAD
diff --git a/Misc/NEWS b/Misc/NEWS
index 361a8a6..9bc7f61 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -12,6 +12,9 @@
 Core and Builtins
 -----------------
 
+- Issue #7544: Preallocate thread memory before creating the thread to avoid
+  a fatal error in low memory condition.
+
 - Issue #7820: The parser tokenizer restores all bytes in the right if
   the BOM check fails.
 
diff --git a/Modules/_threadmodule.c b/Modules/_threadmodule.c
index 5181d07..3d4578a 100644
--- a/Modules/_threadmodule.c
+++ b/Modules/_threadmodule.c
@@ -423,6 +423,7 @@
 	PyObject *func;
 	PyObject *args;
 	PyObject *keyw;
+	PyThreadState *tstate;
 };
 
 static void
@@ -432,8 +433,9 @@
 	PyThreadState *tstate;
 	PyObject *res;
 
-	tstate = PyThreadState_New(boot->interp);
-
+	tstate = boot->tstate;
+	tstate->thread_id = PyThread_get_thread_ident();
+	_PyThreadState_Init(tstate);
 	PyEval_AcquireThread(tstate);
 	res = PyEval_CallObjectWithKeywords(
 		boot->func, boot->args, boot->keyw);
@@ -496,6 +498,11 @@
 	boot->func = func;
 	boot->args = args;
 	boot->keyw = keyw;
+	boot->tstate = _PyThreadState_Prealloc(boot->interp);
+	if (boot->tstate == NULL) {
+		PyMem_DEL(boot);
+		return PyErr_NoMemory();
+	}
 	Py_INCREF(func);
 	Py_INCREF(args);
 	Py_XINCREF(keyw);
@@ -506,6 +513,7 @@
 		Py_DECREF(func);
 		Py_DECREF(args);
 		Py_XDECREF(keyw);
+		PyThreadState_Clear(boot->tstate);
 		PyMem_DEL(boot);
 		return NULL;
 	}
diff --git a/Python/pystate.c b/Python/pystate.c
index fe5de5f..3d5cf04 100644
--- a/Python/pystate.c
+++ b/Python/pystate.c
@@ -157,8 +157,8 @@
 	return self->frame;
 }
 
-PyThreadState *
-PyThreadState_New(PyInterpreterState *interp)
+static PyThreadState *
+new_threadstate(PyInterpreterState *interp, int init)
 {
 	PyThreadState *tstate = (PyThreadState *)malloc(sizeof(PyThreadState));
 
@@ -198,9 +198,8 @@
 		tstate->c_profileobj = NULL;
 		tstate->c_traceobj = NULL;
 
-#ifdef WITH_THREAD
-		_PyGILState_NoteThreadState(tstate);
-#endif
+		if (init)
+			_PyThreadState_Init(tstate);
 
 		HEAD_LOCK();
 		tstate->next = interp->tstate_head;
@@ -211,6 +210,26 @@
 	return tstate;
 }
 
+PyThreadState *
+PyThreadState_New(PyInterpreterState *interp)
+{
+	return new_threadstate(interp, 1);
+}
+
+PyThreadState *
+_PyThreadState_Prealloc(PyInterpreterState *interp)
+{
+	return new_threadstate(interp, 0);
+}
+
+void
+_PyThreadState_Init(PyThreadState *tstate)
+{
+#ifdef WITH_THREAD
+	_PyGILState_NoteThreadState(tstate);
+#endif
+}
+
 PyObject*
 PyState_FindModule(struct PyModuleDef* m)
 {
