[pypy-dev] Catching MemoryError in RPython

holger krekel holger at merlinux.de
Sat Feb 23 14:33:23 CET 2008


Hi Armin, 

On Sat, Feb 23, 2008 at 13:44 +0100, Armin Rigo wrote:
> On Fri, Feb 22, 2008 at 07:54:52PM +0100, Niko Matsakis wrote:
> > I cannot seem to generate code that catches OOM errors in RPython.
> 
> A known issue: the flow space doesn't consider that almost any operation
> could raise MemoryError, and thus the except clause is never seen by it.
> The same issue applies to try:finally:.
> 
> The workaround is to use a function call:
> 
>     def fn():
>         try:
>             do_stuff()
>         except MemoryError:
>             return True
>         else:
>             return False
> 
>     def do_stuff():
>         ...

the "range" and "lst.append" in Niko's example are not 
considered to be function calls?  Is it (also) the explicit 
catching of MemoryError here that is important? 

holger



More information about the Pypy-dev mailing list