mirror of
https://github.com/python/cpython.git
synced 2025-10-06 23:21:06 +00:00
gh-117649: Raise ImportError for unsupported modules in free-threaded build (#117651)
The free-threaded build does not currently support the combination of single-phase init modules and non-isolated subinterpreters. Ensure that `check_multi_interp_extensions` is always `True` for subinterpreters in the free-threaded build so that importing these modules raises an `ImportError`.
This commit is contained in:
parent
39d381f91e
commit
25f6ff5d3e
9 changed files with 103 additions and 32 deletions
|
@ -559,6 +559,15 @@ init_interp_settings(PyInterpreterState *interp,
|
|||
return _PyStatus_ERR("per-interpreter obmalloc does not support "
|
||||
"single-phase init extension modules");
|
||||
}
|
||||
#ifdef Py_GIL_DISABLED
|
||||
if (!_Py_IsMainInterpreter(interp) &&
|
||||
!config->check_multi_interp_extensions)
|
||||
{
|
||||
return _PyStatus_ERR("The free-threaded build does not support "
|
||||
"single-phase init extension modules in "
|
||||
"subinterpreters");
|
||||
}
|
||||
#endif
|
||||
|
||||
if (config->allow_fork) {
|
||||
interp->feature_flags |= Py_RTFLAGS_FORK;
|
||||
|
@ -647,8 +656,10 @@ pycore_create_interpreter(_PyRuntimeState *runtime,
|
|||
}
|
||||
|
||||
PyInterpreterConfig config = _PyInterpreterConfig_LEGACY_INIT;
|
||||
// The main interpreter always has its own GIL.
|
||||
// The main interpreter always has its own GIL and supports single-phase
|
||||
// init extensions.
|
||||
config.gil = PyInterpreterConfig_OWN_GIL;
|
||||
config.check_multi_interp_extensions = 0;
|
||||
status = init_interp_settings(interp, &config);
|
||||
if (_PyStatus_EXCEPTION(status)) {
|
||||
return status;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue