Command line and full screen utilities for browsing procfs, a "pseudo" file system dynamically generated by Linux to provide information about the status of entries in its process table.
Go to file
Jim Warner ce70017eb1 top: provide some protection against forking anomalies
This commit will eliminate a very nasty bug associated
with top's forest view mode.  It addresses a potential
SIGSEGV/SIGABRT that was only encountered when another
program (erroneously?) creates a lengthy forking loop.

If the growing list of nested children is sufficiently
fast such that proc_t start_time is duplicated between
children then the sort upon which top relies might not
produce the expected order. That, in turn, could cause
the forest_adds function to initially miss some child.

But that missed child would be caught by forest_create
and eventually would cause our array boundary overrun.
Such overrun occurs when some child of that originally
*missed* child is found and a duplicate add attempted.

In correcting this bug we'll also use this opportunity
to prohibit a borrowed proc_t padding byte (char) from
going negative. If the nesting level exceeded 127, the
effect was an "unnesting" with the snprintf width then
viewed as flag+width also yielding left justification.

Henceforth, we'll limit nesting to 100 with subsequent
children shown as " +  ", not the usual " `- " prefix.

References(s):
https://bugzilla.redhat.com/show_bug.cgi?id=1153642
http://www.freelists.org/post/procps/Bug-in-the-forrest-view,6

Signed-off-by: Jim Warner <james.warner@comcast.net>
2014-10-27 17:18:47 +01:00
contrib miscellaneous: clean up trailing whitespace once again 2013-04-07 18:05:01 +10:00
Documentation miscellaneous: fixed current misspell-check's findings 2013-03-14 12:36:47 +01:00
include Also emulate error_at_line if not present 2014-08-28 13:54:24 +02:00
lib library: fixing stdio.h include position in nsutils.c 2014-08-26 15:24:55 +02:00
man-po docs: adding latest man translations 2014-09-23 13:40:36 +02:00
misc build-sys: rename the 'tools' subdirectory to 'misc' 2012-03-02 21:25:38 +11:00
po docs: Committing new translations 2014-09-15 19:04:47 +02:00
proc 3.3.10 API 2014-09-09 18:35:44 +02:00
ps Also emulate error_at_line if not present 2014-08-28 13:54:24 +02:00
testsuite Update free testsuite 2014-08-19 22:43:33 +10:00
top top: provide some protection against forking anomalies 2014-10-27 17:18:47 +01:00
.gitignore ignore config.cache 2014-08-28 19:16:00 +02:00
AUTHORS Add -p|--pretty option to uptime(1) for pretty output. 2012-02-22 10:35:12 -05:00
autogen.sh Fix a remaining util-linux word in autogen 2012-02-26 08:39:16 +11:00
ChangeLog other: tell in ChangeLog where to see changes 2012-01-13 22:42:38 +01:00
configure.ac configure.ac: re-enabling the ALL_LINGUAS related checks 2014-09-15 15:30:08 +02:00
COPYING license: update FSF addresses 2012-03-04 08:04:24 +11:00
COPYING.LIB miscellaneous: clean up trailing whitespace once again 2013-04-07 18:05:01 +10:00
create-man-pot.sh docs: with systemd now in library, remember openproc.3 2014-07-18 20:49:57 +02:00
free.1 docs: free.1 now follows the latest used/cache changes 2014-07-31 16:46:54 +02:00
free.c free: fixing the layout broken with the -w introduction 2014-08-20 13:21:22 +02:00
kill.1 docs: fix manual page warnings 2012-04-16 12:55:53 +02:00
Makefile.am build-sys: removing translated mans from Makefile.am 2014-09-15 19:55:13 +02:00
NEWS NEWS: adding enhanced ANSI support in watch 2014-09-09 18:13:23 +02:00
pgrep.1 pgrep: introduce support for namespaces 2013-04-16 15:05:31 -04:00
pgrep.c Add -a/--list-full to --help output. 2014-08-19 21:05:30 +02:00
pidof.1 pidof: support for omitted %PPID and additional separators 2013-10-14 15:38:33 +02:00
pidof.c Update help files 2014-02-02 18:13:01 +11:00
pkill.1 procps 010114 2002-02-01 22:47:29 +00:00
pmap.1 pmap: Including -p in the man page 2013-11-26 13:45:22 +01:00
pmap.c pmap: avoid depending on an uninitialised value. 2014-08-19 18:59:28 +02:00
pwdx.1 docs: fix manual page warnings 2012-04-16 12:55:53 +02:00
pwdx.c pwdx: fails when run in a nonexistent locale 2013-08-05 20:52:22 +10:00
README Manpage translations in Makefiles 2014-06-28 23:38:13 +10:00
skill.1 skill: support namespaces 2013-04-18 13:59:44 -04:00
skill.c Minor i18n fixes 2014-03-03 21:58:56 +11:00
slabtop.1 docs: Fix typos in slabtop.1, sysctl.8 and uptime.1 2014-09-16 19:35:28 +02:00
slabtop.c Minor i18n fixes 2014-03-03 21:58:56 +11:00
snice.1 procps 010114 2002-02-01 22:47:29 +00:00
sysctl.8 docs: Fix typos in slabtop.1, sysctl.8 and uptime.1 2014-09-16 19:35:28 +02:00
sysctl.c sysctl: finalizing the GLOB_* flags check 2014-08-28 15:48:29 +02:00
sysctl.conf docs: remove tcp_default_win_scale from sysctl.conf sample 2012-01-24 22:34:12 +01:00
sysctl.conf.5 docs: Fix typos in sysctl.8 and sysctl.conf.5 2014-09-15 16:24:59 +02:00
tload.1 docs: fix manual page warnings 2012-04-16 12:55:53 +02:00
tload.c tload: fix lockup 2014-08-27 18:59:27 +02:00
translate-man.sh Fixed translate-man.sh for no top ps 2014-05-28 20:12:33 +10:00
uptime.1 docs: Fix typos in slabtop.1, sysctl.8 and uptime.1 2014-09-16 19:35:28 +02:00
uptime.c Merge commit 'refs/merge-requests/2' of git://gitorious.org/procps/procps into merge-requests/2 2013-09-11 20:50:48 +10:00
vmstat.8 library: reverting tmpfs subtraction from cached (18-FEB-2014) 2014-04-30 13:59:34 +02:00
vmstat.c Use <dirent.h> instead of <sys/dir.h> 2014-08-26 16:01:57 +02:00
w.1 sysctl, w: miscelaneous usage/man fixes 2013-07-19 14:50:02 +02:00
w.c Update options to single strings 2013-10-11 10:07:10 +11:00
watch.1 watch: typo in man (closign->closing) 2014-09-12 14:22:48 +02:00
watch.c watch: avoid ansi manipulations in non-ansi mode 2014-09-08 18:28:08 +02:00

COMPATIBILITY

    This code is intended for use with Linux 2.6.xx, 3.x and
    hopefully all future kernels.

INSTALLATION

    If you are using git version of the project you need extra step.

    ./autogen.sh

    After that, and everyone using .tar.xz version of procps-ng, can
    do normal build.  Read './configure --help' to select options for
    your needs.

    ./configure
    make
    make install

    If you have DejaGNU installed you can run optional test suite.

    make check

HOW TO CONTRIBUTE

    See Documentation/BUGS file.

PACKAGING

    If you are a downstream maintainer (packager) for a Linux
    distribution, please avoid causing troubles.  This section
    applies to you.

    Avoid maintaining distribution specific patches.  Send your
    patches to upstream, where they are at least reviewed, if not
    included.

    Please forward bug reports. If your bug database is public and
    busy enough to bother with, please make this known.  Follow
    Debian's lead in making the bug database easy to comment on via
    email without need for an account.

    For normal packages, ensure that you do not add debugging flags
    to the CFLAGS variable.

TRANSLATING MAN PAGES
    There is a three-step process for translating man pages. Most
    of the work happens in the man-po directory.

    make -C man-po translate-templates
    Creates the translation templates (the .pot files) for translators
    to use as a base. These, along with the tar file, should be sent
    to the tp-coorindator before release.

    make get-trans
    rsyncs the latest translated (.po) files for both the programs and
    man pages.

    make -C man-po translate-mans
    This is also called in the dist-hook and is where the translation
    magic happens. Take the original man page, the relevant .po file
    and produce a translated man page in that language.
    All of the man pages generated are found in
    man-po/(LANG)/man(SECTION)/
UPSTREAM & BUG REPORTS

    procps-ng <procps@freelists.org>