[issue1734] hg update and hg clone stuck with 100% CPU usage
Martin Geisler
mercurial-bugs at selenic.com
Sun Jul 12 21:08:15 UTC 2009
New submission from Martin Geisler <mg at lazybytes.net>:
I'm suddenly seeing some very strange behavior with the current crew: I cannot
clone crew-stable and cannot update one of my crew-stable clones. I can update
my crew clone just fine (luckily!).
Bisecting shows that it started with
changeset: 9093:0b2b269ba3d0
parent: 9089:8ec39725d966
user: Henrik Stuart <hg at hstuart.dk>
date: Thu Jul 09 20:49:02 2009 +0200
summary: branch heads: fix regression introduced in e67e5b60e55f (issue1726)
I can reproduce it with these commands. First I clone crew-stable with Mercurial
version 8ec39725d966:
% hg clone http://hg.intevation.org/mercurial/crew-stable
destination directory: crew-stable
requesting all changes
adding changesets
adding manifests
adding file changes
added 9031 changesets with 18051 changes to 1245 files
updating working directory
1062 files updated, 0 files merged, 0 files removed, 0 files unresolved
I then upgrade Mercurial to revision 0b2b269ba3d0 and do (this is with no
~/.hgrc file, hence the warning about no username):
% cd crew-stable
% hg backout 338412820a57
reverting templates/gitweb/map
reverting templates/monoblue/map
No username found, using 'mg at hbox.dyndns.org' instead
Waiting for Emacs...
created new head
changeset 9031:60c9fb9d2b09 backs out changeset 8493:338412820a57
the backout changeset is a new head - do not forget to merge
(use "backout --merge" if you want to auto-merge)
% hg update -C
330 files updated, 0 files merged, 36 files removed, 0 files unresolved
% hg tip
changeset: 9031:60c9fb9d2b09
tag: tip
parent: 8493:338412820a57
user: mg at hbox.dyndns.org
date: Sun Jul 12 22:55:47 2009 +0200
summary: Backed out changeset 338412820a57
% hg rollback
rolling back last transaction
% hg update -C
^Cinterrupted!
The final command uses 100% CPU and it looks like it's stuck. Running it with
--traceback gives tracebacks like this one (when I press Control-C):
% hg update --traceback -C
^CTraceback (most recent call last):
File "/home/mg/src/mercurial-crew/mercurial/dispatch.py", line 43, in _runcatch
return _dispatch(ui, args)
File "/home/mg/src/mercurial-crew/mercurial/dispatch.py", line 449, in _dispatch
return runcommand(lui, repo, cmd, fullargs, ui, options, d)
File "/home/mg/src/mercurial-crew/mercurial/dispatch.py", line 317, in runcommand
ret = _runcommand(ui, options, cmd, d)
File "/home/mg/src/mercurial-crew/mercurial/dispatch.py", line 501, in _runcommand
return checkargs()
File "/home/mg/src/mercurial-crew/mercurial/dispatch.py", line 454, in checkargs
return cmdfunc()
File "/home/mg/src/mercurial-crew/mercurial/dispatch.py", line 448, in <lambda>
d = lambda: util.checksignature(func)(ui, *args, **cmdoptions)
File "/home/mg/src/mercurial-crew/mercurial/util.py", line 375, in check
return func(*args, **kwargs)
File "/home/mg/src/mercurial-crew/mercurial/commands.py", line 3057, in update
return hg.clean(repo, rev)
File "/home/mg/src/mercurial-crew/mercurial/hg.py", line 342, in clean
stats = _merge.update(repo, node, False, True, None)
File "mercurial/merge.py", line 409, in update
repo.dirstate.copy(f, fd)
File "/home/mg/src/mercurial-crew/mercurial/localrepo.py", line 404, in branchtags
for bn, heads in self.branchmap().iteritems():
File "/home/mg/src/mercurial-crew/mercurial/localrepo.py", line 389, in branchmap
self._branchtags(partial, lrev)
File "/home/mg/src/mercurial-crew/mercurial/localrepo.py", line 367, in
_branchtags
self._updatebranchcache(partial, lrev+1, tiprev+1)
File "/home/mg/src/mercurial-crew/mercurial/localrepo.py", line 478, in
_updatebranchcache
reachable |= self.changelog.reachable(latest, bh)
File "/home/mg/src/mercurial-crew/mercurial/revlog.py", line 573, in reachable
for p in self.parents(n):
File "/home/mg/src/mercurial-crew/mercurial/revlog.py", line 516, in parents
d = i[self.rev(node)]
KeyboardInterrupt
interrupted!
I've uploaded an example of such a repository here:
http://lazybytes.net/tmp/crew-stable.bad.tar.gz
I cannot get it in good shape again, though it passes 'hg verify'. Updating to a
particular revision works, though:
% hg revert --all
reverting templates/gitweb/map
reverting templates/monoblue/map
% hg update tip
362 files updated, 0 files merged, 4 files removed, 0 files unresolved
% hg update
^Cinterrupted!
The final update ought to be very fast since we're already at tip, but we're
stuck in a loop in revlog.
----------
messages: 10009
nosy: hstuart, mg
priority: urgent
status: unread
title: hg update and hg clone stuck with 100% CPU usage
____________________________________________________
Mercurial issue tracker <mercurial-bugs at selenic.com>
<http://mercurial.selenic.com/bts/issue1734>
____________________________________________________
More information about the Mercurial-devel
mailing list