[gecode-users] help! propagators stop being called after one cloning.

Grégoire Dooms dooms at info.ucl.ac.be
Wed Mar 22 15:59:10 CET 2006


Hello guys,
 
I have come back to the implementation of a variabe type for graph 
variables.
But I'm stuck on the following bug which I have some troubles hunting down.
 
I have a csp with one graph variable and two propagators subscribed on 
it (cpgraph-path.cc in contribs/graph/examples).
Their propagation condition is PC_GRAPH_ANY.

What happens is those two propagators are runned on the first invocation 
of Space::status in the DFS code.
But from then on the propagators are copied and deleted but propagate is 
then never called again. So the search engine just enumerates all 
subraphs of the initial upper bound.

I have been tracing the execution through the different Space methods 
but I don't have a clear idea of where to look for the cause of this bug.
I think it should have something to do with my VarTypeProcessor (never 
blame the kernel !) but comparing it to the set and int ones shows no 
significant difference.

Do you have any hints on which values/attributes I should inspect to see 
what happens ?
In particular what is the difference between the ActorLink and the 
ActorDeleteLink ?
Should I trace in Processor::process called from Space::process ?

I known the propagators are still there as they keep getting copied but 
I would like to know where the decision to reschedule them is /should be 
taken. And then where they should be (I guess in the pool then popped 
with pool_pop).

Any ideas ?
Cheers, Thanks,
--
Gregoire




More information about the gecode-users mailing list