-
Notifications
You must be signed in to change notification settings - Fork 84
Generate flow-insensitive YAML witness invariants with ghosts for privatized variables #1394
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Changes from all commits
Commits
Show all changes
115 commits
Select commit
Hold shift + click to select a range
9ee9ce7
Add reach_error to library functions
sim642 4752ddf
Make some YAML witness validation messages more severe
sim642 2e22af7
Add ghost_variable and ghost_update to YAML witness types
sim642 688c4dc
Add mutexGhosts analysis
sim642 45be164
Add YamlEntryGlobal query
sim642 5d3f5fe
Generate YAML witness ghosts for mutexes
sim642 a80242a
Make protection privatization more precise with earlyglobs
sim642 086e60d
Add ask argument to BasePriv invariant_global-s
sim642 b2d09da
Add MustProtectingLocks query
sim642 526d88a
Generate protected flow-insensitive invariants with ghosts
sim642 d536db4
Make mutex ghost variable names distinct from mutex variables
sim642 2eafa69
Document MutexGhosts
sim642 470ddbc
Fix coverage build
sim642 0d5ef63
Make mutex-meet privatization more precise with earlyglobs
sim642 a714dc6
Generate mutex-meet flow-insensitive invariants with ghosts
sim642 652aeae
Add ghost variable for multithreaded mode
sim642 7c33c72
Reorder disjuncts in privatized invariants in implication order
sim642 4381e9f
Fix MustProtectingLocks query crash with top
sim642 60a51b9
Fix protection privatization protected invariant with no protecting m…
sim642 fd84cd9
Fix mutex-meet privatization protected invariant with no protecting m…
sim642 516e3ad
Use RichVarinfo for witness ghost variables
sim642 a10c973
Deduplicate witness ghost entry creation
sim642 932ac3b
Allow non-void types for RichVarinfo
sim642 7951588
Merge branch 'yaml-witness-test' into yaml-witness-ghost
sim642 b018265
Add cram test for privatized witness ghosts
sim642 7992462
Add cram test for witness ghosts with multiple protecting locks
sim642 01c9b98
mutex-meet ghost invariants are maybe unsound
sim642 a07e890
Merge branch 'master' into yaml-witness-ghost
sim642 d3a5a0a
Add NOWARNs to commented out checks in 56-witness/64-ghost-multiple-p…
sim642 612c1cc
Remove TODO about mutex-meet unsound witness invariants
sim642 ff0d6a5
Merge branch 'master' into yaml-witness-ghost
sim642 e235ba7
Rewrite mutexGhosts with may locksets per node
sim642 726f646
Add test for mutex ghosts for alloc variables
sim642 3e9d7c3
Add valid names to alloc mutex ghosts
sim642 b19cc2d
Fix mutexGhosts indentation
sim642 885d0cf
Use non-recursive mutex in 56-witness/66-ghost-alloc-lock
sim642 21ae83a
Fix mutexGhosts unlocking everything at function return
sim642 d67c083
Revert "Rewrite mutexGhosts with may locksets per node"
sim642 c472adf
Add lock global unknowns to mutexGhosts
sim642 fd64898
Add PARAM to 56-witness/64-ghost-multiple-protecting
sim642 e3ded4e
Find ambiguous mutexes in mutexGhosts
sim642 b96f8a2
Avoid emitting witness ghosts for ambiguous mutexes
sim642 c6f12a6
Move LockDomain.Symbolic to SymbLocksDomain
sim642 8985d64
Extract WitnessGhostVar to break dependency cycle
sim642 b04af51
Refactor GhostVarAvailable query
sim642 d8bd13d
Exclude WitnessGhostVar from docs check
sim642 6750c7c
Merge branch 'master' into yaml-witness-ghost
sim642 947d6bc
Fix __VERIFIER_atomic special mutex ghost varialbe name
sim642 4ada6eb
Avoid emitting useless protected invariants from protection privatiza…
sim642 a7d43a9
Avoid useless work in mutex-meet invariant_global if ghost variable i…
sim642 d6abc0b
Fix struct field mutex ghost variable name
sim642 6db1d04
Fix definite array index mutex ghost variable name
sim642 53a714f
Make non-definite ghost variables unavailable
sim642 413b2e1
Disable mutex ghosts with indices
sim642 ea849fb
Detect thread create nodes in mutexGhosts
sim642 594beac
Refactor mutexGhosts thread creation collection
sim642 584b788
Add option to emit flow_insensitive_invariant-s as location_invariant-s
sim642 8d5cc12
Add svcomp-ghost conf
sim642 96d862e
Use YAML witness format-version 0.1 for svcomp-ghost
sim642 257fa8c
Test witness.invariant.flow_insensitive-as-location with for loop
sim642 10dfba1
Fix witness.invariant.flow_insensitive-as-location at loop node
sim642 16c97fd
Add cram test for relational mutex-meet flow-insensitive invariants
sim642 5650784
Add InvariantGlobal interface to relational privatizations
sim642 d3565cb
Implement relational mutex-meet flow-insensitive invariants
sim642 1aa35d8
Filter relational mutex-meet ghost invariant with keep_only_protected…
sim642 c4a8936
Add filters to relational InvariantGlobal
sim642 535de76
Add test with __VERIFIER_atomic_locked ghost variable
sim642 6f3b6fb
Treat __VERIFIER_atomic_locked as false in witnesses
sim642 2e26aab
Merge branch 'master' into yaml-witness-ghost
sim642 2e6673f
Disable 13-privatized/04-priv_multi cram test on OSX
sim642 b7582a4
Make 36-apron/12-traces-min-rpb1 cram test warnings deterministic
sim642 cad5f6e
Add BasePriv invariant_global tracing
sim642 bd329e1
Fix mutex-meet invariant_global not including MUTEX_INITS
sim642 2a79e42
Add comment about multiple protecting mutexes for ghost invariants
sim642 e6bf34d
Merge branch 'master' into yaml-witness-ghost
sim642 2e42c7b
Add ghost_variable and ghost_update YAML entry types to option
sim642 e7931ff
Make InvariantGlobalNodes query lazy in YAML witness generation
sim642 36ff621
Fix comment about YamlEntryGlobal
sim642 7fcb10c
Handle pthread_rwlock_t as opaque mutex in base analysis
sim642 1570adb
Merge branch 'master' into yaml-witness-ghost
sim642 c18061e
Remove pthreadMutexType from ghost witness tests
sim642 6055e8d
Activate abortUnless in svcomp-ghost conf also
sim642 6e79314
Update TODO comment about base earlyglobs flow-insensitive invariants
sim642 13333f5
Merge branch 'master' into yaml-witness-ghost
sim642 d937d68
Add options ana.base.invariant.local and ana.base.invariant.global
sim642 fbc9e62
Add option ana.var_eq.invariant.enabled
sim642 58aaf53
Update svcomp-ghost conf
sim642 641d447
Merge branch 'master' into yaml-witness-ghost
sim642 f20ed62
Re-enable witness.invariant.{loop-head,other} in svcomp-ghost conf fo…
sim642 342ed74
Merge branch 'master' into yaml-witness-ghost
sim642 9c60418
Add YAML witness ghost_instrumentation entry type
sim642 d220653
Add ghost_instrumentation support to mutexGhosts
sim642 f79ad18
Add option for emitting flow_insensitive_invariant-s as invariant_set…
sim642 e9e652d
Use invariant_set in svcomp-ghost conf
sim642 431b34d
Make invariant_set and ghost_instrumentation deterministic in tests
sim642 2c99550
Remove ghost_ prefix from ghost_instrumentation update entries
sim642 12dadf4
Wrap ghost_instrumentation in content
sim642 852297b
Add value and format to ghost_instrumentation
sim642 ced56ca
Document YamlEntryGlobal and InvariantGlobalNodes queries
sim642 969b87a
Replace privatization invariant_global mutex_inits TODO with comment
sim642 4940658
Apply suggestions from code review
sim642 09045bc
Add nontrivial condition for querying YamlEntryGlobal at all
sim642 3a07c16
Remove old unnecessary branching from ghost_update YAML witness entries
sim642 9a3a338
Implement YamlWitnessType.Entry pretty-printing
sim642 34277e0
Use sets instead of BatList.mem_cmp for deduplicating ghost witness v…
sim642 7929d63
Extract fold_flow_insensitive_as_location in YamlWitness to deduplica…
sim642 8a0240d
Update ghost witness related TODOs and comments
sim642 002fdd3
Merge branch 'master' into yaml-witness-ghost
sim642 64c11c2
Add test 56-witness/69-ghost-ptr-protection for unsound protection fl…
sim642 b4734c3
Fix unsound ghost witness invariant in 56-witness/69-ghost-ptr-protec…
sim642 d2e71cb
Change ghost witness tests to use ghost_instrumentation
sim642 554bd7f
Avoid empty ghost_instrumentation location updates
sim642 2c25848
Remove support for old ghost_variable and ghost_update entry types
sim642 3369955
Merge branch 'master' into yaml-witness-ghost
sim642 ffe255b
Count witness.invariant.flow_insensitive-as location invariants in su…
sim642 File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,139 @@ | ||
| { | ||
| "ana": { | ||
| "sv-comp": { | ||
| "enabled": true, | ||
| "functions": true | ||
| }, | ||
| "int": { | ||
| "def_exc": true, | ||
| "enums": false, | ||
| "interval": true | ||
| }, | ||
| "float": { | ||
| "interval": true, | ||
| "evaluate_math_functions": true | ||
| }, | ||
| "activated": [ | ||
| "base", | ||
| "threadid", | ||
| "threadflag", | ||
| "threadreturn", | ||
| "mallocWrapper", | ||
| "mutexEvents", | ||
| "mutex", | ||
| "access", | ||
| "race", | ||
| "escape", | ||
| "expRelation", | ||
| "mhp", | ||
| "assert", | ||
| "var_eq", | ||
| "symb_locks", | ||
| "region", | ||
| "thread", | ||
| "threadJoins", | ||
| "abortUnless", | ||
| "mutexGhosts", | ||
| "pthreadMutexType" | ||
| ], | ||
| "path_sens": [ | ||
| "mutex", | ||
| "malloc_null", | ||
| "uninit", | ||
| "expsplit", | ||
| "activeSetjmp", | ||
| "memLeak", | ||
| "threadflag" | ||
| ], | ||
| "context": { | ||
| "widen": false | ||
| }, | ||
| "base": { | ||
| "arrays": { | ||
| "domain": "partitioned" | ||
| }, | ||
| "invariant": { | ||
| "local": false, | ||
| "global": true | ||
| } | ||
| }, | ||
| "relation": { | ||
| "invariant": { | ||
| "local": false, | ||
| "global": true, | ||
| "one-var": false | ||
| } | ||
| }, | ||
| "apron": { | ||
| "invariant": { | ||
| "diff-box": true | ||
| } | ||
| }, | ||
| "var_eq": { | ||
| "invariant": { | ||
| "enabled": false | ||
| } | ||
| }, | ||
| "race": { | ||
| "free": false, | ||
| "call": false | ||
| }, | ||
| "autotune": { | ||
| "enabled": true, | ||
| "activated": [ | ||
| "singleThreaded", | ||
| "mallocWrappers", | ||
| "noRecursiveIntervals", | ||
| "enums", | ||
| "congruence", | ||
| "octagon", | ||
| "wideningThresholds", | ||
| "loopUnrollHeuristic", | ||
| "memsafetySpecification", | ||
| "noOverflows", | ||
| "termination", | ||
| "tmpSpecialAnalysis" | ||
| ] | ||
| } | ||
| }, | ||
| "exp": { | ||
| "region-offsets": true | ||
| }, | ||
| "solver": "td3", | ||
| "sem": { | ||
| "unknown_function": { | ||
| "spawn": false | ||
| }, | ||
| "int": { | ||
| "signed_overflow": "assume_none" | ||
| }, | ||
| "null-pointer": { | ||
| "dereference": "assume_none" | ||
| } | ||
| }, | ||
| "witness": { | ||
| "graphml": { | ||
| "enabled": false | ||
| }, | ||
| "yaml": { | ||
| "enabled": true, | ||
| "format-version": "2.1", | ||
| "entry-types": [ | ||
| "flow_insensitive_invariant", | ||
| "ghost_instrumentation" | ||
| ] | ||
| }, | ||
| "invariant": { | ||
| "loop-head": true, | ||
| "after-lock": true, | ||
| "other": true, | ||
| "accessed": false, | ||
| "exact": true, | ||
| "all-locals": false, | ||
| "flow_insensitive-as": "invariant_set-location_invariant" | ||
| } | ||
| }, | ||
| "pre": { | ||
| "enabled": false | ||
| } | ||
| } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.