Crash report
remove_unused_consts in Python/flowgraph.c
When PyMem_Malloc(nconsts * sizeof(Py_ssize_t)); fails, we need to set an exception.
|
static int |
|
remove_unused_consts(basicblock *entryblock, PyObject *consts) |
|
{ |
|
assert(PyList_CheckExact(consts)); |
|
Py_ssize_t nconsts = PyList_GET_SIZE(consts); |
|
if (nconsts == 0) { |
|
return SUCCESS; /* nothing to do */ |
|
} |
|
|
|
Py_ssize_t *index_map = NULL; |
|
Py_ssize_t *reverse_index_map = NULL; |
|
int err = ERROR; |
|
|
|
index_map = PyMem_Malloc(nconsts * sizeof(Py_ssize_t)); |
|
if (index_map == NULL) { |
|
goto end; |
|
} |
gethandlelist and getattributelist in _winapi.c
This place misses it:
|
ret = PyMem_Malloc(*size); |
|
if (ret == NULL) |
|
goto cleanup; |
All other error paths set exceptions, except this if:
|
attribute_list->attribute_list = PyMem_Malloc(attribute_list_size); |
|
if (attribute_list->attribute_list == NULL) { |
|
ret = -1; |
|
goto cleanup; |
|
} |
_channelends_new in Modules/_interpchannelsmodule.c
|
static _channelends * |
|
_channelends_new(void) |
|
{ |
|
_channelends *ends = GLOBAL_MALLOC(_channelends); |
|
if (ends== NULL) { |
|
return NULL; |
|
} |
Later we check for errors in handle_channel_error, it requires either setting err to non -1 or to set Python exception. Both are false, it fails with the assertion failure.
Linked PRs
Crash report
remove_unused_constsinPython/flowgraph.cWhen
PyMem_Malloc(nconsts * sizeof(Py_ssize_t));fails, we need to set an exception.cpython/Python/flowgraph.c
Lines 3267 to 3283 in 29a920e
gethandlelistandgetattributelistin_winapi.cThis place misses it:
cpython/Modules/_winapi.c
Lines 1196 to 1198 in 9fdbade
All other error paths set exceptions, except this
if:cpython/Modules/_winapi.c
Lines 1278 to 1282 in 9fdbade
_channelends_newinModules/_interpchannelsmodule.ccpython/Modules/_interpchannelsmodule.c
Lines 920 to 926 in 3ca93ab
Later we check for errors in
handle_channel_error, it requires either settingerrto non-1or to set Python exception. Both are false, it fails with the assertion failure.Linked PRs
PyErr_NoMemory()inremove_unused_consts#151127PyErr_NoMemory()inremove_unused_consts(GH-151127) #151134PyErr_NoMemory()inremove_unused_consts(GH-151127) #151135PyErr_NoMemory()inremove_unused_consts(GH-151127) #151136PyErr_NoMemory()instrong_cache_node_new#151137PyErr_NoMemoryin_winapimodule #151154PyErr_NoMemoryin_winapimodule (GH-151154) #151180PyErr_NoMemoryin_winapimodule (GH-151154) #151181PyErr_NoMemoryin_winapimodule (GH-151154) #151182_interpchannelsmodule.c#151239_interpchannelsmodule.c(GH-151239) #151265_interpchannelsmodule.c(GH-151239) #151266