Skip to content
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

SV-COMP 2025 development #1601

Merged
merged 30 commits into from
Nov 28, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
30 commits
Select commit Hold shift + click to select a range
af781ed
Enable ana.float.evaluate_math_functions in svcomp24 and svcomp confs
sim642 Jun 20, 2024
3ff00ae
Add tests for imaxabs
sim642 Jun 20, 2024
2653e2e
Add hacky imaxabs support
sim642 Jun 20, 2024
f9765da
Add hacky imaxabs sqrt refine support
sim642 Jun 20, 2024
a1f0b35
Find intmax_t for imaxabs from program
sim642 Jun 20, 2024
67f8fe9
Add test for invariant_set widening tokens (issue #1299)
sim642 Oct 9, 2024
7ec6b05
Add optional int indices to widening tokens
sim642 Oct 8, 2024
21c000c
Add invariant_set index to widening token
sim642 Oct 8, 2024
57a0447
Rename widening token modules
sim642 Oct 9, 2024
a281744
Improve widening token output
sim642 Oct 9, 2024
85cbda6
Merge branch 'master' into imaxabs
sim642 Oct 16, 2024
2f5b50f
Revert "Add hacky imaxabs sqrt refine support"
sim642 Oct 16, 2024
f7a5afa
Add 39-signed-overflows/13-imaxabs-macos test
sim642 Oct 16, 2024
6283468
Unroll cast type in BaseInvariant
sim642 Oct 16, 2024
3b7edf4
Merge branch 'svcomp25-no-exclude-vars' into svcomp25-dev
sim642 Oct 17, 2024
59f5633
Merge branch 'imaxabs' into svcomp25-dev
sim642 Oct 17, 2024
e12d6df
Copy svcomp confs to svcomp25
sim642 Oct 17, 2024
6a97380
Update sv-comp/archive.sh for 2025
sim642 Oct 17, 2024
010c422
Merge branch 'yaml-witness-invariant-set-widen-token' into svcomp25-dev
sim642 Oct 17, 2024
d3c5d35
Document SV-COMP bench-defs MR
sim642 Oct 18, 2024
b1095fb
Add more precise YAML witness generation summary
sim642 Nov 6, 2024
7719082
Add witness.yaml.strict option description
sim642 Nov 6, 2024
546a8d0
Update YAML witness validation result for refutation under new scorin…
sim642 Nov 6, 2024
2048122
Fix YAML witness validate/unassume error with empty (unparsable) path
sim642 Nov 6, 2024
5512d83
Merge branch 'master' into svcomp25-dev
sim642 Nov 8, 2024
8d8b675
Remove outdated comments about new __VERIFIER_nondet functions
sim642 Nov 14, 2024
6a05022
Add initial CHANGELOG for SV-COMP 2025
sim642 Nov 18, 2024
152ebb6
Add initial CHANGELOG for v2.5.0
sim642 Nov 18, 2024
6498145
Add CHANGELOG for v2.5.0
sim642 Nov 18, 2024
0ca1bb3
Add parsing of integer constraints in YAML violation_sequence-s
sim642 Nov 22, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 12 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,14 @@
## v2.5.0 (unreleased)
Functionally equivalent to Goblint in SV-COMP 2025.

* Add 32bit vs 64bit architecture support (#54, #1574).
* Add per-function context gas analysis (#1569, #1570, #1598).
* Adapt automatic static loop unrolling (#1516, #1582, #1583, #1584, #1590, #1595, #1599).
* Adapt automatic configuration tuning (#1450, #1612, #1181, #1604).
* Simplify non-relational integer invariants in witnesses (#1517).
* Fix excessive hash collisions (#1594, #1602).
* Clean up various code (#1095, #1523, #1554, #1575, #1588, #1597, #1614).

## v2.4.0
* Remove unmaintained analyses: spec, file (#1281).
* Add linear two-variable equalities analysis (#1297, #1412, #1466).
Expand All @@ -10,7 +21,7 @@
* Fix mutex type analysis unsoundness and enable it by default (#1414, #1416, #1510).
* Add points-to set refinement on mutex path splitting (#1287, #1343, #1374, #1396, #1407).
* Improve narrowing operators (#1502, #1540, #1543).
* Extract automatic configuration tuning for soundness (#1369).
* Extract automatic configuration tuning for soundness (#1469).
* Fix many locations in witnesses (#1355, #1372, #1400, #1403).
* Improve output readability (#1294, #1312, #1405, #1497).
* Refactor logging (#1117).
Expand Down
3 changes: 2 additions & 1 deletion conf/svcomp-validate.json
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,8 @@
"interval": true
},
"float": {
"interval": true
"interval": true,
"evaluate_math_functions": true
},
"activated": [
"base",
Expand Down
3 changes: 2 additions & 1 deletion conf/svcomp.json
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,8 @@
"interval": true
},
"float": {
"interval": true
"interval": true,
"evaluate_math_functions": true
},
"activated": [
"base",
Expand Down
3 changes: 2 additions & 1 deletion conf/svcomp24-validate.json
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,8 @@
"interval": true
},
"float": {
"interval": true
"interval": true,
"evaluate_math_functions": true
},
"activated": [
"base",
Expand Down
3 changes: 2 additions & 1 deletion conf/svcomp24.json
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,8 @@
"interval": true
},
"float": {
"interval": true
"interval": true,
"evaluate_math_functions": true
},
"activated": [
"base",
Expand Down
123 changes: 123 additions & 0 deletions conf/svcomp25-validate.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,123 @@
{
"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",
"unassume"
],
"path_sens": [
"mutex",
"malloc_null",
"uninit",
"expsplit",
"activeSetjmp",
"memLeak",
"threadflag"
],
"context": {
"widen": false
},
"base": {
"arrays": {
"domain": "partitioned"
}
},
"race": {
"free": false,
"call": false
},
"autotune": {
"enabled": true,
"activated": [
"singleThreaded",
"mallocWrappers",
"noRecursiveIntervals",
"enums",
"congruence",
"octagon",
"wideningThresholds",
"loopUnrollHeuristic",
"memsafetySpecification",
"noOverflows",
"termination",
"tmpSpecialAnalysis"
]
},
"widen": {
"tokens": true
}
},
"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": false,
"strict": true,
"format-version": "2.0",
"entry-types": [
"location_invariant",
"loop_invariant",
"invariant_set",
"violation_sequence"
],
"invariant-types": [
"location_invariant",
"loop_invariant"
]
},
"invariant": {
"loop-head": true,
"after-lock": true,
"other": true
}
},
"pre": {
"enabled": false
}
}
118 changes: 118 additions & 0 deletions conf/svcomp25.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,118 @@
{
"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"
],
"path_sens": [
"mutex",
"malloc_null",
"uninit",
"expsplit",
"activeSetjmp",
"memLeak",
"threadflag"
],
"context": {
"widen": false
},
"base": {
"arrays": {
"domain": "partitioned"
}
},
"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": true,
"id": "enumerate",
"unknown": false
},
"yaml": {
"enabled": true,
"format-version": "2.0",
"entry-types": [
"invariant_set"
],
"invariant-types": [
"loop_invariant"
]
},
"invariant": {
"loop-head": true,
"after-lock": false,
"other": false,
"accessed": false,
"exact": true
}
},
"pre": {
"enabled": false
}
}
2 changes: 2 additions & 0 deletions docs/developer-guide/releasing.md
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,8 @@

This includes: git tag name, git tag message and zipped conf file.

5. Open MR with conf file name to the [bench-defs](https://gitlab.com/sosy-lab/sv-comp/bench-defs) repository.

### For each prerun

1. Update opam pins:
Expand Down
8 changes: 4 additions & 4 deletions lib/sv-comp/stub/src/sv-comp.c
Original file line number Diff line number Diff line change
Expand Up @@ -35,10 +35,10 @@ __VERIFIER_nondet2(unsigned int, u32)
__VERIFIER_nondet2(unsigned short int, u16) // not in rules
__VERIFIER_nondet2(unsigned char, u8) // not in rules
__VERIFIER_nondet2(unsigned char, unsigned_char) // not in rules
__VERIFIER_nondet2(long long, longlong) // not in rules yet (https://gitlab.com/sosy-lab/benchmarking/sv-benchmarks/-/issues/1341)
__VERIFIER_nondet2(unsigned long long, ulonglong) // not in rules yet (https://gitlab.com/sosy-lab/benchmarking/sv-benchmarks/-/issues/1341)
__VERIFIER_nondet2(__uint128_t, uint128) // not in rules yet (https://gitlab.com/sosy-lab/benchmarking/sv-benchmarks/-/issues/1341)
__VERIFIER_nondet2(__int128_t, int128) // not in rules yet (https://gitlab.com/sosy-lab/benchmarking/sv-benchmarks/-/issues/1341)
__VERIFIER_nondet2(long long, longlong)
__VERIFIER_nondet2(unsigned long long, ulonglong)
__VERIFIER_nondet2(__uint128_t, uint128)
__VERIFIER_nondet2(__int128_t, int128)
__VERIFIER_nondet2(unsigned char, uchar)
__VERIFIER_nondet2(unsigned int, uint)
__VERIFIER_nondet2(unsigned long, ulong)
Expand Down
6 changes: 3 additions & 3 deletions scripts/sv-comp/archive.sh
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

make clean

git tag -m "SV-COMP 2024" svcomp24
git tag -m "SV-COMP 2025" svcomp25

dune build --profile=release src/goblint.exe
rm -f goblint
Expand Down Expand Up @@ -32,8 +32,8 @@ zip goblint/scripts/sv-comp/goblint.zip \
goblint/lib/libboxD.so \
goblint/lib/libpolkaMPQ.so \
goblint/lib/LICENSE.APRON \
goblint/conf/svcomp24.json \
goblint/conf/svcomp24-validate.json \
goblint/conf/svcomp25.json \
goblint/conf/svcomp25-validate.json \
goblint/lib/libc/stub/include/assert.h \
goblint/lib/goblint/runtime/include/goblint.h \
goblint/lib/libc/stub/src/stdlib.c \
Expand Down
8 changes: 4 additions & 4 deletions src/analyses/apron/relationAnalysis.apron.ml
Original file line number Diff line number Diff line change
Expand Up @@ -690,7 +690,7 @@ struct
Priv.lock ask ctx.global st m
) st addr
| Events.Unlock addr when ThreadFlag.has_ever_been_multi ask -> (* TODO: is this condition sound? *)
WideningTokens.with_local_side_tokens (fun () ->
WideningTokenLifter.with_local_side_tokens (fun () ->
CommonPriv.lift_unlock ask (fun st m ->
Priv.unlock ask ctx.global ctx.sideg st m
) st addr
Expand All @@ -701,7 +701,7 @@ struct
Priv.escape ctx.node (Analyses.ask_of_ctx ctx) ctx.global ctx.sideg st escaped
| Assert exp ->
assert_fn ctx exp true
| Events.Unassume {exp = e; uuids} ->
| Events.Unassume {exp = e; tokens} ->
let e_orig = e in
let ask = Analyses.ask_of_ctx ctx in
let e = replace_deref_exps ctx.ask e in
Expand Down Expand Up @@ -737,7 +737,7 @@ struct

(* TODO: parallel write_global? *)
let st =
WideningTokens.with_side_tokens (WideningTokens.TS.of_list uuids) (fun () ->
WideningTokenLifter.with_side_tokens (WideningTokenLifter.TS.of_list tokens) (fun () ->
VH.fold (fun v v_in st ->
(* TODO: is this sideg fine? *)
write_global ask ctx.global ctx.sideg st v v_in
Expand Down Expand Up @@ -771,7 +771,7 @@ struct
let new_value = RD.join old_value st in
PCU.RH.replace results ctx.node new_value;
end;
WideningTokens.with_local_side_tokens (fun () ->
WideningTokenLifter.with_local_side_tokens (fun () ->
Priv.sync (Analyses.ask_of_ctx ctx) ctx.global ctx.sideg ctx.local (reason :> [`Normal | `Join | `JoinCall of CilType.Fundec.t | `Return | `Init | `Thread])
)

Expand Down
Loading
Loading