Crash running rebase (tip of crew)

Greg Ward greg-hg at gerg.ca
Sun Apr 19 10:39:51 CDT 2009


I'm running the tip of crew, rebasing my local patches on top of the
latest incoming changes.  I managed to make rebase crash.  Note that
I'm hacking on the same hg working copy that I'm running (~/bin/hg ->
~/src/hg-crew/hg).

Here's what happened:

$ hg heads
changeset:   8084:64544ebbdbf3                   <<< my current local patch
tag:         tip
parent:      8078:6c3b8132078e
user:        Greg Ward <greg-hg at gerg.ca>
date:        Mon Mar 23 21:34:07 2009 -0400
summary:     Add test for CVS merge detection.

changeset:   8083:6645d31ce07c                  <<< my previous patch
(submitted)
user:        Greg Ward <greg-hg at gerg.ca>
date:        Sat Apr 18 13:29:48 2009 -0400
summary:     Reproduce crash where synthetic revs break merge
detection (issue1578).

To keep history linear, I want to rebase 8084 on top of 8083.
(They're different heads because I just pulled 8084 from
../hg-crew-stable.)

$ hg up -C 8084
$ hg rebase -d 8083
saving bundle to /home/scratch/src/hg-crew/.hg/strip-backup/64544ebbdbf3-temp
** unknown exception encountered, details follow
** report bug details to http://www.selenic.com/mercurial/bts
** or mercurial at selenic.com
** Mercurial Distributed SCM (version 81aba9e79054)
** Extensions loaded: children, convert, graphlog, mq, patchbomb, rebase
Traceback (most recent call last):
  File "/home/greg/bin/hg", line 27, in <module>
    mercurial.dispatch.run()
  File "/home/scratch/src/hg-crew/mercurial/dispatch.py", line 16, in run
    sys.exit(dispatch(sys.argv[1:]))
  File "/home/scratch/src/hg-crew/mercurial/dispatch.py", line 25, in dispatch
    return _runcatch(u, args)
  File "/home/scratch/src/hg-crew/mercurial/dispatch.py", line 41, in _runcatch
    return _dispatch(ui, args)
  File "/home/scratch/src/hg-crew/mercurial/dispatch.py", line 372, in _dispatch
    return runcommand(lui, repo, cmd, fullargs, ui, options, d)
  File "/home/scratch/src/hg-crew/mercurial/dispatch.py", line 247, in
runcommand
    ret = _runcommand(ui, options, cmd, d)
  File "/home/scratch/src/hg-crew/mercurial/dispatch.py", line 417, in
_runcommand
    stats = lsprof.Stats(p.getstats())
  File "/home/scratch/src/hg-crew/mercurial/dispatch.py", line 377, in checkargs
    return cmdfunc()
  File "/home/scratch/src/hg-crew/mercurial/dispatch.py", line 371, in <lambda>
    d = lambda: util.checksignature(func)(ui, *args, **cmdoptions)
  File "/home/scratch/src/hg-crew/mercurial/util.py", line 718, in check
    the following properties of a path are checked:
  File "/home/scratch/src/hg-crew/hgext/rebase.py", line 131, in rebase
    - util.set(state.keys())):
  File "/home/scratch/src/hg-crew/mercurial/repair.py", line 127, in strip
    cl.strip(striprev, tr)
TypeError: strip() takes exactly 2 arguments (3 given)

Could this be related to the recent transactional changes to strip?
Or am I playing with fire by running the same hg that I am currently
modifying?

Oh yeah, I saved a bundle of this repository in its pre-crash state to
http://www.gerg.ca/hg-crew-rebase-crash.bundle .  If you want to
reproduce it, here's what worked for me:

$ wget http://www.gerg.ca/hg-crew-rebase-crash.bundle
$ hg init hg-crew-rebase-crash
$ cd hg-crew-rebase-crash
$ hg unbundle ../hg-crew-rebase-crash.bundle
$ hg heads
[...verify heads are 8084 and 8083 as shown above...]
$ hg up 8084
$ make local
[...build noise...]
$ ./hg rebase -d 8083
[crash]

If I skip building the local copy and just use /usr/bin/hg (which is
1.1.2 in this case), rebase works fine.

Should I file a bug?  Or are my working habits wrong?

Thanks --

Greg


More information about the Mercurial-devel mailing list