2020-05-16 22:20:03 |
Eugene Morozov |
bug |
|
|
added bug |
2020-05-16 22:20:03 |
Eugene Morozov |
attachment added |
|
meliae.patch https://bugs.launchpad.net/bugs/1879100/+attachment/5372740/+files/meliae.patch |
|
2020-05-16 22:23:02 |
Eugene Morozov |
description |
When trying to find memory leak in my Django application, meliae fails immediately with the following traceback:
rtv-sqr-api | [2020-05-15 19:55:29,753] ERROR: django.request: Internal Server Error: /play/dump/
rtv-sqr-api | Traceback (most recent call last):
rtv-sqr-api | File "/usr/local/lib/python2.7/site-packages/django/core/handlers/exception.py", line 41, in inner
rtv-sqr-api | response = get_response(request)
rtv-sqr-api | File "/usr/local/lib/python2.7/site-packages/django/core/handlers/base.py", line 249, in _legacy_get_response
rtv-sqr-api | response = self._get_response(request)
rtv-sqr-api | File "/usr/local/lib/python2.7/site-packages/django/core/handlers/base.py", line 187, in _get_response
rtv-sqr-api | response = self.process_exception_by_middleware(e, request)
rtv-sqr-api | File "/usr/local/lib/python2.7/site-packages/django/core/handlers/base.py", line 185, in _get_response
rtv-sqr-api | response = wrapped_callback(request, *callback_args, **callback_kwargs)
rtv-sqr-api | File "/usr/local/lib/python2.7/site-packages/django/views/generic/base.py", line 68, in view
rtv-sqr-api | return self.dispatch(request, *args, **kwargs)
rtv-sqr-api | File "/usr/local/lib/python2.7/site-packages/django/views/generic/base.py", line 88, in dispatch
rtv-sqr-api | return handler(request, *args, **kwargs)
rtv-sqr-api | File "/opt/project/apps/play/views.py", line 238, in get
rtv-sqr-api | meliae.scanner.dump_all_objects('/opt/project/heap.dump')
rtv-sqr-api | File "/usr/local/lib/python2.7/site-packages/meliae/scanner.py", line 141, in dump_all_objects
rtv-sqr-api | dump_all_referenced(outf, all_objs, is_pending=True)
rtv-sqr-api | File "/usr/local/lib/python2.7/site-packages/meliae/scanner.py", line 72, in dump_all_referenced
rtv-sqr-api | for ref in get_referents(next):
rtv-sqr-api | OverflowError: Python int too large to convert to C long
After compiling python with debug information and stepping through a debugger, I found out that this happens because meliae attempts to serialize Python long integers as C long. But Python long has an unlimited range and cannot be cast to C long.
I'm attaching a small patch that tries to serialize Python long as C long long and returning -1 in case if Python long is too large for C long. |
When trying to find memory leak in my Django application, meliae fails immediately with the following traceback:
ERROR: django.request: Internal Server Error: /play/dump/
Traceback (most recent call last):
File "/usr/local/lib/python2.7/site-packages/django/core/handlers/exception.py", line 41, in inner
response = get_response(request)
File "/usr/local/lib/python2.7/site-packages/django/core/handlers/base.py", line 249, in _legacy_get_response
response = self._get_response(request)
File "/usr/local/lib/python2.7/site-packages/django/core/handlers/base.py", line 187, in _get_response
response = self.process_exception_by_middleware(e, request)
File "/usr/local/lib/python2.7/site-packages/django/core/handlers/base.py", line 185, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/usr/local/lib/python2.7/site-packages/django/views/generic/base.py", line 68, in view
return self.dispatch(request, *args, **kwargs)
File "/usr/local/lib/python2.7/site-packages/django/views/generic/base.py", line 88, in dispatch
return handler(request, *args, **kwargs)
File "/opt/project/apps/play/views.py", line 238, in get
meliae.scanner.dump_all_objects('/opt/project/heap.dump')
File "/usr/local/lib/python2.7/site-packages/meliae/scanner.py", line 141, in dump_all_objects
dump_all_referenced(outf, all_objs, is_pending=True)
File "/usr/local/lib/python2.7/site-packages/meliae/scanner.py", line 72, in dump_all_referenced
for ref in get_referents(next):
OverflowError: Python int too large to convert to C long
After compiling python with debug information and stepping through the code in gdb, I found out that this happens because meliae attempts to serialize Python long integers as C long. But Python long has an unlimited range and cannot be cast to C long.
I'm attaching a small patch that tries to serialize Python long as C long long and returning -1 in case if Python long is too large for C long. |
|
2020-05-16 22:23:20 |
Eugene Morozov |
attachment removed |
meliae.patch https://bugs.launchpad.net/meliae/+bug/1879100/+attachment/5372740/+files/meliae.patch |
|
|
2020-05-16 22:23:40 |
Eugene Morozov |
attachment added |
|
meliae.patch https://bugs.launchpad.net/meliae/+bug/1879100/+attachment/5372758/+files/meliae.patch |
|
2020-05-16 22:24:44 |
Eugene Morozov |
description |
When trying to find memory leak in my Django application, meliae fails immediately with the following traceback:
ERROR: django.request: Internal Server Error: /play/dump/
Traceback (most recent call last):
File "/usr/local/lib/python2.7/site-packages/django/core/handlers/exception.py", line 41, in inner
response = get_response(request)
File "/usr/local/lib/python2.7/site-packages/django/core/handlers/base.py", line 249, in _legacy_get_response
response = self._get_response(request)
File "/usr/local/lib/python2.7/site-packages/django/core/handlers/base.py", line 187, in _get_response
response = self.process_exception_by_middleware(e, request)
File "/usr/local/lib/python2.7/site-packages/django/core/handlers/base.py", line 185, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/usr/local/lib/python2.7/site-packages/django/views/generic/base.py", line 68, in view
return self.dispatch(request, *args, **kwargs)
File "/usr/local/lib/python2.7/site-packages/django/views/generic/base.py", line 88, in dispatch
return handler(request, *args, **kwargs)
File "/opt/project/apps/play/views.py", line 238, in get
meliae.scanner.dump_all_objects('/opt/project/heap.dump')
File "/usr/local/lib/python2.7/site-packages/meliae/scanner.py", line 141, in dump_all_objects
dump_all_referenced(outf, all_objs, is_pending=True)
File "/usr/local/lib/python2.7/site-packages/meliae/scanner.py", line 72, in dump_all_referenced
for ref in get_referents(next):
OverflowError: Python int too large to convert to C long
After compiling python with debug information and stepping through the code in gdb, I found out that this happens because meliae attempts to serialize Python long integers as C long. But Python long has an unlimited range and cannot be cast to C long.
I'm attaching a small patch that tries to serialize Python long as C long long and returning -1 in case if Python long is too large for C long. |
When trying to find memory leak in my Django application, meliae fails immediately with the following traceback:
ERROR: django.request: Internal Server Error: /play/dump/
Traceback (most recent call last):
File "/usr/local/lib/python2.7/site-packages/django/core/handlers/exception.py", line 41, in inner
response = get_response(request)
File "/usr/local/lib/python2.7/site-packages/django/core/handlers/base.py", line 249, in _legacy_get_response
response = self._get_response(request)
File "/usr/local/lib/python2.7/site-packages/django/core/handlers/base.py", line 187, in _get_response
response = self.process_exception_by_middleware(e, request)
File "/usr/local/lib/python2.7/site-packages/django/core/handlers/base.py", line 185, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/usr/local/lib/python2.7/site-packages/django/views/generic/base.py", line 68, in view
return self.dispatch(request, *args, **kwargs)
File "/usr/local/lib/python2.7/site-packages/django/views/generic/base.py", line 88, in dispatch
return handler(request, *args, **kwargs)
File "/opt/project/apps/play/views.py", line 238, in get
meliae.scanner.dump_all_objects('/opt/project/heap.dump')
File "/usr/local/lib/python2.7/site-packages/meliae/scanner.py", line 141, in dump_all_objects
dump_all_referenced(outf, all_objs, is_pending=True)
File "/usr/local/lib/python2.7/site-packages/meliae/scanner.py", line 72, in dump_all_referenced
for ref in get_referents(next):
OverflowError: Python int too large to convert to C long
After compiling python with debug information and stepping through the code in gdb, I found out that this happens because meliae attempts to serialize Python long integers as C long. But Python long has an unlimited range and cannot be cast to C long.
I'm attaching a small patch that attempts to serialize Python long as C long long and returning -1 in case if Python long is too large for C long.
I was able to generate dump successfully after building meliae with this change. |
|
2020-05-16 22:26:38 |
Eugene Morozov |
attachment removed |
meliae.patch https://bugs.launchpad.net/meliae/+bug/1879100/+attachment/5372758/+files/meliae.patch |
|
|
2020-05-16 22:26:51 |
Eugene Morozov |
attachment added |
|
meliae.patch https://bugs.launchpad.net/meliae/+bug/1879100/+attachment/5372759/+files/meliae.patch |
|
2020-05-18 20:53:00 |
Eugene Morozov |
attachment added |
|
meliae.patch https://bugs.launchpad.net/meliae/+bug/1879100/+attachment/5373644/+files/meliae.patch |
|
2020-05-27 18:35:05 |
Chris Mayo |
bug |
|
|
added subscriber Chris Mayo |
2020-06-14 12:41:09 |
Jelmer Vernooij |
bug |
|
|
added subscriber Jelmer Vernooij |