Conversation
|
Initially this PR failed marshaling regression tests for macOS in the unlocked job. This unusual behavior seemed to be due to the The possible reason why it still worked on Ubuntu is that depending on the order of keys in the solution hashtables, verification reevaluates the transfer functions in non-deterministic order. If it happens to evaluate the The solution for now was to use the mallocWrapper global invariant, which also has The other This exposes a much deeper marshaling problem that's not specific to here. For example, even the So any kind of state in the analysis modules is problematic for marshaling and should maybe be avoided or replaced with a mechanism that allows it to also be marshaled from all analyses. |
…bles This was revealed by #345. Simply get-ing/eval-ing global constraint variables added bottom to rho. This unnecessarily increases rho with default values. An an unintended consequence, the bottom values for all dead local variables also never get stored.
Closes #316.
This implements the solution proposed in #310 (comment). By answering
IsMultiplequery for malloc-ed variables with false, the address set equality check introduced in #310 automatically considers this non-uniqueness information.This should be sound and good enough until we design a more precise malloc uniqueness analysis (#186).