mirror of
https://github.com/python/cpython.git
synced 2025-11-03 03:22:27 +00:00
gh-100228: Warn from os.fork() if other threads exist. (#100229)
Not comprehensive, best effort warning. There are cases when threads exist on some platforms that this code cannot detect. macOS when API permissions allow and Linux with a readable /proc procfs present are the currently supported cases where a warning should show up reliably. Starting with a DeprecationWarning for now, it is less disruptive than something like RuntimeWarning and most likely to only be seen in people's CI tests - a good place to start with this messaging.
This commit is contained in:
parent
2df82db485
commit
894f2c3c16
12 changed files with 283 additions and 66 deletions
|
|
@ -733,6 +733,7 @@ _PyStaticObjects_CheckRefcnt(PyInterpreterState *interp) {
|
|||
_PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(__xor__));
|
||||
_PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(_abc_impl));
|
||||
_PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(_abstract_));
|
||||
_PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(_active));
|
||||
_PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(_annotation));
|
||||
_PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(_anonymous_));
|
||||
_PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(_argtypes_));
|
||||
|
|
@ -753,6 +754,7 @@ _PyStaticObjects_CheckRefcnt(PyInterpreterState *interp) {
|
|||
_PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(_initializing));
|
||||
_PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(_is_text_encoding));
|
||||
_PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(_length_));
|
||||
_PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(_limbo));
|
||||
_PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(_lock_unlock_module));
|
||||
_PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(_loop));
|
||||
_PyStaticObject_CheckRefcnt((PyObject *)&_Py_ID(_needs_com_addref_));
|
||||
|
|
|
|||
|
|
@ -219,6 +219,7 @@ struct _Py_global_strings {
|
|||
STRUCT_FOR_ID(__xor__)
|
||||
STRUCT_FOR_ID(_abc_impl)
|
||||
STRUCT_FOR_ID(_abstract_)
|
||||
STRUCT_FOR_ID(_active)
|
||||
STRUCT_FOR_ID(_annotation)
|
||||
STRUCT_FOR_ID(_anonymous_)
|
||||
STRUCT_FOR_ID(_argtypes_)
|
||||
|
|
@ -239,6 +240,7 @@ struct _Py_global_strings {
|
|||
STRUCT_FOR_ID(_initializing)
|
||||
STRUCT_FOR_ID(_is_text_encoding)
|
||||
STRUCT_FOR_ID(_length_)
|
||||
STRUCT_FOR_ID(_limbo)
|
||||
STRUCT_FOR_ID(_lock_unlock_module)
|
||||
STRUCT_FOR_ID(_loop)
|
||||
STRUCT_FOR_ID(_needs_com_addref_)
|
||||
|
|
|
|||
2
Include/internal/pycore_runtime_init_generated.h
generated
2
Include/internal/pycore_runtime_init_generated.h
generated
|
|
@ -725,6 +725,7 @@ extern "C" {
|
|||
INIT_ID(__xor__), \
|
||||
INIT_ID(_abc_impl), \
|
||||
INIT_ID(_abstract_), \
|
||||
INIT_ID(_active), \
|
||||
INIT_ID(_annotation), \
|
||||
INIT_ID(_anonymous_), \
|
||||
INIT_ID(_argtypes_), \
|
||||
|
|
@ -745,6 +746,7 @@ extern "C" {
|
|||
INIT_ID(_initializing), \
|
||||
INIT_ID(_is_text_encoding), \
|
||||
INIT_ID(_length_), \
|
||||
INIT_ID(_limbo), \
|
||||
INIT_ID(_lock_unlock_module), \
|
||||
INIT_ID(_loop), \
|
||||
INIT_ID(_needs_com_addref_), \
|
||||
|
|
|
|||
|
|
@ -344,6 +344,8 @@ _PyUnicode_InitStaticStrings(void) {
|
|||
PyUnicode_InternInPlace(&string);
|
||||
string = &_Py_ID(_abstract_);
|
||||
PyUnicode_InternInPlace(&string);
|
||||
string = &_Py_ID(_active);
|
||||
PyUnicode_InternInPlace(&string);
|
||||
string = &_Py_ID(_annotation);
|
||||
PyUnicode_InternInPlace(&string);
|
||||
string = &_Py_ID(_anonymous_);
|
||||
|
|
@ -384,6 +386,8 @@ _PyUnicode_InitStaticStrings(void) {
|
|||
PyUnicode_InternInPlace(&string);
|
||||
string = &_Py_ID(_length_);
|
||||
PyUnicode_InternInPlace(&string);
|
||||
string = &_Py_ID(_limbo);
|
||||
PyUnicode_InternInPlace(&string);
|
||||
string = &_Py_ID(_lock_unlock_module);
|
||||
PyUnicode_InternInPlace(&string);
|
||||
string = &_Py_ID(_loop);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue