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