New submission from junyixie <xie.ju...@outlook.com>:
fix PyImport_Import use static silly_list under building Python with --with-experimental-isolated-subinterpreters share silly_list in multi subinterpreters cause crash. Under the sub interpreters parallel, PyObject_CallFunction clean stack, Py_DECREF(stack[i]), Py_DECREF silly_list is not thread safe. cause crash ``` PyObject * PyImport_Import(PyObject *module_name) { PyThreadState *tstate = _PyThreadState_GET(); static PyObject *silly_list = NULL; ... /* Initialize constant string objects */ if (silly_list == NULL) { import_str = PyUnicode_InternFromString("__import__"); if (import_str == NULL) return NULL; builtins_str = PyUnicode_InternFromString("__builtins__"); if (builtins_str == NULL) return NULL; silly_list = PyList_New(0); if (silly_list == NULL) return NULL; } ... /* Call the __import__ function with the proper argument list Always use absolute import here. Calling for side-effect of import. */ r = PyObject_CallFunction(import, "OOOOi", module_name, globals, globals, silly_list, 0, NULL); ``` ---------- messages: 389056 nosy: JunyiXie, vstinner priority: normal severity: normal status: open title: [Subinterpreters]: PyImport_Import use static silly_list under building Python with --with-experimental-isolated-subinterpreters share silly_list in multi subinterpreters cause crash. _______________________________________ Python tracker <rep...@bugs.python.org> <https://bugs.python.org/issue43551> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com