Export to GitHub

europa-pso - issue #159

String parameter becomes invalid after un-merging


Posted on Oct 31, 2012 by Swift Hippo

What steps will reproduce the problem?

The planning problem in System/test/merge-with-open-domain.nddl exhibits the issue.

What is the expected output? What do you see instead?

Planning should complete. Instead, when compiled in debug mode, the following checkError is hit:

ConstraintEngine/base/ConstrainedVariable.cc:529: Error: isValid() is false

as a result of relaxing the string parameter after un-merging. The part of the isValid() check that is failing is the check to make sure that the last domain is a subset of the base domain. The last domain has been re-opened, causing it to not be a subset of the base.

Comment #1

Posted on Nov 15, 2012 by Happy Ox

I'm looking at this in the debugger. The problem seems to be originated in a piece of code in TokenVariable::handleReset that has been touched several times in the past, I'll have to spend some time making sure I get it right this time.

Mike, for the particular example that you provided, it looks like that assertion failure may be benign, I just need to make sure that the restricted base domain is reinstated before the split operation completes, are you seeing any problems when running optimized?

Comment #2

Posted on Nov 16, 2012 by Happy Ox

I dug some more today. Looks like the following:

predicate Predicate { string parameter; parameter = "foo"; }

correctly closes the derived domain for "parameter" upon initialization for a master token, but it incorrectly leaves it open for a slave token, so there may be a bug in the europa runtime when dealing with the creation of slave tokens.

I have to take a break from this now but will follow this lead as soon as I get a chance.

Comment #3

Posted on Nov 16, 2012 by Happy Ox

Mike, I've committed a fix for this, please verify and let me know if you still see any problems.

Comment #4

Posted on Nov 16, 2012 by Happy Ox

(No comment was entered for this change.)

Status: Fixed

Labels:
Type-Defect Priority-Critical OpSys-All Milestone-EUROPA-2.7 Component-ConstraintEngine Usability