enters into a infinite loop

Bug #306115 reported by Ryo IGARASHI
4
Affects Status Importance Assigned to Milestone
Bazaar Subversion Plugin
Fix Released
High
Jelmer Vernooij

Bug Description

Hi,

When I try to branch the boost release branch (again), bzr-svn enters into a infinite loop
and crashes. I added sandbox to the subversion.conf explicitly as a branch.

I used bzr-svn revision 2194 of 0.5 branch,
bzr revision 3882 of trunk branch.

I tried with the fresh svn-cache directory.

The used subversion branch settings is as follows:
$ cat $HOME/.bazaar/subversion.conf
[b8fc166d-592f-0410-95f2-cb63ce0dd405]
locations = http://svn.boost.org/svn/boost
branches = branches/release;branches/RC_1_33_0;branches/RC_1_34_0;tags/Version_1_34_1;devel;trunk;sandbox

The traceback is:

$ bzr branch --verbose http://svn.boost.org/svn/boost/branches/release release
Initialising Subversion metadata cache in /home/rigarash/.bazaar/svn-cache/b8fc166d-592f-0410-95f2-cb63ce0dd405
bzr: ERROR: exceptions.RuntimeError: maximum recursion depth exceeded

Traceback (most recent call last):
  File "/home/rigarash/checkouts/bzr-dev/bzrlib/commands.py", line 893, in run_bzr_catch_errors
    return run_bzr(argv)
  File "/home/rigarash/checkouts/bzr-dev/bzrlib/commands.py", line 839, in run_bzr
    ret = run(*run_argv)
  File "/home/rigarash/checkouts/bzr-dev/bzrlib/commands.py", line 539, in run_argv_aliases
    return self.run(**all_cmd_args)
  File "/home/rigarash/checkouts/bzr-dev/bzrlib/builtins.py", line 962, in run
    revision_id = br_from.last_revision()
  File "/home/rigarash/.bazaar/plugins/svn/branch.py", line 371, in last_revision
    last_revmeta = self.last_revmeta()
  File "/home/rigarash/.bazaar/plugins/svn/branch.py", line 163, in last_revmeta
    for revmeta, mapping in self._revision_meta_history():
  File "/home/rigarash/.bazaar/plugins/svn/branch.py", line 355, in _revision_meta_history
    self._revmeta_cache = self.repository.get_mainline(self.get_branch_path(), self._revnum or self.repository.get_latest_revnum(), self.mapping, pb=pb)
  File "/home/rigarash/.bazaar/plugins/svn/repository.py", line 435, in get_mainline
    to_revnum=0, pb=pb), mapping))
  File "/home/rigarash/.bazaar/plugins/svn/revmeta.py", line 1081, in iter_with_mapping
    (mapping, lhs_mapping) = revmeta.get_appropriate_mappings(mapping)
  File "/home/rigarash/.bazaar/plugins/svn/revmeta.py", line 321, in get_appropriate_mappings
    original = self.get_original_mapping()
  File "/home/rigarash/.bazaar/plugins/svn/revmeta.py", line 341, in get_original_mapping
    if not self.is_bzr_revision():
  File "/home/rigarash/.bazaar/plugins/svn/revmeta.py", line 440, in is_bzr_revision
    if self.consider_bzr_fileprops():
  File "/home/rigarash/.bazaar/plugins/svn/revmeta.py", line 587, in consider_bzr_fileprops
    self._consider_bzr_fileprops = (self.estimate_bzr_fileprop_ancestors() > 0)
  File "/home/rigarash/.bazaar/plugins/svn/revmeta.py", line 390, in estimate_bzr_fileprop_ancestors
    return self._estimate_fileprop_ancestors("bzr:", estimate_bzr_ancestors)
  File "/home/rigarash/.bazaar/plugins/svn/revmeta.py", line 375, in _estimate_fileprop_ancestors
    ret = next._estimate_fileprop_ancestors(key, estimate_fn)
.... (same lines)
  File "/home/rigarash/.bazaar/plugins/svn/revmeta.py", line 375, in _estimate_fileprop_ancestors
    ret = next._estimate_fileprop_ancestors(key, estimate_fn)
  File "/home/rigarash/.bazaar/plugins/svn/revmeta.py", line 368, in _estimate_fileprop_ancestors
    if self.knows_fileprops() or not self.children:
  File "/home/rigarash/.bazaar/plugins/svn/revmeta.py", line 227, in knows_fileprops
    fileprops = self.get_fileprops()
  File "/home/rigarash/.bazaar/plugins/svn/revmeta.py", line 201, in get_fileprops
    while not lm.changes_branch_root() and lm._fileprops is None:
  File "/home/rigarash/.bazaar/plugins/svn/revmeta.py", line 128, in changes_branch_root
    if self.knows_changed_fileprops():
RuntimeError: maximum recursion depth exceeded

bzr 1.11dev on python 2.5.2 (linux2)
arguments: ['/home/rigarash/bin/bzr', 'branch', '--verbose', 'http://svn.boost.org/svn/boost/branches/release', 'release']
encoding: 'UTF-8', fsenc: 'UTF-8', lang: 'ja_JP.UTF-8'
plugins:
  bzrtools /home/rigarash/.bazaar/plugins/bzrtools [1.10]
  fastimport /home/rigarash/.bazaar/plugins/fastimport [unknown]
  launchpad /home/rigarash/checkouts/bzr-dev/bzrlib/plugins/launchpad [unknown]
  rebase /home/rigarash/.bazaar/plugins/rebase [0.4.3dev]
  svn /home/rigarash/.bazaar/plugins/svn [0.5dev]
*** Bazaar has encountered an internal error.
    Please report a bug at https://bugs.launchpad.net/bzr/+filebug
    including this traceback, and a description of what you
    were doing when the error occurred.

Revision history for this message
Jelmer Vernooij (jelmer) wrote :

Unfortunately this isn't actually an infinite loop, it's an actual recursive call that ends up recursing too deeply.

Revision history for this message
Ryo IGARASHI (rigarash) wrote :

Thanks for your quick answer.

Is there any way to get rid of this problem?
Is this a limitation of python?
I am not a python expert...

I realize that python uses 8.0GB of my machines memory,
but I have 12GB on my machine so I can go furthur.

Revision history for this message
Jelmer Vernooij (jelmer) wrote :

I've already worked around it some other way, should be fixed in the 0.5 branch.

Changed in bzr-svn:
assignee: nobody → jelmer
importance: Undecided → High
milestone: none → 0.5.0
status: New → Fix Released
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.