Confirming, and marking private as someone could use this to DOS the codebrowse.lp.net machine.
Clicking the files listing for a single (admittedly pretty large) branch on codebrowse.launchpad.net eventually failed with a MemoryError:
INF [20070528-23:44:10.501] cherrypy.msg: HTTP: Traceback (most recent call last):
File "/srv/codebrowse.launchpad.net/turbogears/lib/python2.4/site-packages/CherryPy-2.2.1-py2.4.egg/cherrypy/_cphttptools.py", line 105, in _run
self.main()
File "/srv/codebrowse.launchpad.net/turbogears/lib/python2.4/site-packages/CherryPy-2.2.1-py2.4.egg/cherrypy/_cphttptools.py", line 254, in main
body = page_handler(*virtual_path, **self.params)
File "/srv/codebrowse.launchpad.net/launchpad-loggerhead/loggerhead/util.py", line 344, in _f
out = f(*a, **kw)
File "<string>", line 3, in default
File "/srv/codebrowse.launchpad.net/turbogears/lib/python2.4/site-packages/TurboGears-1.0.1-py2.4.egg/turbogears/controllers.py", line 334, in expose
output = database.run_with_transaction(
File "<string>", line 5, in run_with_transaction
File "/srv/codebrowse.launchpad.net/turbogears/lib/python2.4/site-packages/TurboGears-1.0.1-py2.4.egg/turbogears/database.py", line 302, in so_rwt
retval = func(*args, **kw)
File "<string>", line 5, in _expose
File "/srv/codebrowse.launchpad.net/turbogears/lib/python2.4/site-packages/TurboGears-1.0.1-py2.4.egg/turbogears/controllers.py", line 351, in <lambda>
mapping, fragment, args, kw)))
File "/srv/codebrowse.launchpad.net/turbogears/lib/python2.4/site-packages/TurboGears-1.0.1-py2.4.egg/turbogears/controllers.py", line 378, in _execute_fun
c
output = errorhandling.try_call(func, *args, **kw)
File "/srv/codebrowse.launchpad.net/turbogears/lib/python2.4/site-packages/TurboGears-1.0.1-py2.4.egg/turbogears/errorhandling.py", line 73, in try_call
return func(self, *args, **kw)
File "/srv/codebrowse.launchpad.net/launchpad-loggerhead/loggerhead/controllers/inventory_ui.py", line 92, in default
vals = {
File "/srv/codebrowse.launchpad.net/launchpad-loggerhead/loggerhead/util.py", line 334, in locked
return unbound(self, *args, **kw)
File "/srv/codebrowse.launchpad.net/launchpad-loggerhead/loggerhead/history.py", line 860, in get_filelist
change_dict = dict([(c.revid, c) for c in self.get_changes(list(fetch_set))])
File "/srv/codebrowse.launchpad.net/launchpad-loggerhead/loggerhead/util.py", line 334, in locked
return unbound(self, *args, **kw)
File "/srv/codebrowse.launchpad.net/launchpad-loggerhead/loggerhead/history.py", line 607, in get_changes
changes = self._change_cache.get_changes(revid_list, get_diffs)
File "/srv/codebrowse.launchpad.net/launchpad-loggerhead/loggerhead/util.py", line 334, in locked
return unbound(self, *args, **kw)
File "/srv/codebrowse.launchpad.net/launchpad-loggerhead/loggerhead/changecache.py", line 107, in get_changes
changes = self.history.get_changes_uncached(fetch_list, get_diffs)
File "/srv/codebrowse.launchpad.net/launchpad-loggerhead/loggerhead/util.py", line 334, in locked
return unbound(self, *args, **kw)
File "/srv/codebrowse.launchpad.net/launchpad-loggerhead/loggerhead/history.py", line 67, in bzrlib_read_locked
return unbound(self, *args, **kw)
File "/srv/codebrowse.launchpad.net/launchpad-loggerhead/loggerhead/history.py", line 698, in get_changes_uncached
delta_list = self._get_deltas_for_revisions_with_trees(rev_list)
File "/srv/codebrowse.launchpad.net/launchpad-loggerhead/loggerhead/history.py", line 643, in _get_deltas_for_revisions_with_trees
trees = dict((t.get_revision_id(), t) for
File "/srv/codebrowse.launchpad.net/launchpad-loggerhead/loggerhead/history.py", line 643, in <generator expression>
trees = dict((t.get_revision_id(), t) for
File "/usr/lib/python2.4/site-packages/bzrlib/repository.py", line 815, in revision_trees
texts = self.get_inventory_weave().get_texts(revision_ids)
File "/usr/lib/python2.4/site-packages/bzrlib/knit.py", line 805, in get_texts
return [''.join(l) for l in self.get_line_list(version_ids)]
MemoryError: <bound method InventoryUI.default of <loggerhead.controllers.inventory_ui.InventoryUI object at 0x4513896c>>
Confirming, and marking private as someone could use this to DOS the codebrowse.lp.net machine.
Clicking the files listing for a single (admittedly pretty large) branch on codebrowse. launchpad. net eventually failed with a MemoryError:
INF [20070528- 23:44:10. 501] cherrypy.msg: HTTP: Traceback (most recent call last): e.launchpad. net/turbogears/ lib/python2. 4/site- packages/ CherryPy- 2.2.1-py2. 4.egg/cherrypy/ _cphttptools. py", line 105, in _run e.launchpad. net/turbogears/ lib/python2. 4/site- packages/ CherryPy- 2.2.1-py2. 4.egg/cherrypy/ _cphttptools. py", line 254, in main *virtual_ path, **self.params) e.launchpad. net/launchpad- loggerhead/ loggerhead/ util.py" , line 344, in _f e.launchpad. net/turbogears/ lib/python2. 4/site- packages/ TurboGears- 1.0.1-py2. 4.egg/turbogear s/controllers. py", line 334, in expose run_with_ transaction( transaction e.launchpad. net/turbogears/ lib/python2. 4/site- packages/ TurboGears- 1.0.1-py2. 4.egg/turbogear s/database. py", line 302, in so_rwt e.launchpad. net/turbogears/ lib/python2. 4/site- packages/ TurboGears- 1.0.1-py2. 4.egg/turbogear s/controllers. py", line 351, in <lambda> e.launchpad. net/turbogears/ lib/python2. 4/site- packages/ TurboGears- 1.0.1-py2. 4.egg/turbogear s/controllers. py", line 378, in _execute_fun try_call( func, *args, **kw) e.launchpad. net/turbogears/ lib/python2. 4/site- packages/ TurboGears- 1.0.1-py2. 4.egg/turbogear s/errorhandling .py", line 73, in try_call e.launchpad. net/launchpad- loggerhead/ loggerhead/ controllers/ inventory_ ui.py", line 92, in default e.launchpad. net/launchpad- loggerhead/ loggerhead/ util.py" , line 334, in locked e.launchpad. net/launchpad- loggerhead/ loggerhead/ history. py", line 860, in get_filelist changes( list(fetch_ set))]) e.launchpad. net/launchpad- loggerhead/ loggerhead/ util.py" , line 334, in locked e.launchpad. net/launchpad- loggerhead/ loggerhead/ history. py", line 607, in get_changes cache.get_ changes( revid_list, get_diffs) e.launchpad. net/launchpad- loggerhead/ loggerhead/ util.py" , line 334, in locked e.launchpad. net/launchpad- loggerhead/ loggerhead/ changecache. py", line 107, in get_changes get_changes_ uncached( fetch_list, get_diffs) e.launchpad. net/launchpad- loggerhead/ loggerhead/ util.py" , line 334, in locked e.launchpad. net/launchpad- loggerhead/ loggerhead/ history. py", line 67, in bzrlib_read_locked e.launchpad. net/launchpad- loggerhead/ loggerhead/ history. py", line 698, in get_changes_ uncached deltas_ for_revisions_ with_trees( rev_list) e.launchpad. net/launchpad- loggerhead/ loggerhead/ history. py", line 643, in _get_deltas_ for_revisions_ with_trees get_revision_ id(), t) for e.launchpad. net/launchpad- loggerhead/ loggerhead/ history. py", line 643, in <generator expression> get_revision_ id(), t) for python2. 4/site- packages/ bzrlib/ repository. py", line 815, in revision_trees inventory_ weave() .get_texts( revision_ ids) python2. 4/site- packages/ bzrlib/ knit.py" , line 805, in get_texts line_list( version_ ids)] controllers. inventory_ ui.InventoryUI object at 0x4513896c>>
File "/srv/codebrows
self.main()
File "/srv/codebrows
body = page_handler(
File "/srv/codebrows
out = f(*a, **kw)
File "<string>", line 3, in default
File "/srv/codebrows
output = database.
File "<string>", line 5, in run_with_
File "/srv/codebrows
retval = func(*args, **kw)
File "<string>", line 5, in _expose
File "/srv/codebrows
mapping, fragment, args, kw)))
File "/srv/codebrows
c
output = errorhandling.
File "/srv/codebrows
return func(self, *args, **kw)
File "/srv/codebrows
vals = {
File "/srv/codebrows
return unbound(self, *args, **kw)
File "/srv/codebrows
change_dict = dict([(c.revid, c) for c in self.get_
File "/srv/codebrows
return unbound(self, *args, **kw)
File "/srv/codebrows
changes = self._change_
File "/srv/codebrows
return unbound(self, *args, **kw)
File "/srv/codebrows
changes = self.history.
File "/srv/codebrows
return unbound(self, *args, **kw)
File "/srv/codebrows
return unbound(self, *args, **kw)
File "/srv/codebrows
delta_list = self._get_
File "/srv/codebrows
trees = dict((t.
File "/srv/codebrows
trees = dict((t.
File "/usr/lib/
texts = self.get_
File "/usr/lib/
return [''.join(l) for l in self.get_
MemoryError: <bound method InventoryUI.default of <loggerhead.
Still don't really know what's going on.