Skip to content

Witness generation crashes in combine_env with abortUnless analysis #1453

@sim642

Description

@sim642

Together with #1450, @karoliineh found SV-COMP no-overflow tasks where the abortUnless analysis from #875 does help us. Without it, we learn nothing from assume_abort_if_not conditions which are often used to assume bounds on variables that are key to proving overflow-freedom.

We did some quick benchmarks and it could be worth adding abortUnless to our svcomp conf, however it causes a lot of Not_found crashes from witness generation.
Specifically during combine_env:

let combine_env ctx lval fexp f args fc au f_ask =
if au then (
(* Assert before combine_assign, so if variables in `arg` are assigned to, asserting doesn't unsoundly yield bot *)
(* See test 62/03 *)
match args with
| [arg] -> ctx.emit (Events.Assert arg)
| _ -> ()
);
false

There's probably some issue with emitting events from combine_env, but before combine_assign.

Metadata

Metadata

Assignees

Labels

bugprecisionsv-compSV-COMP (analyses, results), witnesses

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions