monotone-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Monotone-devel] monotone merge error


From: Stephen Leake
Subject: Re: [Monotone-devel] monotone merge error
Date: Wed, 05 May 2010 03:13:56 -0400
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/23.1 (windows-nt)

Stephen Leake <address@hidden> writes:

> Stephen Leake <address@hidden> writes:
>
>> Mando Rodriguez <address@hidden> writes:
>>
>>> When attempting to perform a merge we get this :
>>>
>>> /
>>> mtn: 2 heads on branch '0'
>>> mtn: merge 1 / 1:
>>> mtn: calculating best pair of heads to merge next
>>> mtn: [left]  1d8d9ecda9ed7bd5b34dfbb48d4ce0d61e071598
>>> mtn: [right] 96c815a1768eb25e49bf74ba3d6e6236adefb30a
>>> mtn: fatal: error: roster.cc:1826:
>>> I(left_uncommon_ancestors.find(left_rid) !=
>>> left_uncommon_ancestors.end())
>>> mtn: this is almost certainly a bug in monotone.
>>
>> I may have time to look at it this weekend.
>
> I finally started looking into this.
>
> The immediate cause of the crash is an invariant failure in
> roster.cc:2066 make_roster_for_merge:
>
>  I(left_uncommon_ancestors.find(left_rid) != left_uncommon_ancestors.end());
>
> I rearranged the MM and I lines there so left_uncommon_ancestors would
> be dumped on --debug, and it is empty.
>
> ...

I've made some more progress. The database is inconsistent; the table
"branch_leaves" has incorrect entries. I can't reproduce the error, but
the fix is simple; run database::recalc_branch_leaves.

I added 'mtn db recalc_branch_heads' (not committed), and after running
it, 'mtn heads' correctly shows just one head.

We could add a check for this to 'mtn db check'; it could compute the
branch leaves and compare to the current values in the branch_leaves table.

If no one objects, I'll check in the 'db recalc_branch_heads' command,
and work on a new check in 'db check'.

-- 
-- Stephe




reply via email to

[Prev in Thread] Current Thread [Next in Thread]