On Thu, Jun 16, 2011 at 04:20:06PM +0100, Mindaugas Rasiukevicius wrote: > I have few concerns: > > - If we enable DIAGNOSTIC, then we should also enable DEBUG, as it also > covers many relevant diagnostic checks.
Historically, DIAGNOSTIC was enabled and DEBUG was not. Usually (but maybe my view is wrong) DIAGNOSTIC enables debug/consistency checks while DEBUG enables debug printfs. DEBUG can make the kernel way more noisy, and is not necesserely usefull to detect a problem (which is what DIAGNOSTIC is about). KASSERT() & friend is enabled by DIAGNOSTIC, this is mostly what I'm concerned about. > > - Alternatively, it should be clearly defined what goes under DEBUG, > i.e. what is considered a "heavier check". I think code diverged in > a way that the difference between DEBUG and DIAGNOSTIC is small. > > - Since performance is degraded and -current users concerned about it > will need to compile their own kernels anyway - I believe LOCKDEBUG > should be enabled as well. Perhaps LOCKDEBUG should become a part > of DEBUG - it is at least clearly a "heavier check". :) I'm not in favor of LOCKDEBUG by default, for reasons already stated here. > > - There MUST be a very clear indication to users - a warning in a visible > place that the kernel has diagnostic options enabled, and performance > is significantly degraded. we already have a /etc/motd which contains warnings on HEAD. this could be added here. > > - Obviously, defined policy/responsibility to disable these options for > release kernels. In fact, if we go this way - then options should be > removed from all MD kernel configs and managed in MI src/sys/conf/std. I'm not sure this is doable: some ports may want to keep DIAGNOSTIC in release branches, while others may want to exclude DIAGNOSTIC from some kernels on HEAD (for example because of space constraints). > > > I know that DIAGNOSTIC was commented out so that someone could install > > a HEAD snapshot and run benchmarks out of the box, but as a side effect > > a lot of but are left hidden and only show up when someone tries > > to run a Xen kernel (which still have DIAGNOSTIC). See kern/45051 for > > another one. > > Many developers do use these options (e.g. I always enable all options > when developing something), but some bugs just occur rarely. For example, > at least few developers were running diagnostic kernels, but did not get > the assert reported by drochner@ (also, many developers simply do not > upgrade their kernels that often). PR/45051 is also a rare case - I have > added that assert in pool(9) subsystem a year ago, exactly for a reason to > get these kind of reports. Surely many had run diagnostic kernels in a > year time, but it might need specific workload to trigger. Actually lots of DIAGNOSTIC checks firing on Xen, also fire on GENERIC when built with DIAGNOSTIC ... So I guess not so many peoples runs DIAGNOSTIC kernels ... -- Manuel Bouyer <bou...@antioche.eu.org> NetBSD: 26 ans d'experience feront toujours la difference --