Propagator::check is called after auxiliary variables have been removed but before reiinitialization.
rkaminsk opened this issue · comments
There is a problem with the propagator. The attached example runs a trace resulting in a situation where Propagator::check
is called after the solver removed auxiliary variables but before Propagate::init
has been called to give the propagator a chance to remove those variables.
Looking at the trace, it seems like the "spurious" check call should simply be omitted. The application where this trace has been extracted seems to work if the check call is filtered manually.
The problem only seems to appear with multiple threads. The example triggers the behavior with two threads and is luckily quite short. 😉
@rkaminsk
I prepared a possible fix in branch https://github.com/potassco/clasp/tree/issue_52. Could you please check whether this fixes the issue for you?
It fixes the unit tests we have in our clingcon prototype. I'll do some more testing when back in Germany. So far looks good.
It seems to work. Please merge and thanks for fixing!
Merged to dev.