Hi Bcg Vfh,
This is an excellent question! Notice that CPAchecker does not claim this is an error, however it prints these lines in bold to make sure you read them.
For data races, we have dedicated components that handle thread creation and termination, while we have a component called PredicateCPA which
is responsible for tracking the symbolic formula that encodes what the current (abstract) program state looks like.
For the creation of this formula, CPAchecker treats
pthread_create and pthread_join as pure functions, i.e., they do not have any side effects like magically changing some memory or the value of global variables.
This is exactly what one would want here, i.e., this is not really a problem.
The reason we highlight these functions where we assume this is to make sure that the user does not accidentally overlook cases in which external functions
are used in the program that do have side effects (e.g. a user-provided external function, CPAchecker could not possibly know how this function behaves,
so we will assume by default that it is a pure function, which might be unsound. Or put in other words, our analysis is only sound when these assumptions
that CPAchecker prints are indeed correct).
Best,
Martin
--
You received this message because you are subscribed to the Google Groups "CPAchecker Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to cpachecker-use...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/cpachecker-users/2a471258-29cf-4c3a-9a3a-17cb0a85d57an%40googlegroups.com.
-- Martin Spiessl Software and Computational Systems Lab LMU Munich, Germany Oettingenstr. 67 Room F012
<?xml version="1.0"?>
<!DOCTYPE benchmark PUBLIC "+//IDN sosy-lab.org//DTD BenchExec benchmark 1.9//EN" "https://www.sosy-lab.org/benchexec/benchmark-2.3.dtd">
<benchmark tool="cpachecker" timelimit="15 min" hardtimelimit="16 min" memlimit="15 GB" cpuCores="8">
<require cpuModel="Intel Xeon E3-1230 v5 @ 3.40 GHz"/>
<resultfiles>**/*.graphml</resultfiles>
<option name="-svcomp23"/>
<option name="-heap">10000M</option>
<option name="-benchmark"/>
<option name="-timelimit">900 s</option>
<rundefinition name="SV-COMP23_no-data-race">
<tasks name="NoDataRace-Main">
<includesfile>../sv-benchmarks/c/NoDataRace-Main.set</includesfile>
<propertyfile>../sv-benchmarks/c/properties/no-data-race.prp</propertyfile>
</tasks>
</rundefinition>
I wanna use this config setting in the form of command line in the shell of Ubuntu, but I don't know whether or not I get the right form, here is how I transform:
-svcomp23 -heap 10000M -benchmark - timelimit 900s <file> in ../sv-benchmarks/c/NoDataRace-Main.set
I don't know how to deal with the propertyfile, should I use -spec or something else?
Looking forward to your reply, I would really appreciate it!
Hi,
Looks alright, and -spec <path_to_prp_file> is the way to go.
If you are interested, inside benchexec, this is translated from the benchmark definition xml into the CPAchecker command line here:
https://github.com/sosy-lab/benchexec/blob/main/benchexec/tools/cpachecker.py#L93
Best,
Martin
To view this discussion on the web visit https://groups.google.com/d/msgid/cpachecker-users/9a8d2329-8493-4e49-aa10-6e253c814015n%40googlegroups.com.