Infinite recursion when pushing to a branch stacked on itself
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
Bazaar |
Confirmed
|
Undecided
|
Unassigned |
Bug Description
I get this problem intermittently.
I attempt to do a standard push into one of my launchpad branches, then bzr appears to "work" for a period of time, before crash in this glorious pile of stack trace:
bzr: failed to report crash using apport:
OSError(13, 'Permission denied')
bzr: ERROR: exceptions.
bzr: failed to report crash using apport:
OSError(13, 'Permission denied')
bzr: ERROR: exceptions.
Traceback (most recent call last):
File "/usr/lib/
return the_callable(*args, **kwargs)
File "/usr/lib/
Traceback (most recent call last):
File "/usr/lib/
return the_callable(*args, **kwargs)
File "/usr/lib/
ret = run(*run_argv)
ret = run(*run_argv)
File "/usr/lib/
File "/usr/lib/
return self.run(
File "/usr/lib/
return self.run(
(snip tons of recursion... log included)
File "/usr/lib/
File "/usr/lib/
ui.
ui.
RuntimeError: maximum recursion depth exceeded
RuntimeError: maximum recursion depth exceeded
bzr 2.2.1 on python 2.6.6 (Linux-
bzr 2.2.1 on python 2.6.6 (Linux-
arguments: ['/usr/bin/bzr', 'push', 'lp:~sleepynate/tart/tart-sleepynate']
arguments: ['/usr/bin/bzr', 'push', 'lp:~sleepynate/tart/tart-sleepynate']
encoding: 'UTF-8', fsenc: 'UTF-8', lang: 'en_US.utf8'
plugins:
encoding: 'UTF-8', fsenc: 'UTF-8', lang: 'en_US.utf8'
plugins:
bash_completion /usr/lib/
bzrtools /usr/lib/
extmerge /home/nate/
launchpad /usr/lib/
netrc_
news_merge /usr/lib/
qbzr /usr/lib/
*** Bazaar has encountered an internal error. This probably indicates a
bug in Bazaar. You can help us fix it by filing a bug report at
https:/
including this traceback and a description of the problem.
bash_completion /usr/lib/
bzrtools /usr/lib/
extmerge /home/nate/
launchpad /usr/lib/
netrc_
news_merge /usr/lib/
qbzr /usr/lib/
*** Bazaar has encountered an internal error. This probably indicates a
bug in Bazaar. You can help us fix it by filing a bug report at
https:/
including this traceback and a description of the problem.
Changed in bzr: | |
status: | New → Confirmed |
summary: |
- Bazaar crashes on push + Infinite recursion when pushing to a branch stacked on itself |
tags: | added: check-for-breezy |
This is because of a branch being configured to be stacked on itself, which shouldn't happen, but we seem to be getting this reported a few times recently.
Specifically, ~sleepynate/ tart/tart- sleepynate is stacked on ~andreesie/ tart/vanilla, which is stacked on ~andreesie/ tart/vanilla.
So really it is ~andreesie/ tart/vanilla which is broken, but anything stacked on it will also be broken. You can see this by inspecting the branch.conf files: bazaar. launchpad. net/~sleepynate /tart/tart- sleepynate/ .bzr/branch/ branch. conf bazaar. launchpad. net/~andreesie/ tart/vanilla/ .bzr/branch/ branch. conf
http://
http://
I'm not really sure how we got this situation, but I wonder about the recent changes to "lp:foo" resolution. lp:foo use to resolve to .../~user/ foo/branch, but now it resolves to /+branch/foo.
I'm suspecting that, because I see the parent pointers in both cases are: ./%2Bbranch/ tart/
parent_location = ../../.
For starters, that is usually only set by something like "bzr branch lp:X lp:Y".
However, if lp:tart == lp:~andreesie/tart/vanilla, I don't see how you could branch something into itself.
Perhaps lp:tart got pointed to a new branch at some point? Such as doing:
bzr branch lp:tart lp:~andreesie/tart/vanilla
And then going to Launchpad and changing the development focus.
However, that wouldn't explain how lp:~andreesie/tart/vanilla would get stacked on itself.
Now, if lp:~andreesie/tart/vanilla was told to stack on top of /+branch/tart, which then got expanded late, that might cause this problem. If we have code that checked "if stacking_location == this_location" that check might fail to notice that +branch/tart is the same as ~andreesie/ tart/vanilla.