The code -----------------------
if (P_MAXPFLGS < f) { w->endpflg = i; continue; }
The background -----------------
The enum P_MAXPFLGS is strictly a fencepost and can *never* appear in
the arrays pflgsall or procflgs. Thus it (39th element) cannot be used
in referencing Fieldstab.
However, two enums of higher value (X_XON=40 and X_XOF=41) *can* appear
in those arrays. But the test against the fencepost ensures that those
two enums are *never* used in referencing Fieldstab.
When the analyzer sees the conditional using '<' and not '<='
it reports a false positive.
The source was changed to accommodate the tool's deficiency
Jim Warner [Tue, 6 Dec 2011 18:03:15 +0000 (12:03 -0600)]
top: forest view segmentation fault, the final solution
With forest view mode under procps-ng-3.3.0, top would catch
a SEGV and exit. The problem was thought to be related to
some linux version 3 anamoly.
In procps-ng-3.3.1, top was protected from abnormal exit and
would display the offending processes with the special orphan
notation '?', instead of the usual artwork.
As it turns out, the problem wasn't with linux and could
surface under a 2.6.xx kernel, The cause was an occasional
abnormal ordering of tid/tgid/ppid which went unresolved
due to a progressive proc table scan in the recursive
function forest_add().
By default the proc table scan now restarts at the beginning.
However, a #define TREE_ONEPASS is provided should one wish
to restore the 3.3.1 behavior with its reduced overhead.
Jim Warner [Tue, 6 Dec 2011 00:57:46 +0000 (18:57 -0600)]
top: correct an obscure column highlighting buglet
An anomaly would surface whenever the sort column was
made non-display under fields management.
The scroll message would report incorrect x coordinates
and the 'x' toggle would produce an unintentional
horizontal scroll.
This patch forces column highlighting off whenever field
changes are made (as is done for horizontal scrolling).
It also inactivates the 'x' toggle whenever the sort
column is not visible.
Jim Warner [Thu, 17 Nov 2011 16:31:07 +0000 (10:31 -0600)]
top: improve the most heavily used library interface
In the procs_refresh() function:
. the proctable scan was simplified
. memory allocation is now much more efficient
. window ppts will usually not now need xrealloc
Jim Warner [Fri, 2 Dec 2011 09:47:19 +0000 (03:47 -0600)]
library: provide for huge cmdlines, like old libproc
The CodingStyle document suggests programs should allow for
cmdlines of at least 128k. Only the ps program can display
such a cmdline, and only with multiple -w switches.
The library function file2strvec can essentially return
a cmdline of unlimited length. However, the library function
fill_cmdline_cvt used an arbitrary upper limit of 2048 for
buffers automatically allocated on the stack.
This patch raises the fill_cmdline_cvt upper limit to 128k via
dymaically acquired utility buffers ensured by the openproc
function.
It also makes indentation consistent in the openproc function.
Craig Small [Sun, 4 Dec 2011 11:08:23 +0000 (22:08 +1100)]
slabtop check has optional spaces at start of line
There is a race condition between expect script consuming the output
from slabtop. There were a sequences of lines that looked like
^\d+ ... \s*
with the last \s* consuming the first space on the start of the line.
However if the line takes too long to print, then expect stops there and
the space at the start of the subsquent line does not match.
Sami Kerola [Sat, 3 Dec 2011 13:03:48 +0000 (14:03 +0100)]
build-sys: make DEJATOOL definition uncondictional
Fix to ./autogen.sh error bellow.
/usr/share/automake-1.11/am/dejagnu.am: DEJATOOL was already defined in condition LINUX, which is included in condition TRUE ...
testsuite/Makefile.am:6: ... `DEJATOOL' previously defined here
Reference: http://www.freelists.org/post/procps/procpsng-331-nearly-there,5 Reported-by: Jim Warner <james.warner@comcast.net> Signed-off-by: Sami Kerola <kerolasa@iki.fi>
Craig Small [Fri, 2 Dec 2011 13:32:14 +0000 (00:32 +1100)]
Minor test fixes for non-linux
procps works well on Linux, on other arches there are some strange
differences due to their emulation of procfs which is not 100%
Disabling checks for non-linux until that can be sorted out.
Craig Small [Fri, 2 Dec 2011 11:36:38 +0000 (22:36 +1100)]
slabtop prints plain ASCII in once mode
Using ncurses initscr/endwin clears the screen for xterm/etc it
now prints raw text using printf
Bug-Debian: http://bugs.debian.org/503089
Author: Craig Small <csmall@debian.org>
Craig Small [Sun, 27 Nov 2011 11:56:13 +0000 (22:56 +1100)]
Use real name in NAME section for top manpage
Things like lexgrog and whatis and apropos need to look a the line in
the NAME section in the manpage. There used to be a macro there which
they don't understand.
lexgrog top.1
top.1: parse failed
Craig Small [Sun, 27 Nov 2011 11:47:17 +0000 (22:47 +1100)]
vmstat -p <part> works and updated version to 3.3.1
configure.ac now set to 3.3.1
vmstat -p has not worked for a long time, this applies Debian patch
vmstat_part_format, the details:
Author: Daniel Novotny
Description: The contents of /proc/diskstats have changed since 2.6.25
Changed PATH_MAX to 32 because its missing on hurd
Bug-Redhat: https://bugzilla.redhat.com/show_bug.cgi?id=485243
Bug-Debian: http://bugs.debian.org/588677
Last-Update: 2010-11-17
Jim Warner [Fri, 28 Oct 2011 12:30:48 +0000 (07:30 -0500)]
build-sys: ensure consistent procps-ng ncurses
. 1 program uses curses (top)
. 2 programs use ncurses (slabtop, watch)
. all 3 include non-wide <curses.h> or <ncurses.h>
. those 3 do not currently need wide support
. but anticipating nls, we link against libncursesw
This patch ensures an environment consistent with current
and future ncurses needs.
Craig Small [Wed, 26 Oct 2011 11:31:48 +0000 (22:31 +1100)]
Some tweaks for top
tweaked signal setup valgrind complaint as nls
some input error messages made more descriptive
eliminated audible escape a from all error messa
added include of proc readproc.h to top.h
optimization for show_special function
remove unnecessary variables clang analyze
Craig Small [Fri, 7 Oct 2011 03:35:16 +0000 (14:35 +1100)]
Use 7 cpu numbers not 4 for Hertz Hack
For the small number of devices that we cannot get Hertz out of ELF
notes but the cpu numbers make sense (ie not kFreeBSD) there is a hack
by using the CPU numbers. The problem is there was 4 numbers, now there
are 7. This fixes the hack by adding all 7 to get a more correct number.
This is from Debian patch sysinfo_7_numbers
Bug-Debian: http://bugs.debian.org/460331
Craig Small [Thu, 6 Oct 2011 23:22:24 +0000 (10:22 +1100)]
Fix Hertz calculation for FreeBSD
FreeBSD has no good way of finding the Hertz value. ELF notes don't
work, you can't find it in a function and even asm/params.h does
not have it. Lucky for us, it is always 100.
Based upon Debian patch patch sysinfo_kfreebsd_hertz by Petr Salinger
Bug-Debian: http://bugs.debian.org/460331
Caution, 460331 has lots of overlapping bugs all around the Hertz
problem across many arches.
Craig Small [Thu, 6 Oct 2011 23:08:42 +0000 (10:08 +1100)]
Elf note AT_CLKTCK is only found on Linux
Suppresses a message about elf notes not found on non-Linux systems.
kFreeBSD systems, for one, don't have this so the message appears
every time you run a procps program otherwise.
Based upon Debian patch sysinfo_elfnote by Petr Salinger
Bug-Debian: http://bugs.debian.org/378157
Sami Kerola [Mon, 26 Sep 2011 20:27:34 +0000 (22:27 +0200)]
build-sys: sensible errors when autogen.sh requirements are is missing
<quote="Jim">
I tested the build on several "new" linux installs that didn't yet have any
development tools beyond gcc. On those systems the following error messages
were received:
./autogen.sh: line 46: libtoolize: command not found
./autogen.sh: line 47: test: =: unary operator expected
</quote>
This commit also removes few unnecessary empty lines, and makes all shell
variables to be wrote in caps & quoted properly.
Cc: Jim Warner <james.warner@comcast.net> Signed-off-by: Sami Kerola <kerolasa@iki.fi>
Signed-off-by: Jim Warner <james.warner@comcast.net> Signed-off-by: Craig Small <csmall-procps@enc.com.au> Signed-off-by: Sami Kerola <kerolasa@iki.fi>
Jim Warner [Thu, 22 Sep 2011 09:10:05 +0000 (04:10 -0500)]
build-sys: use AC_HEADER_STDBOOL in configure.ac
The AC_CHECK_HEADER_STDBOOL, which was used earlier, requires
autoconf 2.68 (2010-09-22), without great functional benefit in
comparison AC_HEADER_STDBOOL. The only thing newer macro does is
a problem for many user who has older autoconf in use.
Craig Small [Mon, 12 Sep 2011 12:18:23 +0000 (22:18 +1000)]
added ps etimes, miscellaneous top enhancements
ps program
. etimes added for ELAPSED expressed in seconds
. time_t used in place of former unsigned long
top program
. corrected scroll message bug when 'x' toggle on
. fixed forest view potential missing libflags bug
. improved 'k' default signal invocation logic
. enhanced logic for %CPU maximums displayed
. made signal handling more robust and efficient
Craig Small [Wed, 17 Aug 2011 11:01:35 +0000 (21:01 +1000)]
added tgid support plus miscellaneous cleanup
ps
. added tgid support
. made process/task naming consistent
top
. added tgid support
. standardized pid related width logic
documents
. added tgid to ps & top man documents
library
. fixed OOMEM_ENABLE readtask bug
. corrected header typo for tgid
Craig Small [Wed, 10 Aug 2011 21:42:14 +0000 (07:42 +1000)]
refined library i/f and improved performance
Library changes
readproc
. added readeither to more efficiently
fill both process and thread proc_t
. added readproctab3, uses readeither
. included task path support in:
fill_cgroup_cvt, fill_cmdline_cvt,
read_unvectored
. QUICK_THREADS #define allows copying
process info vs. repeatedly reading
. simple_nexttid no longer values ppid
. path var made non-static in readtask
. documented 'proc_data_t' in .h file
. tweaked some c comments & formatting
library.map
. added new readeither, readproctab3
Program changes
ps
. exploits readproctab3 where possible
. improved args/comm compliance
top
. exploits readeither
Craig Small [Mon, 1 Aug 2011 11:28:46 +0000 (21:28 +1000)]
supgid/supgrp support, improved library interface
Library changes
readproc
. added support for supplementary groups
. eliminated 2 potential mem leak sources
. shortcut used for multi-threaded str
vectors & ptrs was obsoleted
. freeing of proc_t related dynamic
memory now rests with the library
. standardized/normalized many c comments
sysinfo
. corrected note regarding glibc & cpuinfo
library.map
. made the visible freeproc accessable
Program changes
pmap
. initialized buffer for new readproc i/f
. eliminated now obsolete free() call
ps
. added width aware supgrp support
. initialized buffers for new readproc i/f
. eliminated now obsolete free() calls
top
. added supgrp support as variable width
. eliminated now obsolete free() calls
. expoilted library freeproc function
. corrected -h|v args text & spacing
. updated some c comments
Documentation changes
ps.1
. added supgid and supgrp
top.1
. added supgid and supgrp
. addition of above required renumbering
many fields in section 3a. DESCRIPTIONS
Jim Warner [Thu, 23 Jun 2011 13:45:09 +0000 (15:45 +0200)]
miscellaneous top program/man document cleanup
Program changes
. corrected eolcap handling if EQUCOLHDRYES defined
. added missing terminator for OOMEM_ENABLE comment
. tightened logic in display_fields
. eliminated some warnings via type or cast
. updated miscellaneous source comments
Man Document changes
. corrected/expanded CGROUPS narrative
. standardized/normalized PPID narrative
Sami Kerola [Sun, 5 Jun 2011 10:17:14 +0000 (12:17 +0200)]
build-sys: add contrib directory
Move files that are not compiled to <build-root>/contrib
directory. The files consist two unmaintained commands,
alternative ps & w, and and broken utmp examination / printing
utility. The dummy.c became unnecessary at the point when
autotools where re-introduced.