@@ -341,6 +341,7 @@ PyInterpreterState_New(void)
341341 interp = & runtime -> _main_interpreter ;
342342 assert (interp -> id == 0 );
343343 assert (interp -> next == NULL );
344+ assert (interp -> _static );
344345
345346 interpreters -> main = interp ;
346347 }
@@ -355,6 +356,9 @@ PyInterpreterState_New(void)
355356 // Set to _PyInterpreterState_INIT.
356357 memcpy (interp , & initial ._main_interpreter ,
357358 sizeof (* interp ));
359+ // We need to adjust any fields that are different from the initial
360+ // interpreter (as defined in _PyInterpreterState_INIT):
361+ interp -> _static = false;
358362
359363 if (id < 0 ) {
360364 /* overflow or Py_Initialize() not called yet! */
@@ -817,6 +821,7 @@ new_threadstate(PyInterpreterState *interp)
817821 assert (id == 1 );
818822 used_newtstate = 0 ;
819823 tstate = & interp -> _initial_thread ;
824+ assert (tstate -> _static );
820825 }
821826 else {
822827 // Every valid interpreter must have at least one thread.
@@ -828,6 +833,9 @@ new_threadstate(PyInterpreterState *interp)
828833 memcpy (tstate ,
829834 & initial ._main_interpreter ._initial_thread ,
830835 sizeof (* tstate ));
836+ // We need to adjust any fields that are different from the initial
837+ // thread (as defined in _PyThreadState_INIT):
838+ tstate -> _static = false;
831839 }
832840 interp -> threads .head = tstate ;
833841
0 commit comments