Feature #11444
closedUpdate CPAchecker SMG
0%
Updated by Evgeny Novikov over 2 years ago
- Blocks Feature #11459: Improve support for Linux 5.17 added
Updated by Anton Vasilyev over 2 years ago
SMGCPA will provide ability to specify names of functions with behavior of mem*() functions to solve problem with definitions in new versions of the Linux kernel (for instance, you can see at include/linux/fortify-string.h of Linux 5.17). Estimation time for implementation is 2 days.
Merge development branch to trunk of CPAChecker is temporary unavailable.
Updated by Anton Vasilyev over 2 years ago
Problem with definitions of mem*() functions is solved with new configuration options for SMGCPA:
cpa.smg.allocaFunctions = {"__builtin_alloca"}
cpa.smg.memcpyFunctions = {"memcpy"}
cpa.smg.memsetFunctions = {"memset"}
with combination of previous options:
cpa.smg.memoryAllocationFunctions = {"malloc", "__kmalloc", "kmalloc", "realloc"}
cpa.smg.arrayAllocationFunctions = {"calloc"}
cpa.smg.externalAllocationFunction = {"ext_allocation"}
cpa.smg.deallocationFunctions = {"free"}
cpa.smg.zeroingMemoryAllocation = {"calloc", "kzalloc"}
Updated by Evgeny Novikov over 2 years ago
- Status changed from New to Resolved
Preliminary tests demonstrated that it works! So I updated CPAchecker SMG and added necessary models in the same branch support-linux-5.17 as for blocked issue #11459. Let's see on testing results.
Updated by Evgeny Novikov over 2 years ago
- Blocks deleted (Feature #11459: Improve support for Linux 5.17)
Updated by Evgeny Novikov over 2 years ago
- Status changed from Resolved to Open
Updated by Evgeny Novikov over 2 years ago
- Status changed from Open to Resolved
After Anton optimized CPAchecker, I updated it in branch update-cpachecker and launched CI tests as well as extended testing on ~2000 drivers of Linux 5.5/5.17. Let's see on results.
Updated by Evgeny Novikov over 2 years ago
- Status changed from Resolved to Closed
CI did not demonstrate any noticeable changes except for some small speedup, but SMG related verification tasks constitute a relatively small share of all verification tasks there.
There were such changes at verification of ~2000 drivers of Linux 5.5:- The overall CPU time consumption almost did not change. BTW, ~70% of it comprises timeouts while there are a lot of timeouts still (448 instead of former 462).
- 12 timeouts became safes and 3 timeouts became unsafes. It took much CPU time (near the limit) to find those safes and unsafes.
Almost the same changes happened at verification of ~2000 drivers of Linux 5.17-rc1. The only important difference that there are more timeouts by some unknown reason (596 and 610 before and after update of CPAchecker correspondingly) and the overall CPU time consumption is ~1.2 times more in comparison with Linux 5.5. But that's another story.
I merged branch update-cpachecker to master in d18298301.