1. Michael Bayer
  2. mako
  3. Issues


Issue #135 resolved

IndexError when showing traceback at Pylons

created an issue

Pylons has a _debug controller that shows past exception tracebacks. When a user follows the debug link shown in console an exception occurs:

Exception happened during processing of request from ('', 49212) Traceback (most recent call last): File "/usr/lib/pymodules/python2.6/paste/httpserver.py", line 1068, in process_request_in_thread self.finish_request(request, client_address) File "/usr/lib/python2.6/SocketServer.py", line 320, in finish_request self.RequestHandlerClass(request, client_address, self) File "/usr/lib/python2.6/SocketServer.py", line 615, in init self.handle() File "/usr/lib/pymodules/python2.6/paste/httpserver.py", line 442, in handle BaseHTTPRequestHandler.handle(self) File "/usr/lib/python2.6/BaseHTTPServer.py", line 329, in handle self.handle_one_request() File "/usr/lib/pymodules/python2.6/paste/httpserver.py", line 437, in handle_one_request self.wsgi_execute() File "/usr/lib/pymodules/python2.6/paste/httpserver.py", line 287, in wsgi_execute self.wsgi_start_response) File "/usr/lib/pymodules/python2.6/paste/cascade.py", line 130, in call return self.apps[-1](environ, start_response) File "/usr/lib/pymodules/python2.6/paste/registry.py", line 375, in call app_iter = self.application(environ, start_response) File "/usr/lib/pymodules/python2.6/pylons/middleware.py", line 200, in call self.app, environ, catch_exc_info=True) File "/usr/lib/pymodules/python2.6/pylons/util.py", line 91, in call_wsgi_application app_iter = application(environ, start_response) File "/usr/lib/pymodules/python2.6/weberror/evalexception.py", line 233, in call return self.debug(req)(environ, start_response) File "/usr/lib/pymodules/python2.6/weberror/evalexception.py", line 535, in wsgi_application return self.content() File "/usr/lib/pymodules/python2.6/weberror/evalexception.py", line 545, in content result = tmpl_formatter(self.exc_value) File "/usr/lib/pymodules/python2.6/pylons/error.py", line 43, in mako_html_data css=False) File "/usr/lib/pymodules/python2.6/mako/template.py", line 189, in render return runtime._render(self, self.callable_, args, data) File "/usr/lib/pymodules/python2.6/mako/runtime.py", line 403, in _render _render_context(template, callable_, context, *args, _kwargs_for_callable(callable_, data)) File "/usr/lib/pymodules/python2.6/mako/runtime.py", line 434, in _render_context _exec_template(inherit, lclcontext, args=args, kwargs=kwargs) File "/usr/lib/pymodules/python2.6/mako/runtime.py", line 457, in _exec_template callable_(context, *args, kwargs) File "memory:0x249a510", line 54, in render_body File "/usr/lib/pymodules/python2.6/mako/exceptions.py", line 88, in init self.records = self._init(traceback) File "/usr/lib/pymodules/python2.6/mako/exceptions.py", line 201, in _init fp = open(new_trcback[-1][0], 'rb') IndexError: list index out of range

In particular, trcback is None so any index value would raise an IndexError. This would also be Pylon's fault as the exception is not properly replayed.

A patch is attached.

Comments (5)

  1. guest reporter

    I don't think it is a duplicate because the exception in this case is IndexError not AttributeError.

    I can't manage to get a standalone test case, but as long as there is a way to raise a mako exception with an empty traceback (i.e. None), a mako IndexError will be generated.

  2. Log in to comment