New issue 2936: coredump generated when OOM  in PYPY
https://bitbucket.org/pypy/pypy/issues/2936/coredump-generated-when-oom-in-pypy

Weikang Jin:

Python version: pypy-6.0.0-linux_x86_64-portable
Operating System: CentOS Linux release 7.6.1810


### CODE ###
```
#!python

from gevent import monkey
monkey.patch_all()
import bottle
from bottle import route, run
import sys, random, string
PYPY = hasattr(sys, 'pypy_version_info')

# test cpython
if not PYPY:
        import resource

        def limit_memory(maxsize):
            soft, hard = resource.getrlimit(resource.RLIMIT_AS)
            resource.setrlimit(resource.RLIMIT_AS, (maxsize, hard))

        limit_memory(200 * 1000 * 1000 * 2)

@route('/')
def index():
    buf = []
    for _ in range(1000):
            buf.append(random.choice(string.letters) * 10**6)
    return "ok"

if __name__ == "__main__":
        run(host='localhost', port=8000)
else:
        app = bottle.default_app()
```
### RUN ###
$ PYPY_GC_MIN=300MB PYPY_GC_MAX=400MB PYPYLOG=gc:- pypy app.py
$ http :8000

### LOG ###
[596869e8b3584] gc-collect-step}
    return self.wsgi(environ, start_response)
  File 
"/root/workspace/pypy-6.0.0-linux_x86_64-portable/site-packages/bottle.py", 
line 954, in wsgi
    out = self._cast(self._handle(environ))
  File 
"/root/workspace/pypy-6.0.0-linux_x86_64-portable/site-packages/bottle.py", 
line 862, in _handle
    return route.call(**args)
  File 
"/root/workspace/pypy-6.0.0-linux_x86_64-portable/site-packages/bottle.py", 
line 1740, in wrapper
    rv = callback(*a, **ka)
  File "app.py", line 22, in index
    buf.append(random.choice(string.letters) * 10**6)
MemoryError
127.0.0.1 - - [03/Jan/2019 11:40:55] "GET / HTTP/1.1" 500 59

...

[5968a410c163e] gc-minor}
[5968a410c4338] {gc-collect-step
starting gc state:  SWEEPING
[5968a4133cc50] {gc-collect-done
arenas:                12  =>  12
bytes used in arenas:  5108344
bytes raw-malloced:    439381936  =>  439382032
[5968a41350048] gc-collect-done}
RPython traceback:
  File "pypy_interpreter_1.c", line 19837, in Method_descr_method_getattribute
  File "pypy_interpreter.c", line 36849, in BuiltinCode2_fastcall_2
  File "pypy_objspace.c", line 23854, in descr__getattribute__
using too much memory, aborting
[1]    2728 abort (core dumped)  PYPY_GC_MIN=300MB PYPY_GC_MAX=400MB 
PYPYLOG=gc:- pypy app.py

MemoryError raised but the memory does not collect:  bytes raw-malloced:    
439381936  =>  439382032

but cpython works expected, the processor is still alived and memory is normal 
state.


_______________________________________________
pypy-issue mailing list
pypy-issue@python.org
https://mail.python.org/mailman/listinfo/pypy-issue

Reply via email to