﻿id	summary	reporter	owner	description	type	status	component	version	severity	resolution	keywords	cc	stage	has_patch	needs_docs	needs_tests	needs_better_patch	easy	ui_ux
20368	MemoryError can block rendering of traceback page	ironfroggy	nobody	"When preparing frame variables for the traceback page on a low memory VM, it is possible to hit a MemoryError during the html escaping. For the purposes of a traceback page, there should be some fallback for this.

In django/views/debug.py:117 the call to force_escape() could be wrapped in a try/except and catch the MemoryError, representing the variable in the frame as something like ""could not display, representation too large"".

As it stands, this just hides the original error by never producing the traceback page.

{{{
Traceback (most recent call last):

  File ""/home/vagrant/devel/cms_dev/local/lib/python2.7/site-packages/django/core/servers/basehttp.py"", line 283, in run
    self.result = application(self.environ, self.start_response)

  File ""/home/vagrant/devel/cms_dev/local/lib/python2.7/site-packages/django/contrib/staticfiles/handlers.py"", line 68, in __call__
    return self.application(environ, start_response)

  File ""/home/vagrant/devel/cms_dev/local/lib/python2.7/site-packages/django/core/handlers/wsgi.py"", line 273, in __call__
    response = self.get_response(request)

  File ""/home/vagrant/devel/cms_dev/local/lib/python2.7/site-packages/django/core/handlers/base.py"", line 182, in get_response
    response = self.handle_uncaught_exception(request, resolver, sys.exc_info())

  File ""/home/vagrant/devel/cms_dev/local/lib/python2.7/site-packages/django/core/handlers/base.py"", line 203, in handle_uncaught_exception
    return debug.technical_500_response(request, *exc_info)

  File ""/home/vagrant/devel/cms_dev/local/lib/python2.7/site-packages/django/views/debug.py"", line 59, in technical_500_response
    html = reporter.get_traceback_html()

  File ""/home/vagrant/devel/cms_dev/local/lib/python2.7/site-packages/django/views/debug.py"", line 117, in get_traceback_html
    frame['vars'] = [(k, force_escape(pprint(v))) for k, v in frame['vars']]

  File ""/home/vagrant/devel/cms_dev/local/lib/python2.7/site-packages/django/template/defaultfilters.py"", line 37, in _dec
    return func(*args, **kwargs)

  File ""/home/vagrant/devel/cms_dev/local/lib/python2.7/site-packages/django/template/defaultfilters.py"", line 398, in force_escape
    return mark_safe(escape(value))

  File ""/home/vagrant/devel/cms_dev/local/lib/python2.7/site-packages/django/utils/functional.py"", line 259, in wrapper
    return func(*args, **kwargs)

  File ""/home/vagrant/devel/cms_dev/local/lib/python2.7/site-packages/django/utils/html.py"", line 34, in escape
    return mark_safe(force_unicode(html).replace('&', '&amp;').replace('<', '&lt;').replace('>', '&gt;').replace('""', '&quot;').replace(""'"", '&#39;'))

MemoryError
}}}"	Cleanup/optimization	closed	Template system	1.3	Normal	fixed		walter+django@…	Accepted	1	0	0	1	0	0
