darcs

Issue 701 Irrefutable pattern failed for pattern Data.Maybe.Just a2

Title Irrefutable pattern failed for pattern Data.Maybe.Just a2
Priority critical Status resolved
Milestone Resolved in
Superseder Nosy List Serware, ckeen, darcs-devel, dmitry.kurochkin, kowey, thorkilnaur, tommy
Assigned To
Topics Conflicts

Created on 2008-02-18.16:05:40 by kowey, last changed 2009-10-23.23:30:09 by admin.

Files
File name Uploaded Type Edit Remove
59b7ba644e024eb1e5d759c52daba4944dd5966d kowey, 2008-02-18.16:30:06 application/octet-stream
conflictor-chunk kowey, 2008-02-18.16:17:07 application/octet-stream
eversion-1 kowey, 2008-02-18.16:05:39 application/octet-stream
version ckeen, 2009-02-18.11:52:58 application/octet-stream
Messages
msg3545 (view) Author: kowey Date: 2008-02-18.16:05:39
darcs: src/Darcs/Patch/Real.lhs:422:21-50: Irrefutable pattern failed for
pattern Data.Maybe.Just a2'

How exciting!  Unfortunately, I can't attach the repository for forensics, but I
can say it involves a three-way conflict (all self-generated; three branches of
development)

Attached is the darcs --exact-version

I also tried to reproduce it with a current one, but the repository is broken
and I'll have to work at it some more
Attachments
msg3548 (view) Author: kowey Date: 2008-02-18.16:07:08
I forgot to add: this is a --darcs-2 repository
msg3550 (view) Author: droundy Date: 2008-02-18.16:09:33
This is a very scary bug.  Definitely urgent.  And Eric, anything you can do to
reproduce this bug would be *very* much appreciated!

David
msg3557 (view) Author: kowey Date: 2008-02-18.16:17:07
So I've been trying to re-create things so that I can reproduce the bug, but now
I'm getting parse errors (unfortunately, I don't have a snapshot of how things
were before I ran into trouble).

If it helps, here is the patch that I'm getting parse errors on.
Attachments
msg3563 (view) Author: kowey Date: 2008-02-18.16:52:22
> So I've been trying to re-create things so that I can reproduce the bug, but now
> I'm getting parse errors (unfortunately, I don't have a snapshot of how things
> were before I ran into trouble).

I guess you can ignore the chunk-related errors.  This was me
foolishly trying to see if I could reproduce the error with a fresher
darcs (in which the chunk stuff had been rolled back).  Right, so now
I'm working with a chunky darcs and have no more parse errors.  Will
try to make the problem reproducable
msg3565 (view) Author: droundy Date: 2008-02-18.17:04:14
On Mon, Feb 18, 2008 at 04:52:24PM -0000, Eric Kow wrote:
> > So I've been trying to re-create things so that I can reproduce the bug, but now
> > I'm getting parse errors (unfortunately, I don't have a snapshot of how things
> > were before I ran into trouble).
> 
> I guess you can ignore the chunk-related errors.  This was me
> foolishly trying to see if I could reproduce the error with a fresher
> darcs (in which the chunk stuff had been rolled back).  Right, so now
> I'm working with a chunky darcs and have no more parse errors.  Will
> try to make the problem reproducable

Argh, that's frustrating.  The trouble is that chunky darcs had bugs in it
that I never tracked down (which is why I rolled it back!).  :(  But if you
can reproduce this with a chunky darcs, it'll be well worth tracking down
what went wrong.
-- 
David Roundy
Department of Physics
Oregon State University
msg3567 (view) Author: kowey Date: 2008-02-18.17:52:22
Alright, I'm making steady progress reconstructing the events that led to this
problem.

I've run into a different, but possibly related problem.

What's good is that I can re-generate this error easily.  So maybe I'll be able
to distill it into a minimal test case

[the repository name is a sort of code: step 07, from t2, branch 2 (the one
about forms), pulled from step 06, got a conflict and resolved it in working)]

======8<================
 $ darcs pull ../07-t2-b2-form-06-con-wrs
Tue Feb 12 17:29:49 GMT 2008  Eric Kow <E.Y.Kow@brighton.ac.uk>
  * Add participants' pack form.
Shall I pull this patch? (1/6)  [ynWvpxdaqjk], or ? for help: a
Backing up ./Makefile(-darcs-backup0)
Backing up ./Local/Reg2008.pm(-darcs-backup1)
Backing up ./index.shtml(-darcs-backup0)
We have conflicts in the following files:
./Local/Reg2008.pm ./Makefile ./index.shtml
                                                                
darcs failed:  applyHunks error:
oo is:
"  return p({id=>\"lastmodified\"},'Last modified: 2008-02-05 13:03').end_div;\n"


o:

"  return p({id=>\"lastmodified\"},'Last modified: 2008-01-04 12:35').end_div;\n"
line:
13
after prefix:
[snip]
==========================
msg3661 (view) Author: droundy Date: 2008-02-25.17:55:52
I hate conflicts!!!

I've located the bug that causes this, and it's right smack in the most
complicated commute in the new conflict-handling code.  :(

The trouble is that the input to filterConflictsFL is incorrect in this case,
because we ignore the context of n1, which is problematic when it's a conflict
resolution patch.

I don't (yet) see a solution, and understand that few folks on the nosy list
will follow this, but wanted to write something down lest I forget what I've
figured out.

The problem (as is very common) lies in the fact that we have two "states" to
take into account in this version of the patch theory:  the "tangible"
state--which refers to the actual contents of files and directories--and the
"intangible" state, which refers to the set of patches in the repository.  The
two are interchangeable in the absence of conflicts.  Unfortunately, the
tangible state is the only one we track with our type witnesses, so it's still
easy to introduce bugs in which we get the intangible state wrong--as happens here.

The tangible and intangible states differ only in the case of a conflict
resolution patch, which is a patch that would have conflicted with some changes,
except that those changes have already been made.

Ideally, we'd have a dual type-witness system to track these two states, but
alas, that is not yet in place.  And it might be too tricky to work out in
practice anyhow.

To summarize (and you've been warned, I think, that this message is unlikely to
be comprehensible), when we call

filterConflictsFL p2 n2n1

the trouble is that p2 has in its context some patches that are resolved by a
patch in n2n1, but since n2n1 is stored as a FL Prim, there's no way for
filterConflictsFL to know this.  So we either have to adjust the context of p2
somehow before filtering, or somehow fix the context of n2n1.

Related to this is the fact that we define

n2n1 = n2 +>+ n1

which might actually be wrong at times, if some of the changes in n1 are
resolution patches.  I'm not certain about this.

Anyhow, I think that's all the work on this bug for today.  Hopefully tomorrow
I'll be able to see more clearly.

David
msg3670 (view) Author: droundy Date: 2008-02-26.22:54:58
The following patch updated the status of issue701 to be resolved in the unstable branch:

* resolved issue701: fixed bug in commutation of certain conflicting patches. 
We were failing to treat a resolution patch properly when commuting a patch
that depends on the resolution with one that conflicts with it.  :(

You can view the patch details online here: 
http://darcs.net/cgi-bin/darcs.cgi/unstable/?c=annotate&p=20080226223612-72aca-4f81f06d64e5e6b37b9ca08fd112d34eddf912fe.gz
msg7340 (view) Author: ckeen Date: 2009-02-18.11:52:58
Unfortunately I ran into the same error message again with darcs 2.2.0 (exact
version attached). Also I cannot publish the repository that causes this. As
with kowey's original situation this is happening due to a conflict which has
eben induced by myself.

I am investigating the situation... but I could need some help from someone who
understands this commuting code.
Attachments
msg7341 (view) Author: kowey Date: 2009-02-18.13:14:02
Yikes!  Christian, perhaps you could use the outline in
  http://wiki.darcs.net/index.html/Forensics
to help?

Also, it may be worth opening a new ticket for this
msg7342 (view) Author: ckeen Date: 2009-02-18.15:00:16
Hi Eric,

I'd love to. But I am still a bit confused on the steps written out
in Forensics.  I have identified the lines that cause the conflict
situation in my case by unrecording/recording smaller hunks and
trying to apply those. Now, how can I tell (you) how the target
repo differs from the source repo? How can I get rid of all the
other files in the repo that don't matter? I guess this is what the
boiling down step is about....

Thanks or your help,

Christian
msg7410 (view) Author: kowey Date: 2009-03-06.17:33:08
Just thought I would link to our progress on this bug:

http://lists.osuosl.org/pipermail/darcs-users/2009-February/017876.html
msg8135 (view) Author: kowey Date: 2009-08-14.11:42:06
I think we should treat Christian's problems as a new bug, which I have filed as
issue1520

Closing this off accordingly
History
Date User Action Args
2008-02-18 16:05:40koweycreate
2008-02-18 16:07:12koweysettopic: + Conflicts, Darcs2
nosy: droundy, tommy, beschmi, kowey
status: unread -> unknown
messages: + msg3548
2008-02-18 16:09:35droundysetpriority: bug -> urgent
nosy: droundy, tommy, beschmi, kowey
messages: + msg3550
2008-02-18 16:17:11koweysetfiles: + conflictor-chunk
nosy: droundy, tommy, beschmi, kowey
messages: + msg3557
2008-02-18 16:30:09koweysetfiles: + 59b7ba644e024eb1e5d759c52daba4944dd5966d
nosy: droundy, tommy, beschmi, kowey
2008-02-18 16:52:24koweysetnosy: droundy, tommy, beschmi, kowey
messages: + msg3563
2008-02-18 17:04:15droundysetnosy: droundy, tommy, beschmi, kowey
messages: + msg3565
2008-02-18 17:52:25koweysetnosy: droundy, tommy, beschmi, kowey
messages: + msg3567
2008-02-25 15:32:02droundysettopic: + Target-2.0
nosy: droundy, tommy, beschmi, kowey
2008-02-25 17:55:56droundysetpriority: urgent -> critical
nosy: + dagit, dagitj
messages: + msg3661
2008-02-26 22:55:00droundysetstatus: unknown -> resolved-in-unstable
nosy: droundy, tommy, beschmi, kowey, dagit, dagitj
messages: + msg3670
title: obliterate => 'Irrefutable pattern failed for pattern Data.Maybe.Just a2' -> fixed bug in commutation of certain conflicting patches.
2008-05-17 00:05:00koweylinkissue857 superseder
2008-08-22 13:09:55koweysetstatus: resolved-in-unstable -> resolved
nosy: + Serware
topic: - Target-2.0
2009-02-18 11:53:04ckeensetstatus: resolved -> unknown
nosy: + ckeen, dmitry.kurochkin, simon, thorkilnaur
messages: + msg7340
files: + version
2009-02-18 12:07:46koweysetnosy: droundy, tommy, beschmi, kowey, dagit, simon, dagitj, thorkilnaur, dmitry.kurochkin, Serware, ckeen
title: fixed bug in commutation of certain conflicting patches. -> Irrefutable pattern failed for pattern Data.Maybe.Just a2
2009-02-18 13:14:08koweysetnosy: droundy, tommy, beschmi, kowey, dagit, simon, dagitj, thorkilnaur, dmitry.kurochkin, Serware, ckeen
messages: + msg7341
2009-02-18 15:00:18ckeensetnosy: droundy, tommy, beschmi, kowey, dagit, simon, dagitj, thorkilnaur, dmitry.kurochkin, Serware, ckeen
messages: + msg7342
2009-02-18 18:52:51dagitsetnosy: - dagit, dagitj
2009-03-06 17:33:15koweysetnosy: droundy, tommy, beschmi, kowey, simon, thorkilnaur, dmitry.kurochkin, Serware, ckeen
messages: + msg7410
2009-03-09 17:30:35droundysetnosy: - droundy
2009-08-06 20:58:40adminsetnosy: - beschmi
2009-08-14 11:41:21koweylinkissue1520 superseder
2009-08-14 11:42:09koweysetstatus: unknown -> resolved
nosy: tommy, kowey, simon, thorkilnaur, dmitry.kurochkin, Serware, ckeen
topic: - Darcs2
messages: + msg8135
2009-08-25 17:41:08adminsetnosy: + darcs-devel, - simon
2009-08-27 14:24:01adminsetnosy: tommy, kowey, darcs-devel, thorkilnaur, dmitry.kurochkin, Serware, ckeen
2009-10-23 22:44:20adminsetnosy: + serware, - Serware
2009-10-23 23:30:09adminsetnosy: + Serware, - serware