Skip to content

Commit ed99acc

Browse files
committed
Add --reachability-slice option warning
1 parent 707a21c commit ed99acc

File tree

3 files changed

+15
-0
lines changed

3 files changed

+15
-0
lines changed

doc/cprover-manual/unsound_options.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,10 @@ have been reported to be unsound:
77
In particular, `--full-slice` appears to lead to spurious counter examples,
88
because values that get assigned by a function whose body gets sliced out are
99
no longer present in the trace, but still result in flipped verification results.
10+
* `--reachability-slice` has been reported unsound at least once, in issue [cbmc#6394](https://github.com/diffblue/cbmc/issues/6394).
11+
The state of this option these days is that this flag *should not* contain significant
12+
soundness bugs, but it has a number of potential issues that pop up everyone now and then,
13+
which renders it unsuitable for production use.
1014

1115
`cbmc` and `goto-instrument` have also been modified to warn that options used
1216
are unsound as part of their output. An example of how that output looks is shown

src/cbmc/cbmc_parse_options.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -831,6 +831,11 @@ bool cbmc_parse_optionst::process_goto_program(
831831

832832
if(options.get_bool_option("reachability-slice"))
833833
{
834+
log.warning() << "**** WARNING: Unsound option `--reachability-slice'"
835+
<< messaget::eom;
836+
log.warning()
837+
<< "Please look at documentation file `unsound_options.md' for more info"
838+
<< messaget::eom;
834839
log.status() << "Performing a reachability slice" << messaget::eom;
835840
if(options.is_set("property"))
836841
{

src/goto-instrument/goto_instrument_parse_options.cpp

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1623,6 +1623,12 @@ void goto_instrument_parse_optionst::instrument_goto_program()
16231623
{
16241624
do_indirect_call_and_rtti_removal();
16251625

1626+
log.warning() << "**** WARNING: Unsound option `--reachability-slice'"
1627+
<< messaget::eom;
1628+
log.warning()
1629+
<< "Please look at documentation file `unsound_options.md' for more info"
1630+
<< messaget::eom;
1631+
16261632
log.status() << "Performing a reachability slice" << messaget::eom;
16271633

16281634
// reachability_slicer requires that the model has unique location numbers:

0 commit comments

Comments
 (0)