File tree 4 files changed +12
-4
lines changed
4 files changed +12
-4
lines changed Original file line number Diff line number Diff line change 1
- CORE
1
+ KNOWNBUG
2
2
main.c
3
3
-D_ENABLE_CHAIN_ --unwind 2
4
4
^EXIT=0$
Original file line number Diff line number Diff line change 1
- CORE
1
+ KNOWNBUG
2
2
main.c
3
3
-D_ENABLE_CHAIN_ -D_SANITY_CHECK_ --unwind 2
4
4
^EXIT=10$
Original file line number Diff line number Diff line change 1
1
CORE
2
2
main.c
3
3
4
- ^EXIT=0 $
4
+ ^EXIT=6 $
5
5
^SIGNAL=0$
6
- ^VERIFICATION SUCCESSFUL$
6
+ pointer handling for concurrency is unsound
7
7
--
8
8
^warning: ignoring
9
+ --
10
+ The test uses "__CPROVER_ASYNC_1:" and the async-called function foo does
11
+ pointer operations over allocated memory - which is not handled in a sound way
12
+ in CBMC.
Original file line number Diff line number Diff line change @@ -342,6 +342,10 @@ void goto_symex_statet::assignment(
342
342
assert_l2_renaming (lhs);
343
343
assert_l2_renaming (rhs);
344
344
345
+ // see #305 on GitHub for a simple example and possible discussion
346
+ if (is_shared && lhs.type ().id () == ID_pointer)
347
+ throw " pointer handling for concurrency is unsound" ;
348
+
345
349
// for value propagation -- the RHS is L2
346
350
347
351
if (!is_shared && record_value && constant_propagation (rhs))
You can’t perform that action at this time.
0 commit comments