New submission from Oleg Hoefling <[email protected]>:
First of all, I guess this is a somewhat obscure error that is unlikely to
occur in a usual context, nevertheless IMO worth reporting. We observed this
when unit-testing custom exception reporting mechanism, raising different
exceptions in different contexts and then analyzing whether they are processed
correctly.
This is a somewhat dull example I managed to extract from our tests:
from pathlib import Path
from unittest.mock import patch
class TestException(MemoryError):
pass
class report_ctx:
def __enter__(self):
return self
def __exit__(self, exc_type, exc_value, tb):
report(exc_value)
class raises:
def __init__(self, ex):
self.ex = ex
def __enter__(self):
return self
def __exit__(self, exc_type, exc_value, tb):
return issubclass(exc_type, self.ex)
def report(ex):
pass
def error():
raise MemoryError
modname = Path(__file__).stem
for _ in range(10):
with patch(f"{modname}.report"):
with raises(MemoryError), report_ctx():
raise MemoryError
with raises(TestException):
raise TestException
with raises(MemoryError):
error()
that yields:
Fatal Python error: Segmentation fault
Current thread 0x00007fcf0833b740 (most recent call first):
File
"/home/oleg.hoefling/projects/private/python-memoryerror-segfault/main.py",
line 38 in <module>
File "<frozen importlib._bootstrap>", line 228 in _call_with_frames_removed
File "<frozen importlib._bootstrap_external>", line 790 in exec_module
File "<frozen importlib._bootstrap>", line 680 in _load_unlocked
File "<frozen importlib._bootstrap>", line 986 in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 1007 in _find_and_load
File "/usr/lib64/python3.9/unittest/mock.py", line 1236 in _importer
File "/usr/lib64/python3.9/unittest/mock.py", line 1564 in <lambda>
File "/usr/lib64/python3.9/unittest/mock.py", line 1389 in __enter__
File
"/home/oleg.hoefling/projects/private/python-memoryerror-segfault/main.py",
line 36 in <module>
----------
components: Interpreter Core
messages: 376028
nosy: hoefling
priority: normal
severity: normal
status: open
title: Segfault when raising MemoryError
type: crash
versions: Python 3.10, Python 3.5, Python 3.6, Python 3.7, Python 3.8, Python
3.9
_______________________________________
Python tracker <[email protected]>
<https://bugs.python.org/issue41654>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe:
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com