verification revision 1.1
11.1Sdholland$NetBSD: verification,v 1.1 2017/01/13 10:14:58 dholland Exp $ 21.1Sdholland 31.1SdhollandNetBSD Verification Roadmap 41.1Sdholland=========================== 51.1Sdholland 61.1SdhollandThis roadmap covers things that we intend or would like to do pursuant 71.1Sdhollandto verification and quality control. 81.1Sdholland 91.1SdhollandThe following elements, projects, and goals are relatively near-term: 101.1Sdholland 111.1Sdholland 1. Cut down the Coverity backlog 121.1Sdholland 2. Deploy asan/ubsan 131.1Sdholland 3. Deploy clang-static-analyzer 141.1Sdholland 151.1SdhollandThe following elements, projects, and goals are longer-term: 161.1Sdholland 171.1Sdholland 4. mint 181.1Sdholland 5. Database-driven program analyzer 191.1Sdholland 201.1SdhollandThe following elements, projects, and goals are rather blue-sky so far: 211.1Sdholland 221.1Sdholland 6. Use Frama-C to verify fsck_ffs 231.1Sdholland 241.1Sdholland 251.1SdhollandExplanations 261.1Sdholland============ 271.1Sdholland 281.1Sdholland1. Cut down the Coverity backlog 291.1Sdholland 301.1SdhollandCoverity provides us with free analysis reports, which we sometimes 311.1Sdhollandhandle and sometimes don't. Apparently though Linux has a lower number 321.1Sdhollandof Coverity hits per line than we do; that seems fundamentally wrong 331.1Sdhollandand something that should get attention. Most of the problems Coverity 341.1Sdhollandfinds are pretty easily fixed, or are false positives. 351.1Sdholland 361.1Sdholland - As of January 2017 coypu has been working on this. Christos often 371.1Sdholland also fixes these. 381.1Sdholland - There is currently no clear timeframe or release target. 391.1Sdholland - Contact christos for further information. 401.1Sdholland 411.1Sdholland 421.1Sdholland2. Deploy asan/ubsan 431.1Sdholland 441.1SdhollandIt ought to be possible to build any program in NetBSD, or the whole 451.1Sdhollandworld, using asan and/or ubsan. Currently there isn't an easy way to 461.1Sdhollanddo this. We should also do regular test runs with asan and ubsan 471.1Sdhollandengaged. 481.1Sdholland 491.1Sdholland - As of January 2017 nobody is known to be working on this. 501.1Sdholland - There is currently no clear timeframe or release target. 511.1Sdholland - Contact joerg (?) for further information. 521.1Sdholland 531.1Sdholland 541.1Sdholland3. Deploy clang-static-analyzer 551.1Sdholland 561.1SdhollandThere is some makefile support for running clang-static-analyzer, but 571.1Sdhollandit doesn't get done regularly. This should probably get added to the 581.1Sdhollandautobuilds. 591.1Sdholland 601.1Sdholland - As of January 2017 nobody is known to be working on this. 611.1Sdholland - There is currently no clear timeframe or release target. 621.1Sdholland - Contact joerg for further information. 631.1Sdholland 641.1Sdholland 651.1Sdholland4. mint 661.1Sdholland 671.1SdhollandA while back dholland started on a replacement for the existing lint, 681.1Sdhollandsince lint is not really smart enough to be useful and its code is 691.1Sdhollandonly marginally maintainable. The code is in othersrc, but it needs 701.1Sdhollandsome tidying before anyone else tries hacking on it. 711.1Sdholland 721.1Sdholland - As of January 2017 nobody is known to be working on this. 731.1Sdholland - There is currently no clear timeframe or release target. 741.1Sdholland - Responsible: dholland 751.1Sdholland 761.1Sdholland 771.1Sdholland5. Database-driven program analyzer 781.1Sdholland 791.1SdhollandIn the long run we would like to have a program analyzer that can 801.1Sdhollandscale to the whole kernel and can do differential analyses across 811.1Sdhollanddifferent versions. This is a nontrivial project though. 821.1Sdholland 831.1Sdholland - As of January 2017 nobody is known to be working on this. 841.1Sdholland - There is currently no clear timeframe or release target. 851.1Sdholland - Contact: dholland 861.1Sdholland 871.1Sdholland 881.1Sdholland6. Use Frama-C to verify fsck_ffs 891.1Sdholland 901.1SdhollandFrama-C is a framework for doing formal verification of C code using 911.1Sdholland(mostly) precondition/postcondition specs. It is not everything one 921.1Sdhollandnecessarily wants in a verification framework; but on the other hand 931.1Sdhollandit exists and people do use it. 941.1Sdholland 951.1Sdhollandfsck_ffs seems like a good candidate for this because it's 961.1Sdhollandmission-critical and what it needs to do is comparatively well 971.1Sdhollandunderstood even in detail. However, the code may be too messy. 981.1Sdholland 991.1Sdholland - As of January 2017 nobody is known to be working on this. 1001.1Sdholland - There is currently no clear timeframe or release target. 1011.1Sdholland - Contact: dholland 102