monotone: fatal: std::logic_error: ../change_set.cc:380: invariant 'I(isect.empty())' violated

classic Classic list List threaded Threaded
7 messages Options
Reply | Threaded
Open this post in threaded view
|

monotone: fatal: std::logic_error: ../change_set.cc:380: invariant 'I(isect.empty())' violated

Peter Portante
monotone rename BUG.file BUG/BUG.orig
monotone: adding topc-2.5.1-Beta7-pajp/src/mpinu/BUG.file ->
topc-2.5.1-Beta7-pajp/src/mpinu/BUG/BUG.orig to working copy rename set
monotone: fatal: std::logic_error: ../change_set.cc:380: invariant
'I(isect.empty())' violated
monotone:
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
[hidden email].
monotone: wrote debugging log to
/Users/portante/Documents/Personal/School/CSG280/TOP-C/MT/debug


[Frodo:topc-2.5.1-Beta7-pajp/src/mpinu] portante% monotone --full-version
monotone 0.23 (base revision: e32d161b8d5cde9f0968998cc332f82f82c27006)
Running on: Darwin 7.9.0 Darwin Kernel Version 7.9.0: Wed Mar 30 20:11:17
PST 2005; root:xnu/xnu-517.12.7.obj~1/RELEASE_PPC  Power Macintosh
Changes since base revision:
new_manifest [68895899b164e1f443f988efef93e8384f1b182a]

old_revision [e32d161b8d5cde9f0968998cc332f82f82c27006]
old_manifest [68895899b164e1f443f988efef93e8384f1b182a]





_______________________________________________
Monotone-devel mailing list
[hidden email]
http://lists.nongnu.org/mailman/listinfo/monotone-devel
Reply | Threaded
Open this post in threaded view
|

Re: monotone: fatal: std::logic_error: ../change_set.cc:380: invariant 'I(isect.empty())' violated

Nathaniel Smith
On Sun, Oct 23, 2005 at 09:03:00PM -0400, Peter Portante wrote:
> monotone rename BUG.file BUG/BUG.orig
> monotone: adding topc-2.5.1-Beta7-pajp/src/mpinu/BUG.file ->
> topc-2.5.1-Beta7-pajp/src/mpinu/BUG/BUG.orig to working copy rename set
> monotone: fatal: std::logic_error: ../change_set.cc:380: invariant
> 'I(isect.empty())' violated

Could you send in the MT/work file from before this, and the MT/debug
file from after it, if you still have them?

-- Nathaniel

--
So let us espouse a less contested notion of truth and falsehood, even
if it is philosophically debatable (if we listen to philosophers, we
must debate everything, and there would be no end to the discussion).
  -- Serendipities, Umberto Eco


_______________________________________________
Monotone-devel mailing list
[hidden email]
http://lists.nongnu.org/mailman/listinfo/monotone-devel
Reply | Threaded
Open this post in threaded view
|

Re: monotone: fatal: std::logic_error: ../change_set.cc:380: invariant 'I(isect.empty())' violated

Peter Portante
Nathaniel,

This is what I have. Sorry if this is not helpful. I can try to reproduce
this again if it isn't.

Thanks for your help,

-peter


On 10/25/05 1:51 AM, "Nathaniel Smith" <[hidden email]> wrote:

> On Sun, Oct 23, 2005 at 09:03:00PM -0400, Peter Portante wrote:
>> monotone rename BUG.file BUG/BUG.orig
>> monotone: adding topc-2.5.1-Beta7-pajp/src/mpinu/BUG.file ->
>> topc-2.5.1-Beta7-pajp/src/mpinu/BUG/BUG.orig to working copy rename set
>> monotone: fatal: std::logic_error: ../change_set.cc:380: invariant
>> 'I(isect.empty())' violated
>
> Could you send in the MT/work file from before this, and the MT/debug
> file from after it, if you still have them?
>
> -- Nathaniel


work (342 bytes) Download Attachment
debug (59K) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: monotone: fatal: std::logic_error: ../change_set.cc:380: invariant 'I(isect.empty())' violated

Nathaniel Smith
On Tue, Oct 25, 2005 at 10:15:12AM -0400, Peter Portante wrote:
> Nathaniel,
>
> This is what I have. Sorry if this is not helpful. I can try to reproduce
> this again if it isn't.

Ah-hah, I see what the problem is.  You had a file named BUG; then in
one commit you renamed it to BUG.file; then in the next commit you
renamed BUG.file to BUG/BUG.orig, i.e., you created a directory named
BUG.

IIUC, monotone is getting confused by having both a file and a
directory named "BUG" nearby each other in the ancestry graph; due to
some, err, bugs, in the logic monotone uses to infer the existence of
directories.

It's possible we could add some hack to work around this, but really
the problem is that our current approach to handling change sets is
fundamentally broken in certain edge cases like these, and we just
can't get this particular thing right -- the best we could hope for is
to move the rug around a little, fixing this bug by uncovering another
one.  This is a possibility, if this is really a show-stopper for
you...

But, the real solution is to change how we handle such things.  This
isn't a trivial change, but we've known about this family of problems
for some time now, and we're actively working on a fix in the
"rosters" branch.

So... your options are:
  -- work around the problem by not reusing the same name for a dir
     and a file
     -- possibly you only need to make sure not to do this in quick
        succession; monotone will probably let you get away with it if
        the revisions are far enough apart in history...
  -- "move the rug around" -- fix monotone to work better in your
     case, as a temporary patch.
  -- wait until the real fix is finished (no promises on when this
     will be, but it's under active development and progress so far
     has been encouraging).
Or some combination of the above.  Sorry about this... :-(

(Also, well done -- I recall if anyone actually managed to find the
directory existence bugs in real usage before ;-).)

-- Nathaniel

--
Eternity is very long, especially towards the end.
  -- Woody Allen


_______________________________________________
Monotone-devel mailing list
[hidden email]
http://lists.nongnu.org/mailman/listinfo/monotone-devel
Reply | Threaded
Open this post in threaded view
|

Re: monotone: fatal: std::logic_error: ../change_set.cc:380: invariant 'I(isect.empty())' violated

Peter Portante
So can I just use another name for the directory besides BUG? Or do I have
to undo what I have done first? And if so, how do I undo it?

-peter


On 10/25/05 4:56 PM, "Nathaniel Smith" <[hidden email]> wrote:

> On Tue, Oct 25, 2005 at 10:15:12AM -0400, Peter Portante wrote:
>> Nathaniel,
>>
>> This is what I have. Sorry if this is not helpful. I can try to reproduce
>> this again if it isn't.
>
> Ah-hah, I see what the problem is.  You had a file named BUG; then in
> one commit you renamed it to BUG.file; then in the next commit you
> renamed BUG.file to BUG/BUG.orig, i.e., you created a directory named
> BUG.
>
> IIUC, monotone is getting confused by having both a file and a
> directory named "BUG" nearby each other in the ancestry graph; due to
> some, err, bugs, in the logic monotone uses to infer the existence of
> directories.
>
> It's possible we could add some hack to work around this, but really
> the problem is that our current approach to handling change sets is
> fundamentally broken in certain edge cases like these, and we just
> can't get this particular thing right -- the best we could hope for is
> to move the rug around a little, fixing this bug by uncovering another
> one.  This is a possibility, if this is really a show-stopper for
> you...
>
> But, the real solution is to change how we handle such things.  This
> isn't a trivial change, but we've known about this family of problems
> for some time now, and we're actively working on a fix in the
> "rosters" branch.
>
> So... your options are:
>   -- work around the problem by not reusing the same name for a dir
>      and a file
>      -- possibly you only need to make sure not to do this in quick
>         succession; monotone will probably let you get away with it if
>         the revisions are far enough apart in history...
>   -- "move the rug around" -- fix monotone to work better in your
>      case, as a temporary patch.
>   -- wait until the real fix is finished (no promises on when this
>      will be, but it's under active development and progress so far
>      has been encouraging).
> Or some combination of the above.  Sorry about this... :-(
>
> (Also, well done -- I recall if anyone actually managed to find the
> directory existence bugs in real usage before ;-).)
>
> -- Nathaniel




_______________________________________________
Monotone-devel mailing list
[hidden email]
http://lists.nongnu.org/mailman/listinfo/monotone-devel
Reply | Threaded
Open this post in threaded view
|

Re: monotone: fatal: std::logic_error: ../change_set.cc:380: invariant 'I(isect.empty())' violated

Nathaniel Smith
On Tue, Oct 25, 2005 at 06:13:53PM -0400, Peter Portante wrote:
> So can I just use another name for the directory besides BUG? Or do I have

Yes.

> to undo what I have done first? And if so, how do I undo it?

I'm assuming you still have a working copy whose MT/work contains the
text:

rename_file "topc-2.5.1-Beta7-pajp/src/mpinu/BUG.file"
         to "topc-2.5.1-Beta7-pajp/src/mpinu/BUG/BUG.orig"

add_file "topc-2.5.1-Beta7-pajp/src/mpinu/BUG/bug-mpinu-sem-wait"

add_file "topc-2.5.1-Beta7-pajp/src/mpinu/BUG/bug-mpinu-sem-wait2"

, and your status is that you'd like to commit it but can't?

If so, then you should be able to just say
  $ monotone rename topc-2.5.1-Beta7-pajp/src/mpinu/BUG/BUG.orig \
    topc-2.5.1-Beta7-pajp/src/mpinu/where-ever/BUG.orig
and be okay.  If that doesn't work, let us know?

-- Nathaniel

--
"...All of this suggests that if we wished to find a modern-day model
for British and American speech of the late eighteenth century, we could
probably do no better than Yosemite Sam."


_______________________________________________
Monotone-devel mailing list
[hidden email]
http://lists.nongnu.org/mailman/listinfo/monotone-devel
Reply | Threaded
Open this post in threaded view
|

Re: monotone: fatal: std::logic_error: ../change_set.cc:380: invariant 'I(isect.empty())' violated

Peter Portante
Okay,

On 10/25/05 7:19 PM, "Nathaniel Smith" <[hidden email]> wrote:

> , and your status is that you'd like to commit it but can't?
>
> If so, then you should be able to just say
>   $ monotone rename topc-2.5.1-Beta7-pajp/src/mpinu/BUG/BUG.orig \
>     topc-2.5.1-Beta7-pajp/src/mpinu/where-ever/BUG.orig
> and be okay.  If that doesn't work, let us know?

It didn't work. :(

monotone: beginning commit on branch 'edu.neu.ccs.csg280.topc.debug'
monotone: fatal: std::logic_error: ../change_set.cc:380: invariant
'I(isect.empty())' violated
monotone:
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
[hidden email].
monotone: wrote debugging log to
/Users/portante/Documents/Personal/School/CSG280/TOP-C/MT/debug

How would I back out the rename of BUG.orig, just leaving BUG.file, and back
out the BUG directory addition, adding it as a different name?

Thanks for your time.

I have to say, I really like the way monotone works. We use CVS right now in
our group, and we really need change sets. We also would like the ability to
change the structure of things, including their names, and track that over
time.

We would like to be able to ask a CMS does a given branch contain a
changeset? Is that kind of question handled by monotone?

Thanks again,

-peter


work (338 bytes) Download Attachment
debug (58K) Download Attachment