<html>
  <head>

    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
  </head>
  <body>
    <p>Hi all,</p>
    <p>I got this crash report from the server at k.sfconservancy.org
      over the weekend, and the comment in the last line jumped out at
      me. It sounds like there's a situation where the code assumes a
      list can't be empty, but in fact it can be. The full details are
      below, except I've removed bits that just reveal too much about
      our server setup or the visitor.</p>
    <p>You're welcome to browse around or clone the repository if it
      helps you debug the problem; it's all public.<br>
    </p>
    <p><br>
    </p>
    <div class="moz-forward-container">
      <pre>TRACEBACK:</pre>
      <pre>Traceback (most recent call last):</pre>
      <pre>  File "/usr/local/src/kallithea/lib/python3.7/site-packages/tg/appwrappers/session.py", line 71, in __call__</pre>
      <pre>    response = self.next_handler(controller, environ, context)</pre>
      <pre>  File "/usr/local/src/kallithea/lib/python3.7/site-packages/tg/appwrappers/i18n.py", line 71, in __call__</pre>
      <pre>    return self.next_handler(controller, environ, context)</pre>
      <pre>  File "/usr/local/src/kallithea/lib/python3.7/site-packages/tg/wsgiapp.py", line 243, in _dispatch</pre>
      <pre>    return controller(environ, context)</pre>
      <pre>  File "/usr/local/src/kallithea/lib/python3.7/site-packages/kallithea/lib/base.py", line 536, in __call__</pre>
      <pre>    return super(BaseController, self).__call__(environ, context)</pre>
      <pre>  File "/usr/local/src/kallithea/lib/python3.7/site-packages/tg/controllers/dispatcher.py", line 118, in __call__</pre>
      <pre>    response = self._perform_call(context)</pre>
      <pre>  File "/usr/local/src/kallithea/lib/python3.7/site-packages/tg/controllers/dispatcher.py", line 107, in _perform_call</pre>
      <pre>    r = self._call(action, params, remainder=remainder, context=context)</pre>
      <pre>  File "/usr/local/src/kallithea/lib/python3.7/site-packages/tg/controllers/decoratedcontroller.py", line 129, in _call</pre>
      <pre>    output = controller_caller(context_config, bound_controller_callable, remainder, params)</pre>
      <pre>  File "/usr/local/src/kallithea/lib/python3.7/site-packages/tg/controllers/decoration.py", line 21, in _decorated_controller_caller</pre>
      <pre>    return application_controller_caller(tg_config, controller, remainder, params)</pre>
      <pre>  File "/usr/local/src/kallithea/lib/python3.7/site-packages/tg/configurator/components/dispatch.py", line 114, in _call_controller</pre>
      <pre>    return controller(*remainder, **params)</pre>
      <pre>  File "<decorator-gen-4>", line 2, in index</pre>
      <pre>      File "/usr/local/src/kallithea/lib/python3.7/site-packages/kallithea/lib/auth.py", line 608, in __wrapper</pre>
      <pre>    return func(*fargs, **fkwargs)</pre>
      <pre>  File "<decorator-gen-3>", line 2, in index</pre>
      <pre>      File "/usr/local/src/kallithea/lib/python3.7/site-packages/kallithea/lib/auth.py", line 657, in __wrapper</pre>
      <pre>    return func(*fargs, **fkwargs)</pre>
      <pre>  File "/usr/local/src/kallithea/lib/python3.7/site-packages/kallithea/controllers/changelog.py", line 148, in index</pre>
      <pre>    c.first_revision = c.cs_pagination[0] # pagination is never empty here!</pre>
      <pre>IndexError: list index out of range</pre>
      <pre>
</pre>
      <pre>ENVIRON:</pre>
      <pre>       HTTP_ACCEPT: '*/*'</pre>
      <pre>       HTTP_ACCEPT_CHARSET: 'utf-8;q=0.7,iso-8859-1;q=0.2,*;q=0.1'</pre>
      <pre>       HTTP_CONNECTION: 'Keep-Alive'</pre>
      <pre>       HTTP_HOST: 'k.sfconservancy.org'</pre>
      <pre>       HTTP_USER_AGENT: 'Mozilla/5.0 (compatible; DotBot/1.1; <a class="moz-txt-link-freetext" href="http://www.opensiteexplorer.org/dotbot">http://www.opensiteexplorer.org/dotbot</a>, <a class="moz-txt-link-abbreviated" href="mailto:help@moz.com">help@moz.com</a>)</pre>
      <pre>       PATH_INFO: '/website/changelog/49c5bca7430b19dd09e0e12d2b908b86d278d325/www/conservancy/static/supporter/index.html'</pre>
      <pre>       QUERY_STRING: 'page=2'</pre>
      <pre>       REQUEST_METHOD: 'GET'</pre>
      <pre>       SCRIPT_NAME: ''</pre>
      <pre>       SERVER_PROTOCOL: 'HTTP/1.1'</pre>
      <pre>       SERVER_SOFTWARE: 'waitress'</pre>
      <pre>
</pre>
      <pre>WSGI:</pre>
      <pre>       beaker.session: {'_domain': None, '_path': '/', '_accessed_time': 1612166635.5476, '_creation_time': 1612166635.5476}</pre>
      <pre>       pylons.routes_dict: {'repo_name': 'website', 'revision': '49c5bca7430b19dd09e0e12d2b908b86d278d325', 'f_path': 'www/conservancy/static/supporter/index.html', 'action': 'index', 'controller': 'changelog'}</pre>
      <pre>       tg.routes_dict: {'repo_name': 'website', 'revision': '49c5bca7430b19dd09e0e12d2b908b86d278d325', 'f_path': 'www/conservancy/static/supporter/index.html', 'action': 'index', 'controller': 'changelog'}</pre>
      <pre>       webob._parsed_query_vars: (GET([('page', '2')]), 'page=2')</pre>
      <pre>       webob.adhoc_attrs: {'authuser': <AuthUser 1: 'default'>, 'ip_addr': '[redacted]', 'needs_csrf_check': False, 'routes_local': {'mapper': <kallithea.config.routing.Mapper object at 0x7f5d38459390>, 'host': 'k.sfconservancy.org', 'protocol': 'https', 'redirect': <function redirect at 0x7f5d3aff8b70>}}</pre>
      <pre>       wsgi.input_terminated: True</pre>
      <pre>       wsgi.multiprocess: False</pre>
      <pre>       wsgi.multithread: True</pre>
      <pre>       wsgi.run_once: False</pre>
      <pre>       wsgi.url_scheme: 'https'</pre>
      <pre>       wsgi.version: (1, 0)</pre>
      <pre>       wsgiorg.routing_args: (<routes.util.URLGenerator object at 0x7f5d306a8668>, {'repo_name': 'website', 'revision': '49c5bca7430b19dd09e0e12d2b908b86d278d325', 'f_path': 'www/conservancy/static/supporter/index.html', 'action': 'index', 'controller': 'changelog'})</pre>
      <pre>
</pre>
      <pre>REQUEST:</pre>
      <pre>       <Request at 0x7f5d30575cf8 GET <a class="moz-txt-link-freetext" href="https://k.sfconservancy.org/error/document?page=2">https://k.sfconservancy.org/error/document?page=2</a>></pre>
    </div>
  </body>
</html>