bpo-44050: Extension modules can share state when they don't support sub-interpreters. (GH-27794) (GH-28738)

Automerge-Triggered-By: GH:encukou
(cherry picked from commit b9bb74871b27d9226df2dd3fce9d42bda8b43c2b)

Co-authored-by: Hai Shi <shihai1992@gmail.com>
diff --git a/Python/import.c b/Python/import.c
index f2b30af..50f4956 100644
--- a/Python/import.c
+++ b/Python/import.c
@@ -441,7 +441,9 @@ _PyImport_FixupExtensionObject(PyObject *mod, PyObject *name,
         return -1;
     }
 
-    if (_Py_IsMainInterpreter(tstate->interp)) {
+    // bpo-44050: Extensions and def->m_base.m_copy can be updated
+    // when the extension module doesn't support sub-interpreters.
+    if (_Py_IsMainInterpreter(tstate->interp) || def->m_size == -1) {
         if (def->m_size == -1) {
             if (def->m_base.m_copy) {
                 /* Somebody already imported the module,