#205 says:
... a build with make -f lii6ll.gmk VARIETY=cool CFLAGSDEBUG='-O0 -g3 -DCHECKLEVEL=CheckLevelDEEP' testci currently fails in several tests.
and also:
We should build and run a deep checking build on at least one platform.
Several steps are needed:
- Introduce an easier way to build and test with deep checking.
- Add testing with deep checking to CI so that we catch problems early.
- Analyse and fix current test failures with deep checking.
I have found false positives in deep checking errors have been introduced in various changes:
- branch/2016-04-16/trace-gens finishes the ring of generations but goes on to use the arena with an invalid trace.
- branch/2020-08-31/walk synthesizes a trace that fails to pass TraceCheck because it has no generations.
- Deep checking has an infinite recursion in ArenaCheck via ShieldCheck, which checks some segments, which check their addresses via ChunkOfAddr, which checks the arena with ArenaCheck. I haven't discovered when this was introduced yet.
- ArenaRootsWalk synthesizes an invalid trace in TraceStateINIT that is flipped. ArenaRootsWalk dates back to 1999 so it was introduced by some other change. I haven't discovered when yet.
There may be more. I have yet to run the entire test suite.
So far I have no evidence that any of these would cause failures in production, but deep checking is a valuable tool when, e.g. working on subtle parts of the MPS like the shield, and we ought to fix it up.
#205 says:
and also:
Several steps are needed:
I have found false positives in deep checking errors have been introduced in various changes:
There may be more. I have yet to run the entire test suite.
So far I have no evidence that any of these would cause failures in production, but deep checking is a valuable tool when, e.g. working on subtle parts of the MPS like the shield, and we ought to fix it up.