-
Notifications
You must be signed in to change notification settings - Fork 84
Reimplement deadlock analysis and extend with MHP #655
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
Changes from 17 commits
Commits
Show all changes
32 commits
Select commit
Hold shift + click to select a range
d5d9e5f
Use global constraint unknown for deadlock orders (issue #650)
sim642 c1d79cc
Use WarnGlobal for deadlock warnings (issue #650)
sim642 9164bce
Add all before and after locks to deadlock warning (issue #650)
sim642 1e873f4
Enable and extend all deadlock tests
sim642 6623816
Remove location-insensitive DeadlockDomain.MyLock
sim642 94c379d
Use IdentitySpec for deadlock analysis
sim642 74bd3c1
Use Lock and Unlock events for deadlock analysis
sim642 e7d96b7
Refactor DeadlockDomain
sim642 bd1a834
Split deadlock analysis global unknowns (issue #650)
sim642 200ff8a
Flip deadlock analysis pairs from forbidden to actual
sim642 98eed4b
Refactor Deadlock.addLockingInfo
sim642 0cae493
Refactor Deadlock WarnGlobal
sim642 81c7a9d
Add deadlock warn_global timing
sim642 a666d9f
Add Deadlock message category
sim642 6e86f39
Normalize deadlock cycles to prevent equivalent warnings
sim642 90fdc00
Replace Cil.location with Node in deadlock event (issue #650)
sim642 6745cdf
Realign case in update_suite.rb
sim642 50ba58f
Add mutex analysis dependency to deadlock analysis
sim642 74eb3e3
Add TODO no deadlock test due to common mutex
sim642 eea313c
Fix deadlock cycle print containing stem locks
sim642 78d601c
Add deadlock non-concurrency example from Kroenig et al ASE16
sim642 fb5fca3
Exclude deadlocks by non-concurrency (MHP) (issue #650)
sim642 b4d7b0f
Add access information to deadlock warnings
sim642 6fa2ac2
Refactor MCPSpec.access argument to be variant
sim642 123e0cb
Additional MHP criterion
michael-schwarz 68d6d5b
Two sophisticated examples
michael-schwarz 3124e37
Add problematic example with missed must deadlock
michael-schwarz 0af55e0
Rm wrong comment
michael-schwarz 4fa94b7
Skip 15-deadlock/14-missing-unlock
sim642 1f737fd
Clean up and fully annotate mhp deadlock tests
sim642 2dd959f
Merge branch 'master' into deadlock
sim642 3d724f8
Remove unused globals from 15-deadlock/14-missing-unlock
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
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,24 +1,7 @@ | ||
| open Cil | ||
| open Pretty | ||
|
|
||
| type myowntypeEntry = {addr : ValueDomain.Addr.t ; loc : location} | ||
| module Lock = LockDomain.Addr | ||
| module LockEvent = Printable.Prod (Lock) (Node) | ||
|
|
||
|
|
||
| module MyLock : Printable.S with type t = myowntypeEntry = | ||
| struct | ||
| include Printable.Std (* for default invariant, tag, ... *) | ||
|
|
||
| type t = myowntypeEntry | ||
| module Ad = ValueDomain.Addr | ||
| let name () = "address with location" | ||
| let equal x y = Ad.equal x.addr y.addr (* ignores loc field *) | ||
| let hash x = Ad.hash x.addr | ||
| let compare x y = Ad.compare x.addr y.addr (* ignores loc field *) | ||
| (* TODO: deadlock analysis output doesn't even use these, but manually outputs locations *) | ||
| let show x = (Ad.show x.addr) ^ "@" ^ (CilType.Location.show x.loc) | ||
| let pretty () x = Ad.pretty () x.addr ++ text "@" ++ CilType.Location.pretty () x.loc | ||
| let printXml c x = Ad.printXml c x.addr | ||
| let to_yojson x = `String (show x) | ||
| end | ||
|
|
||
| module Lockset = SetDomain.ToppedSet (MyLock) (struct let topname = "all locks" end) | ||
| module MayLockEvents = SetDomain.ToppedSet (LockEvent) (struct let topname = "All lock events" end) |
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
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.
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.