bokner/fixpoint

Possible race condition when removing a single value from bitvector domain

Closed this issue · 0 comments

In CPSolver.BitVectorDomain.remove/2:

      {domain_change, domain}
        |> tap(fn _ -> :bit_vector.clear(bit_vector, vector_value) end)
    end

Think about the implications of running this by several propagators concurrently.
It could be that this value is the only one remaining in the domain (by the time it runs), and it would then be an undetected failure.