[pypy-dev] Catching MemoryError in RPython
Niko Matsakis
niko at alum.mit.edu
Fri Feb 22 19:54:52 CET 2008
I cannot seem to generate code that catches OOM errors in RPython. I
wrote a test like this:
def test_memoryerror_due_to_oom(self):
def fn():
try:
lst = []
for i in range(sys.maxint): lst.append(i)
except Exception: #MemoryError:
return "OK"
assert self.interpret(fn, []) == "OK"
but the try:/except: seems to have disappeared by the time the JVM
backend is invoked (it's not in the flow graphs anywhere). I assume
that it is getting stripped away by a deadcode pass at some point,
though I'm not sure where that might be. I haven't managed to concoct
code that can fool it into keeping the exception block yet, but I'm
pretty sure that if I only could, then the JVM backend would handle it
correctly... :)
If you comment out the test that causes this out of memory condition,
then test_builtin.py *almost* passes in pypy-jvm. There are still two
errors, though. :)
Niko
More information about the Pypy-dev
mailing list