necto wrote:

> That being said, do we know how exactly the unstable addresses result in 
> unstable results?

One mechanism that we studied in the past weeks is the SMT issue refutation: 
assertion order is that of the constraint order in the `ConstraintMap`, and it 
turns out Z3 runs a query differently depending on the order of the assertions.

There are likely other mechanisms, for example, the SymbolRef 
`EquivalenceClass` in RangeConstraintManager is an `ImmutableMap<SymbolRef, 
...>`. With different ordering, the constraint manager might choose a different 
representative `SymbolRef` for a given class. This is speculative, though.

> By the way, the Python language (where performance is not prioritized) rules 
> out these subtle bugs by recording the order of insertion within its `dict` 
> (associative map) datatype and using that as the iteration order.

Interesting parallel, as this patch is applying the same strategy for SymbolRef 
maps


https://github.com/llvm/llvm-project/pull/121551
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to