[pypy-issue] Issue #2833: Memory leak with non-exhausted nested generators (pypy/pypy)

František Skála issues-reply at bitbucket.org
Tue May 22 09:12:42 EDT 2018


New issue 2833: Memory leak with non-exhausted nested generators
https://bitbucket.org/pypy/pypy/issues/2833/memory-leak-with-non-exhausted-nested

František Skála:

When I have nested generators and don't exhaust them fully, memory is not released properly. I've tried a version with and without closing the generators manually, but I did not observe any difference.

Tested in an ubuntu 16.04 docker image with just pypy3 installed:

```
#!none
$ pypy3 --version
Python 3.5.3 (fdd60ed87e94, Apr 24 2018, 06:10:04)
[PyPy 6.0.0 with GCC 6.2.0 20160901]

$ uname -a
Linux 60286eff83ae 4.4.0-124-generic #148-Ubuntu SMP Wed May 2 13:00:18 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
```

The code showing this problem (main.py) while closing the generators manually:
```
#!python

def sample_generator():
    yield 3

def nesting_generator():
    inner_generator = sample_generator()
    try:
        for x in inner_generator:
            yield x
    finally:
        inner_generator.close()

def leak():
    outer_generator = nesting_generator()
    next(outer_generator)
    outer_generator.close()

while True:
    leak()
```

Command used: `pypy3 main.py`

Expected behaviour:

* memory consumption of the pypy3 process doesn't grow over time

Actual behaviour:

* memory consumption growing rapidly (~250MB increase each second)




More information about the pypy-issue mailing list