Repository navigation
Add recursive mutex support - #626
Conversation
# Conflicts: # subprojects/xcfa/xcfa-analysis/src/main/java/hu/bme/mit/theta/xcfa/analysis/XcfaStateAdapter.kt # subprojects/xcfa/xcfa/src/main/java/hu/bme/mit/theta/xcfa/gson/XcfaLabelAdapter.kt
# Conflicts: # build.gradle.kts
Release PreviewVersion: 8.3.6 Release Notes: LTS-based XCFA analyses now support NORMAL and RECURSIVE mutexes. Mutex attribute initialization/type changes and mutex initialization remain library InvokeLabels, while an immutable MutexState tracks attribute snapshots and acquisition counts per process. A recursive mutex stays held until its owner performs the final matching unlock. Update state coverage, POR owner lookups, witnesses, and JSON serialization to preserve the mutex state. Count repeated read-lock acquisitions and retain existing atomic-block semantics. MutexToVarPass continues to support NORMAL mutexes and explicitly rejects recursive types. Validation:
Modified subprojects (since v8.3.5): Files to be uploaded:
|
|
Benchexec test report for a selection of benchmarks (correct / incorrect / all):
📦 Download the results - extract the zip and open the |
marian-lingsch
left a comment
There was a problem hiding this comment.
IMO this mostly seems good ^^ (even though I'm not too familiar with the Theta codebase 😅)
Just two small comments on code-style ^^
(Have not yet read the Theta codestyle guidelines so please ignore them if my suggestions contradict them)
LTS-based XCFA analyses now support NORMAL and RECURSIVE mutexes. Mutex attribute initialization/type changes and mutex initialization remain library InvokeLabels, while an immutable MutexState tracks attribute snapshots and acquisition counts per process. A recursive mutex stays held until its owner performs the final matching unlock.
Update state coverage, POR owner lookups, witnesses, and JSON serialization to preserve the mutex state. Count repeated read-lock acquisitions and retain existing atomic-block semantics. MutexToVarPass continues to support NORMAL mutexes and explicitly rejects recursive types.
Validation: