Skip to content

Vojdani privatization may output read-unprotected variables to witnesses #1713

Open
@sim642

Description

@sim642

Both vojdani privatization:

let invariant_vars ask getg st = protected_vars ask

and protection privatization:
let invariant_vars ask getg st = protected_vars ask

use the same implementation of invariant_vars:
let protected_vars (ask: Q.ask): varinfo list =
LockDomain.MustLockset.fold (fun ml acc ->
Q.VS.join (ask.f (Q.MustProtectedVars {mutex = ml; write = true})) acc
) (ask.f Q.MustLockset) (Q.VS.empty ())
|> Q.VS.elements

This is weird, because one is built on read-write protection and the other just on write-protection.

I tried a small fix, but that revealed read-write protected variables being incorrectly computed (#1712). So this requires PR #1631 or something else that fixes the computation first.

Metadata

Metadata

Assignees

Labels

pr-dependencyDepends or builds on another PR, which should be merged beforesv-compSV-COMP (analyses, results), witnesses

Type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions