Skip to content

Commit 69501c2

Browse files
committed
Add --reachability-slice option warning
1 parent 90d79fd commit 69501c2

File tree

3 files changed

+15
-0
lines changed

3 files changed

+15
-0
lines changed

doc/cprover-manual/unsound_options.md

+4
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

+5
Original file line numberDiff line numberDiff line change
@@ -825,6 +825,11 @@ bool cbmc_parse_optionst::process_goto_program(
825825

826826
if(options.get_bool_option("reachability-slice"))
827827
{
828+
log.warning() << "**** WARNING: Unsound option `--reachability-slice'"
829+
<< messaget::eom;
830+
log.warning()
831+
<< "Please look at documentation file `unsound_options.md' for more info"
832+
<< messaget::eom;
828833
log.status() << "Performing a reachability slice" << messaget::eom;
829834
if(options.is_set("property"))
830835
{

src/goto-instrument/goto_instrument_parse_options.cpp

+6
Original file line numberDiff line numberDiff line change
@@ -1711,6 +1711,12 @@ void goto_instrument_parse_optionst::instrument_goto_program()
17111711
{
17121712
do_indirect_call_and_rtti_removal();
17131713

1714+
log.warning() << "**** WARNING: Unsound option `--reachability-slice'"
1715+
<< messaget::eom;
1716+
log.warning()
1717+
<< "Please look at documentation file `unsound_options.md' for more info"
1718+
<< messaget::eom;
1719+
17141720
log.status() << "Performing a reachability slice" << messaget::eom;
17151721

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

0 commit comments

Comments
 (0)