strip crash: IndexError in revlog.node()
mpm at selenic.com
Thu Feb 16 18:13:17 CST 2012
On Wed, 2012-02-15 at 18:02 -0500, Greg Ward wrote:
> Hi all --
> I've found a bug in strip in 2.1 that I'm having a hard time reducing
> to a small test case. The good news is that it's 100% reproducible
> with an artificial test repository, and I have bisected to find the
> responsible changeset. But I haven't been able to figure what it is
> about the topology of my test repo that tickles the bug.
> Anyways, from those bits and pieces I have a pretty good idea of what
> the bug is, a very vague idea about how to fix it, and no idea at all
> about how to reproduce it with a *small* test case.
If you told us what you thought the bug was, someone would be more
likely to suggest a test.
It seems that clstart stops existing by the time the lock is released.
lock is taken
some stuff is bundled for reapply
some stuff is stripped
some stuff is reapplied
lock is recursively taken
N = tip revision
changesets are added
changegroup hook is queued
lock is released, but only recursively
some more stuff is stripped
rev count drops below N
lock is fully released
changegroup callback is called, but rev N is gone!
a) it appears strip is happening several times under a single lock but
there's no reason we can't join all the things we want to strip in a
b) the queued hook should probably not track a revision NUMBER in any
Mathematics is the supreme nostalgia of our time.
More information about the Mercurial-devel