bugmonotone - Bugs: bug #13831, fatal: invariant...

 
 

You are not allowed to post comments on this tracker with your current authentication level.

bug #13831: fatal: invariant 'I(lagged->first != leader->first)' violated

Submitted by:  None
Submitted on:  Sun 17 Jul 2005 11:18:45 PM UTC  
 
Category: merge algorithmSeverity: 3 - Normal
Item Group: crashStatus: Wont Fix
Privacy: PublicAssigned to: None
Open/Closed: Closed
mtn version --full: 

monotone 0.20 (base revision: 44ed8807bead656889fb5022f974e13a7169098c)
Running on: Linux 2.6.10-cko1 #1 Fri Mar 25 17:42:05 MET 2005 i686
Changes since base revision:

new_manifest [5ce921ee9229c7e7f2f07d77c67de1feee633351]

old_revision [44ed8807bead656889fb5022f974e13a7169098c]
old_manifest [5ce921ee9229c7e7f2f07d77c67de1feee633351]

Generated from data cached in the distribution;
further changes may have been made.

Generated from data cached in the distribution;
further changes may have been made.

Generated from data cached in the distribution;
further changes may have been made.

Wed 27 Jul 2005 08:47:14 AM UTC, comment #3:

This appears to be a bug in the "file suturing" support. "suturing" is taking two files that were created at different times, and mashing them together during a merge to make a single file. It's a very questionable feature, because it creates a large number of edge cases, and there's currently some debate about what exactly to do with it. What seems to be happening here is:

on one side of the merge, you've renamed the file "help.bat" to "fpc-help.bat"
on the other side of the merge, you've deleted the file "help.bat", and added a file "fpc-help.bat"

Seeing this, monotone has noticed that the renamed "fpc-help.bat" on the first side is the same as the deleted "help.bat" on the second; it has also noticed that there are independently created files both named "fpc-help.bat" on both sides of the merge. So it tries to suture them. At this point it runs into trouble, because it's trying to merge the one file on one side with both of the files on the other side, and trips an assertion in the merging code.

I'm not going to try to fix this now; until we figure out what we want to do with suturing, we won't know what a fix would look like. (Though this is an interesting edge-case to add to our list!) However, there is a simple workaround. Simply check out one of the revisions you want to merge, and delete the file "fpc-help.bat" by running "monotone drop fpc-help.bat; rm fpc-help.bat". Commit this, creating a new revision. This new revision should now merge cleanly (and does, in my tests).

I'd recommend, if you're propagating from branch A to branch B, you do this in branch B, so that afterwards both branches still have fpc-help.bat in them.

Let us know if this doesn't help.

Nathaniel Smith <njs>
Project Member
Sun 24 Jul 2005 11:05:53 PM UTC, comment #2:

Yes, I just emailed you the database separately.

Anonymous
Sun 24 Jul 2005 02:08:26 PM UTC, comment #1:

A copy of the db is probably necessary to investigate this bug further. Is it still available?

Nathaniel Smith <njs>
Project Member
Sun 17 Jul 2005 11:18:45 PM UTC, original submission:

I ran:

$ monotone --db=../topo14.db explicit_merge 54fdd6af4d2c050691a81209f4def6cba8bd02a9 8f3e6730c79cd0b99634c02720640fa8454bbf0b com.rochada.topolog.14

I got:

monotone: [source] 54fdd6af4d2c050691a81209f4def6cba8bd02a9
monotone: [source] 8f3e6730c79cd0b99634c02720640fa8454bbf0b
monotone: common ancestor 785bfb12ed5fddee41b731deeffe7f72e08d9960 found
monotone: trying 3-way merge
monotone: fatal: std::logic_error: smap.hh:94: invariant 'I(lagged->first != leader->first)' violated
monotone:
monotone: this is almost certainly a bug in monotone.
monotone: please send this error message, the output of 'monotone --full-version',
monotone: and a description of what you were doing to monotone-devel@nongnu.org.
monotone: wrote debugging log to MT/debug

How I got there:

1) Imported a CVS repository into a branch that I call A here for simplicity. The CVS repository had no branches or merges, only a linear succession of revisions for each file, and tags for releases. The latest working copy has about 50k lines in about 120 source files. No binary files.

2) Checked out an older tagged release (not head), from ca. 30 commits ago.

3) Renamed a variable and committed the result to a new branch B

4) Committed some more revisions on branch B.

5) explicit_merge'd the rev resulting from 3) and the head from A, into A. Only minor conflicts, solved with kdiff3.

6) Committed more revisions to B.

7) Tried to explicit_merge the rev in B two commits after the rev resulting from 3), and the new head in A, into A.

Got the error message from above.

Branch A is named com.rochada.topolog.14.
Branch B is named com.rochada.topolog.14.fpc.

I appended MT/debug.
If you need the .db to fix the bug, please write me at monotone@rochada.com.

Thank you!

Anonymous

 

Attached Files
file #3247:  debug added by None (35KiB - application/octet-stream)

 

Depends on the following items: None found

Items that depend on this one: None found

 

CC list is empty

 

Do you think this task is very important?
If so, you can click here to add your encouragement to it.
This task has 0 encouragements so far.

Only logged-in users can vote.

 

Please enter the title of George Orwell's famous dystopian book (it's a date):

 

 

Follow 5 latest changes.

Date Changed By Updated Field Previous Value => Replaced By
Wed 27 Jul 2005 08:47:14 AM UTCnjsStatusNone=>Wont Fix
  Open/ClosedOpen=>Closed
Sun 24 Jul 2005 02:08:26 PM UTCnjsPrivacyPrivate=>Public
  Carbon-Copy-=>Added -unavailable-
Sun 17 Jul 2005 11:18:45 PM UTCNoneAttached File-=>Added debug, #2723

Back to the top


Powered by Savane 3.1-cleanup1