Date: Mon, 2 Feb 2009 21:47:22 +0100 From: Max Laier <max@love2party.net> To: freebsd-hackers@freebsd.org Cc: Christoph Mallon <christoph.mallon@gmx.de>, FreeBSD Current <freebsd-current@freebsd.org> Subject: Re: write-only variables in src/sys/ - possible bugs Message-ID: <200902022147.22862.max@love2party.net> In-Reply-To: <49874CA8.5090605@gmx.de> References: <49874CA8.5090605@gmx.de>
next in thread | previous in thread | raw e-mail | index | archive | help
On Monday 02 February 2009 20:42:32 Christoph Mallon wrote: > Hi, > > I compiled a list of all local variables in src/sys/ (r188000), which > are only written to, but never read. This is more than the GCC warning, > which only complains about variables, which are only declared (and maybe > initialised) and not used otherwise. In contrast this list contains > variables with the following usage pattern: > > int w = 42; // GCC warns about this ... > int x; // ... but not this > x = 23; > x++; > return 0; > > The list contains about 700 entries. About three dozen concern variables > named 'error'. Here's one *example* from the list: > > sys/dev/kbdmux/kbdmux.c:1304 > > In the function kbdmux_modevent() the variable 'error' is assigned > values eight times, but at the end of the function there is just a > return 0; and the variable is never read. Probably the value should be > returned. > > You can find the list here: > http://tron.homeunix.org/unread_variables.log > > The list was generated by cparser, a C99 compiler, which uses libFIRM > for optimisation and code generation (lang/cparser in the ports). > > > A small disclaimer: There might be some false positives due to errors > which are caused by HEAD sources in combination with my installed 7.x > headers plus a hacked up build process. Also some warnings are the > result from variables, which are only used in debug macros, so td = > curthread; KASSERT(td != NULL); provokes a warning (I consider this bad > style). Nonetheless the number of false positives should be low. If > there is interest, then I can compile a "proper" list. Are you interested in false positive reports? If so, I think sys/contrib/pf/net/pf.c:2931 is one. Seems cparser is confused by the union in struct assignment, maybe? Or it suffers from the similar issue with switch/case-statements as gcc. saddr is read from in all but the default case. -- /"\ Best regards, | mlaier@freebsd.org \ / Max Laier | ICQ #67774661 X http://pf4freebsd.love2party.net/ | mlaier@EFnet / \ ASCII Ribbon Campaign | Against HTML Mail and News
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200902022147.22862.max>