[Bug 720853] Re: bzr crashed with RuntimeError in normpath(): maximum recursion depth exceeded while calling a Python object

Shannon Weyrick 720853 at bugs.launchpad.net
Thu Sep 29 16:46:44 UTC 2011


After some investigation it seems that the source of the recursion
problem is that while indexing, a node is being serialized to a length >
PAGE_SIZE. There is currently no assertion check for that, so it
recurses infinitely trying to expand the tree to fit it, in vain.

With the size assertion added, the operation stops pretty quickly (30s
or so, rather than stopping at 18m at the max recursion depth).
Currently trying to see why the node is so large in this case.

-- 
You received this bug notification because you are a member of Ubuntu
Foundations Bugs, which is subscribed to bzr in Ubuntu.
https://bugs.launchpad.net/bugs/720853

Title:
  bzr crashed with RuntimeError in normpath(): maximum recursion depth
  exceeded while calling a Python object

Status in Bazaar Version Control System:
  Confirmed
Status in bzr-search:
  Confirmed
Status in “bzr” package in Ubuntu:
  Confirmed

Bug description:
  Binary package hint: bzr

  bzr index always fails on lp:ubiquity.

  ProblemType: Crash
  DistroRelease: Ubuntu 11.04
  Package: bzr 2.3.0-2
  ProcVersionSignature: Ubuntu 2.6.38-3.30-generic 2.6.38-rc4
  Uname: Linux 2.6.38-3-generic x86_64
  Architecture: amd64
  BzrDebugFlags: set()
  BzrVersion: 2.3.0
  CommandLine: ['/usr/bin/bzr', 'index']
  CrashDb: bzr
  Date: Thu Feb 17 11:12:31 2011
  ExecutablePath: /usr/bin/bzr
  FileSystemEncoding: UTF-8
  InstallationMedia: Ubuntu 10.04 "Lucid Lynx" - Alpha amd64 (20100109)
  InterpreterPath: /usr/bin/python2.7
  Locale: en_GB.UTF-8
  PackageArchitecture: all
  Platform: Linux-2.6.38-3-generic-x86_64-with-Ubuntu-11.04-natty
  ProcCmdline: /usr/bin/python /usr/bin/bzr index
  PythonVersion: 2.7.1
  SourcePackage: bzr
  Title: bzr crashed with RuntimeError in normpath(): maximum recursion depth exceeded while calling a Python object
  UserEncoding: UTF-8
  UserGroups: adm admin cdrom dialout libvirtd lpadmin plugdev sambashare

  Traceback (most recent call last):
    File "/usr/lib/pymodules/python2.7/bzrlib/commands.py", line 923, in exception_to_return_code
      return the_callable(*args, **kwargs)
    File "/usr/lib/pymodules/python2.7/bzrlib/commands.py", line 1123, in run_bzr
      ret = run(*run_argv)
    File "/usr/lib/pymodules/python2.7/bzrlib/commands.py", line 691, in run_argv_aliases
      return self.run(**all_cmd_args)
    File "/usr/lib/pymodules/python2.7/bzrlib/commands.py", line 710, in run
      return self._operation.run_simple(*args, **kwargs)
    File "/usr/lib/pymodules/python2.7/bzrlib/cleanup.py", line 135, in run_simple
      self.cleanups, self.func, *args, **kwargs)
    File "/usr/lib/pymodules/python2.7/bzrlib/cleanup.py", line 165, in _do_with_cleanups
      result = func(*args, **kwargs)
    File "/usr/lib/python2.7/dist-packages/bzrlib/plugins/search/commands.py", line 41, in run
      _mod_index.index_url(trans.base)
    File "/usr/lib/python2.7/dist-packages/bzrlib/plugins/search/index.py", line 169, in index_url
      index.index_revisions(branch, revs_to_index)
    File "/usr/lib/python2.7/dist-packages/bzrlib/plugins/search/index.py", line 341, in index_revisions
      outer_bar)
    File "/usr/lib/python2.7/dist-packages/bzrlib/plugins/search/index.py", line 389, in _index_revisions
      self._add_index(builder)
    File "/usr/lib/python2.7/dist-packages/bzrlib/plugins/search/index.py", line 402, in _add_index
      self._upload_transport)
    File "/usr/lib/python2.7/dist-packages/bzrlib/plugins/search/index.py", line 1128, in upload_index
      term_indices[len(term)].add_node(term, term_value, ())
    File "/usr/lib/pymodules/python2.7/bzrlib/btree_index.py", line 174, in add_node
      self._spill_mem_keys_to_disk()
    File "/usr/lib/pymodules/python2.7/bzrlib/btree_index.py", line 191, in _spill_mem_keys_to_disk
      backing_pos) = self._spill_mem_keys_and_combine()
    File "/usr/lib/pymodules/python2.7/bzrlib/btree_index.py", line 225, in _spill_mem_keys_and_combine
      allow_optimize=False)
    File "/usr/lib/pymodules/python2.7/bzrlib/btree_index.py", line 385, in _write_nodes
      self._add_key(string_key, line, rows, allow_optimize=allow_optimize)
    File "/usr/lib/pymodules/python2.7/bzrlib/btree_index.py", line 351, in _add_key
      self._add_key(string_key, line, rows, allow_optimize=allow_optimize)
  .....
   File "/usr/lib/pymodules/python2.7/bzrlib/btree_index.py", line 351, in _add_key
      self._add_key(string_key, line, rows, allow_optimize=allow_optimize)
    File "/usr/lib/pymodules/python2.7/bzrlib/btree_index.py", line 351, in _add_key
      self._add_key(string_key, line, rows, allow_optimize=allow_optimize)
    File "/usr/lib/pymodules/python2.7/bzrlib/btree_index.py", line 328, in _add_key
      row.finish_node()
    File "/usr/lib/pymodules/python2.7/bzrlib/btree_index.py", line 98, in finish_node
      _BuilderRow.finish_node(self)
    File "/usr/lib/pymodules/python2.7/bzrlib/btree_index.py", line 76, in finish_node
      spool = tempfile.TemporaryFile(prefix='bzr-index-row-')
    File "/usr/lib/python2.7/tempfile.py", line 478, in TemporaryFile
      (fd, name) = _mkstemp_inner(dir, prefix, suffix, flags)
    File "/usr/lib/python2.7/tempfile.py", line 230, in _mkstemp_inner
      return (fd, _os.path.abspath(file))
    File "/usr/lib/python2.7/posixpath.py", line 349, in abspath
      return normpath(path)
    File "/usr/lib/python2.7/posixpath.py", line 315, in normpath
      slash, dot = (u'/', u'.') if isinstance(path, unicode) else ('/', '.')
  RuntimeError: maximum recursion depth exceeded while calling a Python object

To manage notifications about this bug go to:
https://bugs.launchpad.net/bzr/+bug/720853/+subscriptions




More information about the foundations-bugs mailing list