PyLong_FromLong(0L) at lines 1418-1419 stored in begidx/endidx without NULL check. On OOM during module init, readline.get_begidx() does Py_NewRef(NULL) → segfault.
import _testcapi, sys
if "readline" in sys.modules: del sys.modules["readline"]
for n in range(1, 80):
if "readline" in sys.modules: del sys.modules["readline"]
_testcapi.set_nomemory(n, 0)
try:
import readline
_testcapi.remove_mem_hooks()
break
except MemoryError:
_testcapi.remove_mem_hooks()
except ImportError:
_testcapi.remove_mem_hooks()
except:
_testcapi.remove_mem_hooks()
# Assertion: obj != NULL in PyStackRef_FromPyObjectSteal