Closed michael-schwarz closed 4 days ago
Seems like a library function declaration has incorrect arguments in Goblint. The annoying thing is that the autotuner doesn't set up our custom backtraces with program locations to easily tell where and what is the cause.
If you just uncomment the autotuner, an exception will be raised that comes with a backtrace, as the function seems to be actually called.
I'm wondering if we should not attempt to be more lenient here and emit a warning and continue analysis, rather than outright refusing to execute with a strange error message that is hard for users to grasp?
I want to improve the exception to replace this very internal one with an user-facing one that includes the function name etc.
Swallowing these with a warning isn't good for us because it's unlikely that we'll find out that we have some typo in a library function declaration. There's no reason Goblint should contain incorrect library function declarations. Depending on what swallowing does, we'd implicitly become unsound (if we don't invalidate the arguments) or very imprecise (if we deeply write/spawn the arguments).
As @reb-ddm has observed, Goblint can currently not run on its benchmark suite anymore for many programs. Consider, e.g.,
./goblint ../bench/coreutils/cp_comb.c
on the current master.We attempted a principled fix, but that turned out to be non-trivial, so we provided a hacky workaround (https://github.com/goblint/analyzer/pull/1485/commits/8173b99f25903d3ea68d7a22a042ec3bbb5a7c94).