]> granicus.if.org Git - procps-ng/log
procps-ng
16 months agowatch: Pass through bell
Craig Small [Tue, 17 Jan 2023 05:59:00 +0000 (16:59 +1100)]
watch: Pass through bell

Based upon merge request 104, closes #174

References:
 procps-ng/procps!104
 procps-ng/procps#174

16 months agodocs: Minor manpage fixes
Craig Small [Mon, 16 Jan 2023 07:29:50 +0000 (18:29 +1100)]
docs: Minor manpage fixes

References:
 procps-ng/procps#230

16 months agodoc: free.1 total memory doesn't include reserved memory
Craig Small [Mon, 16 Jan 2023 06:29:36 +0000 (17:29 +1100)]
doc: free.1 total memory doesn't include reserved memory

Updated the definition of total, because its not *all* of
the installed memory but close to it.

References:
 procps-ng/procps#247

Signed-off-by: Craig Small <csmall@dropbear.xyz>
16 months agotestsuite: Test for uptime --pretty
Craig Small [Mon, 16 Jan 2023 06:22:26 +0000 (17:22 +1100)]
testsuite: Test for uptime --pretty

References:
 procps-ng/procps#263

16 months agodocs: Update drs description in ps.1 from top.1
Leonard Janis Robert König [Sun, 15 Jan 2023 04:37:49 +0000 (15:37 +1100)]
docs: Update drs description in ps.1 from top.1

References:
 procps-ng/procps!156

16 months agomisc: Add NEWS for w --pids
Craig Small [Sun, 15 Jan 2023 04:19:38 +0000 (15:19 +1100)]
misc: Add NEWS for w --pids

References:
 commit 5baf1e6226f9aa051b5570b655ed49b73ae10061
 procps-ng/procps!159

16 months agow: add --pids option to display the pid of the login and best processes.
Jan Pazdziora [Wed, 22 Jun 2022 10:07:55 +0000 (12:07 +0200)]
w: add --pids option to display the pid of the login and best processes.

16 months agomisc: Add NEWS for pgrep -H
Craig Small [Sun, 15 Jan 2023 04:11:02 +0000 (15:11 +1100)]
misc: Add NEWS for pgrep -H

References:
 commit 866abacf8805a74fb7c59cae1f64963e0a540b14
 procps-ng/procps!165

16 months agopgrep: Support matching on the presence of a userspace signal handler
Chris Down [Tue, 1 Nov 2022 00:17:21 +0000 (00:17 +0000)]
pgrep: Support matching on the presence of a userspace signal handler

In production we've had several incidents over the years where a process
has a signal handler registered for SIGHUP or one of the SIGUSR signals
which can be used to signal a request to reload configs, rotate log
files, and the like. While this may seem harmless enough, what we've
seen happen repeatedly is something like the following:

1. A process is using SIGHUP/SIGUSR[12] to request some
   application-handled state change -- reloading configs, rotating a log
   file, etc;
2. This kind of request is deprecated and removed, so the signal handler
   is removed. However, a site where the signal might be sent from is
   missed (often logrotate or a service manager);
3. Because the default disposition of these signals is terminal, sooner
   or later these applications are going to be sent SIGHUP or similar
   and end up unexpectedly killed.

I know for a fact that we're not the only organisation experiencing
this: in general, signal use is pretty tricky to reason about and safely
remove because of the fairly aggressive SIG_DFL behaviour for some
common signals, especially for SIGHUP which has a particularly ambiguous
meaning. Especially in a large, highly interconnected codebase,
reasoning about signal interactions between system configuration and
applications can be highly complex, and it's inevitable that on occasion
a callsite will be missed.

In some cases the right call to avoid this will be to migrate services
towards other forms of IPC for this purpose, but inevitably there will
be some services which must continue using signals, so we need a safe
way to support them.

This patch adds support for the -H/--require-handler flag, which matches
on processes with a userspace handler present for the signal being sent.

With this flag we can enforce that all SIGHUP reload cases and SIGUSR
equivalents use --require-handler. This effectively mitigates the case
we've seen time and time again where SIGHUP is used to rotate log files
or reload configs, but the sending site is mistakenly left present after
the removal of signal handler, resulting in unintended termination of
the process.

Signed-off-by: Chris Down <chris@chrisdown.name>
16 months agotop: include the '5' toggle on the primary help screen
Jim Warner [Wed, 11 Jan 2023 06:00:00 +0000 (00:00 -0600)]
top: include the '5' toggle on the primary help screen

When the p/e-cores support (via the '5' key) was added
in the patch referenced below, I intentionally omitted
that key from the top primary help screen. This seemed
appropriate since it only applied to select Intel cpus
and, besides, that screen was getting kind of crowded.

[ it remains an objective to fit on a 80x24 terminal ]

Upon reflection, I found a way to squeeze it into that
help screen and have decided to included it. Hopefully
its presence will encourage use of top's new provision
on any Intel platforms that distinguish between cores.

Reference(s):
Sep, 2022 - exploit p/e-cores provision
commit 00f5c74b1bc583d37315fa094c6f50cef7961c0c

Signed-off-by: Jim Warner <james.warner@comcast.net>
16 months agotop: lessen overhead when 'bottom window' isn't active
Jim Warner [Wed, 11 Jan 2023 06:00:00 +0000 (00:00 -0600)]
top: lessen overhead when 'bottom window' isn't active

In the commits referenced below special code was added
to make the bottom window sticky and fix the bug after
'Cap_nl_clreos' was traded for the 'Cap_clr_eol' loop.

However, there's always major overhead associated with
interacting with a terminal. So we'll only abandon the
single 'Cap_nl_clreos' putp in favor of repeated calls
with 'Cap_clr_eol' when a bottom window isn't present.

Reference(s):
. May, 2022 - bottom window batch bug fix
commit 793f3e85aeb41788e359c2f6f387812c328ac097
. May, 2022 - bottom window made sticky
commit 0f2a755b0b2754fca79545984e25ec52f4ae4444

Signed-off-by: Jim Warner <james.warner@comcast.net>
16 months agotop: tweak whitespace in some #defines for consistency
Jim Warner [Wed, 11 Jan 2023 06:00:00 +0000 (00:00 -0600)]
top: tweak whitespace in some #defines for consistency

Please, do not look at the actual changes made by this
commit. Trust me they will vastly improve performance.

Signed-off-by: Jim Warner <james.warner@comcast.net>
17 months agovmstat: Update memory statistics
Ingo Saitz [Fri, 6 Jan 2023 02:30:39 +0000 (13:30 +1100)]
vmstat: Update memory statistics

vmstat <n> would update most fields, but the memory statistics
were only fetched the first time.

References:
 https://bugs.debian.org/1027963

Signed-off-by: Craig Small <csmall@dropbear.xyz>
17 months agops: Correct BSD c option
Craig Small [Mon, 19 Dec 2022 05:50:12 +0000 (16:50 +1100)]
ps: Correct BSD c option

procps 3.3.17 the c option changed the command/args field
to cmd but this got removed as part of newlib

Functionality is back in with a test case.

References:
 https://bugs.debian.org/1026326

Signed-off-by: Craig Small <csmall@dropbear.xyz>
17 months agodocs: ps.1 - comm can show command name changes
Craig Small [Tue, 13 Dec 2022 05:36:56 +0000 (16:36 +1100)]
docs: ps.1 - comm can show command name changes

The man page said it cannot show changes to comm, such as when you
use prctl(). In fact, ps can see this. The args field may not change
because its due to the path of the executable but comm can.

17 months agodocs: ps.1 remove defunct from comm
Craig Small [Mon, 12 Dec 2022 05:59:23 +0000 (16:59 +1100)]
docs: ps.1 remove defunct from comm

The field comm no longer shows defunct for zombie processes, use the
state field for this as it could be obscured if not the last
column anyhow.

Signed-off-by: Craig Small <csmall@dropbear.xyz>
18 months agoMerge branch 'master' of gitlab.com:procps-ng/procps
Craig Small [Mon, 12 Dec 2022 05:48:21 +0000 (16:48 +1100)]
Merge branch 'master' of gitlab.com:procps-ng/procps

18 months agoskill: Restore the -p flag functionality
Craig Small [Mon, 12 Dec 2022 05:46:36 +0000 (16:46 +1100)]
skill: Restore the -p flag functionality

When the skill program was ported to the new API the code to filter
on PID, used by the -p option, was missed. It is now restored.

References:
 https://bugs.debian.org/1025915

18 months agonls: Update man translation files
Craig Small [Fri, 9 Dec 2022 11:56:14 +0000 (22:56 +1100)]
nls: Update man translation files

18 months agobuild-sys: Remove duplicate manpages
Werner Fink [Tue, 6 Dec 2022 11:30:35 +0000 (22:30 +1100)]
build-sys: Remove duplicate manpages

Fix the building of the man pages instead of installing the same
english ones twice.

Signed-off-by: Craig Small <csmall@dropbear.xyz>
18 months agotests: Fix type for check_fatal_proc_unmounted
Craig Small [Tue, 6 Dec 2022 11:23:08 +0000 (22:23 +1100)]
tests: Fix type for check_fatal_proc_unmounted

While ps used the correct type for PIDS_VM_RSS the test
did not. For some reason this only appeared to be an issue
for s390x

References:
 https://bugs.debian.org/1025495

Signed-off-by: Craig Small <csmall@dropbear.xyz>
18 months agoIntegrate the 'newlib' branch with the 'master' branch
Craig Small [Mon, 5 Dec 2022 11:44:27 +0000 (22:44 +1100)]
Integrate the 'newlib' branch with the 'master' branch

[ with the histories of both branches also preserved ]

Signed-off-by: Craig Small <csmall@dropbear.xyz>
18 months agobuild-sys: Set library to 0:1:0 v4.0.2
Craig Small [Mon, 5 Dec 2022 10:04:05 +0000 (21:04 +1100)]
build-sys: Set library to 0:1:0

There was a bug fix in the library but no functions add/moved/changed
Revision incremented.

18 months agonls: update po and ro
Craig Small [Mon, 5 Dec 2022 10:01:48 +0000 (21:01 +1100)]
nls: update po and ro

18 months agonls: Update translations
Craig Small [Mon, 5 Dec 2022 09:59:00 +0000 (20:59 +1100)]
nls: Update translations

Added po and ro languages too.

Signed-off-by: Craig Small <csmall@dropbear.xyz>
18 months agoNEWS: Change to 4.0.2 newlib v4.0.2_rc1
Craig Small [Fri, 25 Nov 2022 21:55:21 +0000 (08:55 +1100)]
NEWS: Change to 4.0.2

18 months agonls: Update
Craig Small [Fri, 25 Nov 2022 21:53:54 +0000 (08:53 +1100)]
nls: Update

19 months agonls: Update translations
Craig Small [Thu, 10 Nov 2022 10:56:22 +0000 (21:56 +1100)]
nls: Update translations

Side-effect of previous commit

Signed-off-by: Craig Small <csmall@dropbear.xyz>
19 months agonls: Update the man-po logic
Craig Small [Thu, 10 Nov 2022 10:52:19 +0000 (21:52 +1100)]
nls: Update the man-po logic

Put the man-po pot file under version control like its po/*.pot sibling.

Makefile now auto-matically generates the list of man pages as they are
in a single directory. There were some missing!

pot file target is dependent on the untranslated man pages

When downloading from translation project, run po4a to sync the new
po files correctly.

Downloaded man po files from translation project and synched.

Thanks to @gorean for the info

References:
 procps-ng/procps#258

Signed-off-by: Craig Small <csmall@dropbear.xyz>
19 months agopkill: Don't show --echo twice
Chris Down [Tue, 1 Nov 2022 00:46:18 +0000 (00:46 +0000)]
pkill: Don't show --echo twice

Commit c8384e682c1c ("pgrep: add pwait") changed from the old i_am_pkill
logic, but mistakenly missed a break in the pkill case. This results in
showing -e/--echo twice when running `pkill -h'.

Signed-off-by: Chris Down <chris@chrisdown.name>
19 months agorevert: pidfd_open check
Craig Small [Wed, 9 Nov 2022 10:32:26 +0000 (21:32 +1100)]
revert: pidfd_open check

This change confused the pidfd_open check with the existance
of NR_pidfd_open

19 months agofix pifd_open check
Fabrice Fontaine [Thu, 3 Nov 2022 17:24:53 +0000 (18:24 +0100)]
fix pifd_open check

Replace AC_CHECK_FUNC by AC_CHECK_FUNCS otherwise HAVE_PIDFD_OPEN will
never be defined resulting in the following build failure if pidfd_open
is available but __NR_pidfd_open is not available:

pgrep.c: In function 'pidfd_open':
pgrep.c:748:17: error: '__NR_pidfd_open' undeclared (first use in this function); did you mean 'pidfd_open'?
  748 |  return syscall(__NR_pidfd_open, pid, flags);
      |                 ^~~~~~~~~~~~~~~
      |                 pidfd_open

This build failure is raised since the addition of pwait in version
3.3.17 and
https://gitlab.com/procps-ng/procps/-/commit/c8384e682c1cfb3b2dc797e0f8a3cbaaccf7a3da

Fixes:
 - http://autobuild.buildroot.org/results/f23a5156e641b2ebdd673973dec0f9c87760c688

Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
19 months agow: Show time with TIME_BITS=64 on 32bit env
Craig Small [Wed, 9 Nov 2022 10:02:09 +0000 (21:02 +1100)]
w: Show time with TIME_BITS=64 on 32bit env

Thanks to @kabe-gl for this patch.

w command shows ????? for LOGIN@ column when compiled on 32bit environment with -D_TIME_BITS=64.

References:
 #256

Signed-off-by: Craig Small <csmall@dropbear.xyz>
19 months agotop: also adapted to absent 'core id' in /proc/cpuinfo
Jim Warner [Tue, 25 Oct 2022 10:05:05 +0000 (05:05 -0500)]
top: also adapted to absent 'core id' in /proc/cpuinfo

Just as our library was made responsive to a potential
missing 'core id', the top program should also change.

That's because he has his own PRETENDECORE #define and
if that was activated on a platform without 'core id',
the 'CpP' notations would have otherwise been omitted.

Reference(s):
. Oct, 2022 - library fix for missing 'core id'
commit b89e3230b2baa5b82a2961b240731db95a887f26

Signed-off-by: Jim Warner <james.warner@comcast.net>
19 months agomisc: Add NEWS item for missing core_id
Craig Small [Tue, 25 Oct 2022 09:18:35 +0000 (20:18 +1100)]
misc: Add NEWS item for missing core_id

Tracking what we do to the library so the N:N:N version strings are
updated. This is just a NEWS item for previous commit.

References:
 commit b89e3230b2baa5b82a2961b240731db95a887f26

19 months agolibrary: adapted for absent 'core id' in /proc/cpuinfo
Jim Warner [Tue, 25 Oct 2022 05:00:00 +0000 (00:00 -0500)]
library: adapted for absent 'core id' in /proc/cpuinfo

A big oops on my part - with a big thanks to Dr. Fink.

[ this version eliminates an extraneous startup call ]
[ to the 'stat_cores_verify' function as superfluous ]

Reference(s):
https://www.freelists.org/post/procps/For-procpsng4001-No-core-id-in-eg-aarch65-or-ppc64le-proccpuinfo

Prototyped by: Dr. Werner Fink <werner@suse.de>
Signed-off-by: Jim Warner <james.warner@comcast.net>
19 months agonls: Fix polish translation (again)
Craig Small [Thu, 20 Oct 2022 11:15:31 +0000 (22:15 +1100)]
nls: Fix polish translation (again)

19 months agotop: whack an obsolete string plus its associated code <=== port of newlib 244f2b33 oldlib
Jim Warner [Mon, 10 Oct 2022 18:24:13 +0000 (13:24 -0500)]
top: whack an obsolete string plus its associated code <=== port of newlib 244f2b33

______________________________ original newlib message
----------------------------------- ( minus git hash )

When long command line options were introduced, in the
patch shown below, the string associated with the enum
'WRONG_switch_fmt' became obsolete. However, that enum
and its string were never removed. Well, now they are.

Reference(s):
. Sep, 2021 - getopt and long cmdline options
commit ........................................

Signed-off-by: Jim Warner <james.warner@comcast.net>
19 months agoNEWS: Set version to 4.0.1 v4.0.1
Craig Small [Thu, 20 Oct 2022 09:58:25 +0000 (20:58 +1100)]
NEWS: Set version to 4.0.1

19 months agonls: Last translation update for 4.0.1
Craig Small [Thu, 20 Oct 2022 09:56:17 +0000 (20:56 +1100)]
nls: Last translation update for 4.0.1

19 months agonls: Update translations
Craig Small [Sun, 16 Oct 2022 09:06:14 +0000 (20:06 +1100)]
nls: Update translations

19 months agotop: restore missing support for 'MEMGRAPH_OLD' define
Jim Warner [Wed, 12 Oct 2022 05:00:00 +0000 (00:00 -0500)]
top: restore missing support for 'MEMGRAPH_OLD' define

When support for graphs was refactored, in that commit
referenced below, the logic for our 'MEMGRAPH_OLD' was
lost while the #define itself remained in the .h file.

Faced with deleting the #define or restoring the logic
I chose the latter. Thus, if one wanted to be reminded
how overstated 'used' memory once was, it can be done.

Reference(s):
. Sep, 2022 - refactored graph support
commit 2d5b51d1a2aa19d077a2f3db5be187f982d70e70

Signed-off-by: Jim Warner <james.warner@comcast.net>
19 months agotop: whack an obsolete string plus its associated code
Jim Warner [Wed, 12 Oct 2022 05:00:00 +0000 (00:00 -0500)]
top: whack an obsolete string plus its associated code

When long command line options were introduced, in the
patch shown below, the string associated with the enum
'WRONG_switch_fmt' became obsolete. However, that enum
and its string were never removed. Well, now they are.

Reference(s):
. Sep, 2021 - getopt and long cmdline options
commit c91b371485b7ffaea3a7c669b080328d141dfb6b

Signed-off-by: Jim Warner <james.warner@comcast.net>
20 months agotop: fix a flaw in excluding a string from translation
Jim Warner [Tue, 4 Oct 2022 05:00:00 +0000 (00:00 -0500)]
top: fix a flaw in excluding a string from translation

In that commit referenced below, I removed the command
line help text from any translation so the TP wouldn't
delay our 4.0.1 release any further. In looking to the
future, when we might be able to reverse that, I found
gettext tools blocking use of the compile conditional.

They are too primitive for the original approach so we
must modify that exclusion mechanism hack accordingly.

____________________________excerpted program comments

The provision excluding some strings is intended to be
used very sparingly. It exists in case we collide with
some translation project person in a position to delay
a future release over his or her personal preferences.

If it's ever enabled, it will produce a fatal compiler
error as our only option since those gettext tools are
far too primitive to be influenced with a conditional.
They always ignore a '_X()' macro no matter its state.

Reference(s):
commit 8a368bfb05a978a9904647f128dec8f1c4d4cc84

Signed-off-by: Jim Warner <james.warner@comcast.net>
20 months agonls: man translation updates v4.0.1rc3
Craig Small [Tue, 4 Oct 2022 11:36:48 +0000 (22:36 +1100)]
nls: man translation updates

20 months agonls: Update translations
Craig Small [Tue, 4 Oct 2022 00:02:04 +0000 (11:02 +1100)]
nls: Update translations

20 months agotop: enable exclusion of some strings from translation
Jim Warner [Sat, 1 Oct 2022 05:00:00 +0000 (00:00 -0500)]
top: enable exclusion of some strings from translation

The provision excluding some strings is intended to be
used very sparingly. It exists in case we collide with
some translation project person in a position to delay
a future release over his or her personal preferences.

(it's currently used only on v4.0.1 command line help)

Signed-off-by: Jim Warner <james.warner@comcast.net>
20 months agotop: always validate that p-core/e-core identification
Jim Warner [Sat, 1 Oct 2022 05:00:00 +0000 (00:00 -0500)]
top: always validate that p-core/e-core identification

Prior to this commit, when the '5' key was struck, top
would check for the presence of e-cores just one time.

That meant if a some cpu was brought online, and it in
turn exposed a new e-core after top has started, users
needed a top restart to activate the  new '5' feature.

So, now we'll check for any e-cores with each '5' key.

Signed-off-by: Jim Warner <james.warner@comcast.net>
20 months agolibrary: tweak support of p-core/e-core identification
Jim Warner [Sat, 1 Oct 2022 05:00:00 +0000 (00:00 -0500)]
library: tweak support of p-core/e-core identification

Wow, after this we'll eliminate one 'jmp' instruction!

[ plus we can also save a single precious whitespace ]

Signed-off-by: Jim Warner <james.warner@comcast.net>
20 months agonls: Update translations v4.0.1rc2
Craig Small [Thu, 29 Sep 2022 22:28:58 +0000 (08:28 +1000)]
nls: Update translations

20 months agoNEWS: Add entry for free --si fix
Craig Small [Wed, 28 Sep 2022 07:59:23 +0000 (17:59 +1000)]
NEWS: Add entry for free --si fix

References:
 procps-ng/procps!163

20 months agofree: --si changes base of default output
Jan Rybar [Wed, 28 Sep 2022 07:57:03 +0000 (07:57 +0000)]
free: --si changes base of default output

20 months agobuild-sys: Allow enable-watch9bit and with-ncurses
Craig Small [Wed, 28 Sep 2022 07:42:17 +0000 (17:42 +1000)]
build-sys: Allow enable-watch9bit and with-ncurses

The commit that changed configure.ac was supposed to check for when
someone removes ncurses using the flag --without-ncurses

Unfortunately the change didn't check if the user was specifying
--without or --with meaning if they didn use --with-ncurses the
configure script would error out.

Signed-off-by: Craig Small <csmall@dropbear.xyz>
References:
  commit 812864181408398af98b217f384205a6f2f9cb68
  procps-ng/procps#251

20 months agodoc: updated with library p-core/e-core identification
Jim Warner [Wed, 28 Sep 2022 05:00:00 +0000 (00:00 -0500)]
doc: updated with library p-core/e-core identification

Signed-off-by: Jim Warner <james.warner@comcast.net>
20 months agotop: exploit that library p-core/e-core identification
Jim Warner [Wed, 28 Sep 2022 05:00:00 +0000 (00:00 -0500)]
top: exploit that library p-core/e-core identification

I sure hope we won't disappoint the library with these
changes since we're only exploiting one of the two new
enumerators that the immediately prior patch provided.

Now top will be able to offer a visual clue as to each
cpu (thread actually) core association. Is it a P-core
offering multiple threads or a single threaded E-core.

We'll accomplish this feat with a subtle change to the
states portion ('t' toggle) of the summary area. Where
before processors were represented as 'Cpu', they will
now be displayed as 'CpP' (P-core) and 'CpE' (E-core).

[ assuming that new '5' command toggle has been used ]

There are also new provisions for filtering those cpus
by their core type association via the new '5' toggle.

Signed-off-by: Jim Warner <james.warner@comcast.net>
20 months agolibrary: provided for cpu p-core/e-core identification
Jim Warner [Wed, 28 Sep 2022 05:00:00 +0000 (00:00 -0500)]
library: provided for cpu p-core/e-core identification

With Intel's 12th generation Alder Lake processors now
providing two distinct types of core, it would be nice
if the library offered some sort of clue to core type.

Well, with this patch it does. We'll have 2 additional
enumerators. One deals with the cpu's core association
and the other provides the type of that core (P or E).

[ now, all we need is for some program to exploit it ]

Signed-off-by: Jim Warner <james.warner@comcast.net>
20 months agotop: avoid any potential race involving 'BREAK_screen' <=== port of newlib 3e5016c2
Jim Warner [Mon, 19 Sep 2022 05:00:00 +0000 (00:00 -0500)]
top: avoid any potential race involving 'BREAK_screen' <=== port of newlib 3e5016c2

______________________________ original newlib message
----------------------------------- ( minus git hash )

When that 'Bottom' window was being finalized, an enum
of BREAK_screen was added to the Frames_signal values.
This was done so some full screen replacement function
could flag the need for that bottom window to go away.

Around that same time, top was made more responsive to
keyboard input so that residual portions of a previous
bottom window would not linger until the next refresh.
This happened if going from a larger (^N, environment)
bottom window to some smaller window (^P, namespaces).

The combined effect of these changes was to create the
potential race condition this commit addresses. If the
user encountered a SIGWINCH while on any of those full
screen replacement displays (help, fields mgmt, etc.),
endless redraws would occur. A ^C was the only option.

Henceforth we will protect against any redraw loops by
clearing Frames_signal each time a redraw is required.

[ along the way, we'll make the 'q' key work on that ]
t secondary 'windows' help screen as it should, even ]
[ though it is not documented on that screen itself. ]

Reference(s):
. May, 2022 - more responsive to keyboard input
commit ........................................
. May, 2022 - maybe force the bottom window off
commit ........................................

Signed-off-by: Jim Warner <james.warner@comcast.net>
20 months agotop: try avoiding the edge of a 'divide by zero' cliff <=== port of newlib 5f9185e0
Jim Warner [Mon, 19 Sep 2022 05:00:00 +0000 (00:00 -0500)]
top: try avoiding the edge of a 'divide by zero' cliff <=== port of newlib 5f9185e0

______________________________ original newlib message
----------------------------------- ( minus git hash )

Darn, after testing on some older, out of date distros
I was embarrassed to find some awful code I created in
the commit shown below. I was rewarded with some 'nan'
floating point values and 'inf' computational results.

Reference(s);
. a missed opportunity to repent
commit ........................................
. true source of my original sin
commit ........................................

Signed-off-by: Jim Warner <james.warner@comcast.net>
20 months agotop: fix 'TOG4_MEM_1UP' if two abreast summary display <=== port of newlib 124f26a4
Jim Warner [Mon, 19 Sep 2022 05:00:00 +0000 (00:00 -0500)]
top: fix 'TOG4_MEM_1UP' if two abreast summary display <=== port of newlib 124f26a4

The 'unrelated' note reflected in the original message
doesn't apply since we already used that correct name.

______________________________ original newlib message

If one per line display of Mem/Swap data was forced by
this #define, screen width was not fully exploited for
graph mode. Rather, those graphs were scaled just like
they would be if aligned with a nonexistent separator.

With this commit, those graphs will expand to fill the
screen width (or be limited by the maximum of '100' ).

[ and in unrelated news a variable used in do_memory ]
[ was changed for consistency. it doesn't affect the ]
[ the results since a part1 of swap was always zero. ]

Signed-off-by: Jim Warner <james.warner@comcast.net>
20 months agotop: enhance memory graphs two abreast summary display <=== port of newlib 602146a6
Jim Warner [Mon, 19 Sep 2022 05:00:00 +0000 (00:00 -0500)]
top: enhance memory graphs two abreast summary display <=== port of newlib 602146a6

______________________________ original newlib message

This patch introduces a new #define TOG4_MEM_FIX which
serves to turn off the new feature it also implements.

The feature, on by default, provides a flexible memory
graph approach which strives to always keep its visual
separator in alignment with cpu separators seen above.

Below is a summary of the algorithm implementing this:

1) First, ascertain the widest graph which corresponds
to the largest number of cpu graphs but doesn't exceed
maximum allowable graph width (i.e. GRAPH_length_max).

2) Next, apply that to the graphed 'Mem' portion which
is likely to remain entirely visible. However, it will
grow or shrink depending on total adjacent cpu graphs.

3) Last, the same width is used for the 'Swap' portion
but that graph is considered sacrificial and very well
could be truncated depending on the width of a screen.

[ along the way, when the cpu graphs revert to their ]
[ abbreviated form, the memory graphs will also show ]
[ an abbreviated prefix. in this way the widths will ]
[ also be maximized, reducing potential distortions. ]

Signed-off-by: Jim Warner <james.warner@comcast.net>
20 months agotop: cosmetic changes with two abreast summary display <=== port of newlib bf916fdf
Jim Warner [Mon, 19 Sep 2022 05:00:00 +0000 (00:00 -0500)]
top: cosmetic changes with two abreast summary display <=== port of newlib bf916fdf

______________________________ original newlib message

This commit will change some comments, adjust a little
whitespace but mostly rename some #define identifiers.

Signed-off-by: Jim Warner <james.warner@comcast.net>
20 months agotop: distinct separator if two abreast summary display <=== port of newlib 96153c0f
Jim Warner [Mon, 19 Sep 2022 05:00:00 +0000 (00:00 -0500)]
top: distinct separator if two abreast summary display <=== port of newlib 96153c0f

______________________________ original newlib message

When displaying detailed memory statistics two abreast
data for the lines are less than those for cpus. So we
can exploit such a difference to provide a distinctive
separator. This may help separating cpu & memory data.

[ in truth, this happened before this patch. what we ]
[ are doing now is polishing that accidental feature ]
[ and placing it under the control of a conditional. ]

Signed-off-by: Jim Warner <james.warner@comcast.net>
20 months agotop: harden detailed stats two abreast summary display <=== port of newlib e5386f1f
Jim Warner [Mon, 19 Sep 2022 05:00:00 +0000 (00:00 -0500)]
top: harden detailed stats two abreast summary display <=== port of newlib e5386f1f

______________________________ original newlib message

When displaying detailed cpu statistics, as opposed to
those scalable graphs, only two per line can be shown.

Therefore, if we are showing a detail version, our '4'
toggle must prematurely revert to single mode display.

Conversely, the 't' toggle must also turn off that '4'
toggle rather than try to print more than 2 abreast if
we're currently executing in detailed statistics mode.

Signed-off-by: Jim Warner <james.warner@comcast.net>
20 months agotop: refined memory graphs two abreast summary display <=== port of newlib 5c5bff39
Jim Warner [Mon, 19 Sep 2022 05:00:00 +0000 (00:00 -0500)]
top: refined memory graphs two abreast summary display <=== port of newlib 5c5bff39

______________________________ original newlib message

When more than two cpus are displayed per summary area
line in graph form, those memory graphs were scaled to
that same width for consistency & aesthetics. However,
they probably shouldn't have been reduced to less than
terminal width due to a resulting loss of information.

[ after all, detailed memory stats are never reduced ]

So now, supporting logic was refactored to behave just
as it did before the 4 toggle was expanded beyond '1'.

[ the changes impact the 2 memory graphs exclusively ]

Reference(s):
https://www.freelists.org/post/procps/top-enhancements-2-bugs-swatted,1

Signed-off-by: Jim Warner <james.warner@comcast.net>
20 months agotop: additional tweaks for two abreast summary display <=== port of newlib 3543172d
Jim Warner [Mon, 19 Sep 2022 05:00:00 +0000 (00:00 -0500)]
top: additional tweaks for two abreast summary display <=== port of newlib 3543172d

______________________________ original newlib message

This patch just supplements the previous series with a
few minor tweaks representing some diverse objectives:

. a recent date for man page (which i always overlook)

. improved length calculations to maximize graph width

. a proper response to platforms with less than 8 cpus

. more consistency and readability with one blank line

Signed-off-by: Jim Warner <james.warner@comcast.net>
20 months agotop: avoid any potential race involving 'BREAK_screen'
Jim Warner [Sun, 18 Sep 2022 05:00:00 +0000 (00:00 -0500)]
top: avoid any potential race involving 'BREAK_screen'

When that 'Bottom' window was being finalized, an enum
of BREAK_screen was added to the Frames_signal values.
This was done so some full screen replacement function
could flag the need for that bottom window to go away.

Around that same time, top was made more responsive to
keyboard input so that residual portions of a previous
bottom window would not linger until the next refresh.
This happened if going from a larger (^N, environment)
bottom window to some smaller window (^P, namespaces).

The combined effect of these changes was to create the
potential race condition this commit addresses. If the
user encountered a SIGWINCH while on any of those full
screen replacement displays (help, fields mgmt, etc.),
endless redraws would occur. A ^C was the only option.

Henceforth we will protect against any redraw loops by
clearing Frames_signal each time a redraw is required.

[ along the way, we'll make the 'q' key work on that ]
t secondary 'windows' help screen as it should, even ]
[ though it is not documented on that screen itself. ]

Reference(s):
. May, 2022 - more responsive to keyboard input
commit 3ea1bc779fb7ca5bf065a5ca620ec5b5823bc61c
. May, 2022 - maybe force the bottom window off
commit d66c1f39b52d53ec279fc638aa4a6352d7672201

Signed-off-by: Jim Warner <james.warner@comcast.net>
20 months agotop: try avoiding the edge of a 'divide by zero' cliff
Jim Warner [Sun, 18 Sep 2022 05:00:00 +0000 (00:00 -0500)]
top: try avoiding the edge of a 'divide by zero' cliff

Darn, after testing on some older, out of date distros
I was embarrassed to find some awful code I created in
the commit shown below. I was rewarded with some 'nan'
floating point values and 'inf' computational results.

Reference(s);
. a missed opportunity to repent
commit 5c5bff392bfaf78b7bacb9b954c1fd1e9d818544
. true source of my original sin
commit 2d5b51d1a2aa19d077a2f3db5be187f982d70e70

Signed-off-by: Jim Warner <james.warner@comcast.net>
20 months agotop: fix 'TOG4_MEM_1UP' if two abreast summary display
Jim Warner [Sun, 18 Sep 2022 05:00:00 +0000 (00:00 -0500)]
top: fix 'TOG4_MEM_1UP' if two abreast summary display

If one per line display of Mem/Swap data was forced by
this #define, screen width was not fully exploited for
graph mode. Rather, those graphs were scaled just like
they would be if aligned with a nonexistent separator.

With this commit, those graphs will expand to fill the
screen width (or be limited by the maximum of '100' ).

[ and in unrelated news a variable used in do_memory ]
[ was changed for consistency. it doesn't affect the ]
[ the results since a part1 of swap was always zero. ]

Signed-off-by: Jim Warner <james.warner@comcast.net>
20 months agotop: enhance memory graphs two abreast summary display
Jim Warner [Sun, 18 Sep 2022 05:00:00 +0000 (00:00 -0500)]
top: enhance memory graphs two abreast summary display

This patch introduces a new #define TOG4_MEM_FIX which
serves to turn off the new feature it also implements.

The feature, on by default, provides a flexible memory
graph approach which strives to always keep its visual
separator in alignment with cpu separators seen above.

Below is a summary of the algorithm implementing this:

1) First, ascertain the widest graph which corresponds
to the largest number of cpu graphs but doesn't exceed
maximum allowable graph width (i.e. GRAPH_length_max).

2) Next, apply that to the graphed 'Mem' portion which
is likely to remain entirely visible. However, it will
grow or shrink depending on total adjacent cpu graphs.

3) Last, the same width is used for the 'Swap' portion
but that graph is considered sacrificial and very well
could be truncated depending on the width of a screen.

[ along the way, when the cpu graphs revert to their ]
[ abbreviated form, the memory graphs will also show ]
[ an abbreviated prefix. in this way the widths will ]
[ also be maximized, reducing potential distortions. ]

Signed-off-by: Jim Warner <james.warner@comcast.net>
20 months agotop: cosmetic changes with two abreast summary display
Jim Warner [Sun, 18 Sep 2022 05:00:00 +0000 (00:00 -0500)]
top: cosmetic changes with two abreast summary display

This commit will change some comments, adjust a little
whitespace but mostly rename some #define identifiers.

Signed-off-by: Jim Warner <james.warner@comcast.net>
20 months agotop: distinct separator if two abreast summary display
Jim Warner [Sun, 18 Sep 2022 05:00:00 +0000 (00:00 -0500)]
top: distinct separator if two abreast summary display

When displaying detailed memory statistics two abreast
data for the lines are less than those for cpus. So we
can exploit such a difference to provide a distinctive
separator. This may help separating cpu & memory data.

[ in truth, this happened before this patch. what we ]
[ are doing now is polishing that accidental feature ]
[ and placing it under the control of a conditional. ]

Signed-off-by: Jim Warner <james.warner@comcast.net>
20 months agotop: harden detailed stats two abreast summary display
Jim Warner [Sun, 18 Sep 2022 05:00:00 +0000 (00:00 -0500)]
top: harden detailed stats two abreast summary display

When displaying detailed cpu statistics, as opposed to
those scalable graphs, only two per line can be shown.

Therefore, if we are showing a detail version, our '4'
toggle must prematurely revert to single mode display.

Conversely, the 't' toggle must also turn off that '4'
toggle rather than try to print more than 2 abreast if
we're currently executing in detailed statistics mode.

Signed-off-by: Jim Warner <james.warner@comcast.net>
20 months agodoc: top now has more than two abreast summary display <=== port of newlib fd529e96
Jim Warner [Mon, 12 Sep 2022 05:00:00 +0000 (00:00 -0500)]
doc: top now has more than two abreast summary display <=== port of newlib fd529e96

______________________________ original newlib message
--------------------------------------------- ( none )

Signed-off-by: Jim Warner <james.warner@comcast.net>
20 months agotop: implemented more than two abreast summary display <=== port of newlib 248efdf1
Jim Warner [Mon, 12 Sep 2022 05:00:00 +0000 (00:00 -0500)]
top: implemented more than two abreast summary display <=== port of newlib 248efdf1

______________________________ original newlib message

Well, here it is. This is what the preceding series of
commits was leading to: an ability to show up to eight
cpus per Summary Area line. In reality, a self imposed
limit of four cpus on such lines seems more realistic.

In any case, the new capability could also be employed
along with that '!' toggle which consolidates adjacent
cpus into a solitary graph. When used together the '4'
and '!' toggles should accommodate any number of cpus.

Signed-off-by: Jim Warner <james.warner@comcast.net>
20 months agotop: prepare for more than two abreast summary display <=== port of newlib 1c802890
Jim Warner [Mon, 12 Sep 2022 05:00:00 +0000 (00:00 -0500)]
top: prepare for more than two abreast summary display <=== port of newlib 1c802890

______________________________ original newlib message

I guess the cat's out of the bag with the prior commit
message. It mentioned the objective of displaying more
than the current two cpu graphs on summary area lines.

On the way to that objective, this patch just prepares
our battlefield for the actual implementation in which
up to 8 individual cpu graphs will be shown on 1 line.

[ no logic has been impacted with this commit. we're ]
[ just adding one manifest constant, trading several ]
[ identifiers and updating some comments so the next ]
[ commit might be just a little bit more manageable. ]

Signed-off-by: Jim Warner <james.warner@comcast.net>
20 months agotop: better graphic scaling in cpu/mem summary display <=== port of newlib 8c69e66a
Jim Warner [Mon, 12 Sep 2022 05:00:00 +0000 (00:00 -0500)]
top: better graphic scaling in cpu/mem summary display <=== port of newlib 8c69e66a

______________________________ original newlib message

This program has always been sensitive to the width of
a terminal/console. The detailed cpu/memory statistics
plus all of those full screen replacement windows were
designed to fit within some 80 column, 24 row display.

When a user narrowed a gui terminal to less than those
dimensions, top would simply truncate the data to fit.
However, when displaying cpu/mem graphs instead of the
detailed statistics such truncation was not justified.
After all, such graphs were already scaled to 80 cols.

Henceforth, when in graph mode, truncation won't occur
until the graphs will no longer fit within 10 columns.

[ can you keep a secret? this change is really being ]
[ made in anticipation of showing more than just two ]
[ cpu graphs in the summary area on each screen row! ]

Signed-off-by: Jim Warner <james.warner@comcast.net>
20 months agotop: refactor graph support of cpu/mem summary display <=== port of newlib 2d5b51d1
Jim Warner [Mon, 12 Sep 2022 05:00:00 +0000 (00:00 -0500)]
top: refactor graph support of cpu/mem summary display <=== port of newlib 2d5b51d1

______________________________ original newlib message

The logic (illogic?) in the sum_tics() and do_memory()
functions has grown to become almost unfathomable over
time. Additionally, though perhaps not apparent in the
code, many steps are duplicated within those routines.

So, this patch refactors all the summary graph support
to consolidate duplicated code and (hopefully) make it
more understandable with an eye to future maintenance.

[ additionally, that show_special guy's workload has ]
[ been reduced by eliminating any special directives ]
[ previously embedded in some cpu graphs even though ]
[ a cpu may have been idle during the last interval. ]

Signed-off-by: Jim Warner <james.warner@comcast.net>
20 months agotop: eliminate that 'TOG4_NOTRUNC' compile conditional <=== port of newlib 08d0f377
Jim Warner [Mon, 12 Sep 2022 05:00:00 +0000 (00:00 -0500)]
top: eliminate that 'TOG4_NOTRUNC' compile conditional <=== port of newlib 08d0f377

______________________________ original newlib message
----------------------------------- ( minus git hash )

When 2 abreast cpu display was introduced, the minimum
screen width was 160 columns so as to avoid (minimize)
truncation. Later that was reduced to 80 columns while
keeping the original minimum as a compile conditional.

In preparation for (virtually) eliminating these width
restrictions in a future patch this #define's history.

Reference(s):
. May, 2020 - introduced #define TOG4_NOTRUNC
commit ........................................
. May, 2020 - introduce 2 abreast display
commit ........................................

Signed-off-by: Jim Warner <james.warner@comcast.net>
20 months agotop: eliminate that 'TOG4_NOFORCE' compile conditional <=== port of newlib d9c45988
Jim Warner [Mon, 12 Sep 2022 05:00:00 +0000 (00:00 -0500)]
top: eliminate that 'TOG4_NOFORCE' compile conditional <=== port of newlib d9c45988

______________________________ original newlib message
----------------------------------- ( minus git hash )

When two abreast display was introduce, in that commit
shown below, this #define provision was also added. It
actually was an artifact left from program development
and never made much sense in a real world application.

If activated it would make the '4' toggle appear to be
broken since it would only take affect if a user first
activated individual cpu display (the '1' toggle off).
And there was no error message offered to those users.

So, this questionable #define is now being eliminated.

Reference(s):
. May, 2020 - introduce 2 abreast display
commit ........................................

Signed-off-by: Jim Warner <james.warner@comcast.net>
20 months agotop: fix an improper behavior following a SIGWINCH bug <=== port of newlib 9d999370
Jim Warner [Mon, 12 Sep 2022 05:00:00 +0000 (00:00 -0500)]
top: fix an improper behavior following a SIGWINCH bug <=== port of newlib 9d999370

______________________________ original newlib message
----------------------------------- ( minus git hash )

When top was made more responsive to keyboard input in
that commit referenced below, his previous response to
a SIGWINCH was upset. Formerly, that display integrity
was restored with the next refresh cycle. But, without
this patch, one must strike some key to accomplish it.

[ in truth, this patch vastly improves that sigwinch ]
[ response. whereas before, although integrity would ]
[ be restored automatically, it did not happen until ]
[ the next regular refresh. now it is instantaneous! ]

Reference(s):
. May, 2022 - made more responsive to kdb input
commit ........................................

Signed-off-by: Jim Warner <james.warner@comcast.net>
20 months agotop: refined memory graphs two abreast summary display
Jim Warner [Mon, 12 Sep 2022 18:13:13 +0000 (13:13 -0500)]
top: refined memory graphs two abreast summary display

When more than two cpus are displayed per summary area
line in graph form, those memory graphs were scaled to
that same width for consistency & aesthetics. However,
they probably shouldn't have been reduced to less than
terminal width due to a resulting loss of information.

[ after all, detailed memory stats are never reduced ]

So now, supporting logic was refactored to behave just
as it did before the 4 toggle was expanded beyond '1'.

[ the changes impact the 2 memory graphs exclusively ]

Reference(s):
https://www.freelists.org/post/procps/top-enhancements-2-bugs-swatted,1

Signed-off-by: Jim Warner <james.warner@comcast.net>
20 months agotop: additional tweaks for two abreast summary display
Jim Warner [Mon, 12 Sep 2022 13:00:00 +0000 (08:00 -0500)]
top: additional tweaks for two abreast summary display

This patch just supplements the previous series with a
few minor tweaks representing some diverse objectives:

. a recent date for man page (which i always overlook)

. improved length calculations to maximize graph width

. a proper response to platforms with less than 8 cpus

. more consistency and readability with one blank line

Signed-off-by: Jim Warner <james.warner@comcast.net>
20 months agodoc: top now has more than two abreast summary display
Jim Warner [Sat, 10 Sep 2022 05:00:00 +0000 (00:00 -0500)]
doc: top now has more than two abreast summary display

Signed-off-by: Jim Warner <james.warner@comcast.net>
20 months agotop: implemented more than two abreast summary display
Jim Warner [Sat, 10 Sep 2022 05:00:00 +0000 (00:00 -0500)]
top: implemented more than two abreast summary display

Well, here it is. This is what the preceding series of
commits was leading to: an ability to show up to eight
cpus per Summary Area line. In reality, a self imposed
limit of four cpus on such lines seems more realistic.

In any case, the new capability could also be employed
along with that '!' toggle which consolidates adjacent
cpus into a solitary graph. When used together the '4'
and '!' toggles should accommodate any number of cpus.

Signed-off-by: Jim Warner <james.warner@comcast.net>
20 months agotop: prepare for more than two abreast summary display
Jim Warner [Sat, 10 Sep 2022 05:00:00 +0000 (00:00 -0500)]
top: prepare for more than two abreast summary display

I guess the cat's out of the bag with the prior commit
message. It mentioned the objective of displaying more
than the current two cpu graphs on summary area lines.

On the way to that objective, this patch just prepares
our battlefield for the actual implementation in which
up to 8 individual cpu graphs will be shown on 1 line.

[ no logic has been impacted with this commit. we're ]
[ just adding one manifest constant, trading several ]
[ identifiers and updating some comments so the next ]
[ commit might be just a little bit more manageable. ]

Signed-off-by: Jim Warner <james.warner@comcast.net>
20 months agotop: better graphic scaling in cpu/mem summary display
Jim Warner [Fri, 9 Sep 2022 05:00:00 +0000 (00:00 -0500)]
top: better graphic scaling in cpu/mem summary display

This program has always been sensitive to the width of
a terminal/console. The detailed cpu/memory statistics
plus all of those full screen replacement windows were
designed to fit within some 80 column, 24 row display.

When a user narrowed a gui terminal to less than those
dimensions, top would simply truncate the data to fit.
However, when displaying cpu/mem graphs instead of the
detailed statistics such truncation was not justified.
After all, such graphs were already scaled to 80 cols.

Henceforth, when in graph mode, truncation won't occur
until the graphs will no longer fit within 10 columns.

[ can you keep a secret? this change is really being ]
[ made in anticipation of showing more than just two ]
[ cpu graphs in the summary area on each screen row! ]

Signed-off-by: Jim Warner <james.warner@comcast.net>
20 months agotop: refactor graph support of cpu/mem summary display
Jim Warner [Fri, 9 Sep 2022 05:00:00 +0000 (00:00 -0500)]
top: refactor graph support of cpu/mem summary display

The logic (illogic?) in the sum_tics() and do_memory()
functions has grown to become almost unfathomable over
time. Additionally, though perhaps not apparent in the
code, many steps are duplicated within those routines.

So, this patch refactors all the summary graph support
to consolidate duplicated code and (hopefully) make it
more understandable with an eye to future maintenance.

[ additionally, that show_special guy's workload has ]
[ been reduced by eliminating any special directives ]
[ previously embedded in some cpu graphs even though ]
[ a cpu may have been idle during the last interval. ]

Signed-off-by: Jim Warner <james.warner@comcast.net>
20 months agotop: eliminate that 'TOG4_NOTRUNC' compile conditional
Jim Warner [Thu, 8 Sep 2022 05:00:00 +0000 (00:00 -0500)]
top: eliminate that 'TOG4_NOTRUNC' compile conditional

When 2 abreast cpu display was introduced, the minimum
screen width was 160 columns so as to avoid (minimize)
truncation. Later that was reduced to 80 columns while
keeping the original minimum as a compile conditional.

In preparation for (virtually) eliminating these width
restrictions in a future patch this #define's history.

Reference(s):
. May, 2020 - introduced #define TOG4_NOTRUNC
commit be3dcaa842cb64859e356d350c17de34932e5f1b
. May, 2020 - introduce 2 abreast display
commit 59f5a37a247184b3009af963706ca68198067185

Signed-off-by: Jim Warner <james.warner@comcast.net>
20 months agotop: eliminate that 'TOG4_NOFORCE' compile conditional
Jim Warner [Thu, 8 Sep 2022 05:00:00 +0000 (00:00 -0500)]
top: eliminate that 'TOG4_NOFORCE' compile conditional

When two abreast display was introduce, in that commit
shown below, this #define provision was also added. It
actually was an artifact left from program development
and never made much sense in a real world application.

If activated it would make the '4' toggle appear to be
broken since it would only take affect if a user first
activated individual cpu display (the '1' toggle off).
And there was no error message offered to those users.

So, this questionable #define is now being eliminated.

Reference(s):
. May, 2020 - introduce 2 abreast display
commit 59f5a37a247184b3009af963706ca68198067185

Signed-off-by: Jim Warner <james.warner@comcast.net>
20 months agotop: fix an improper behavior following a SIGWINCH bug
Jim Warner [Wed, 7 Sep 2022 05:00:00 +0000 (00:00 -0500)]
top: fix an improper behavior following a SIGWINCH bug

When top was made more responsive to keyboard input in
that commit referenced below, his previous response to
a SIGWINCH was upset. Formerly, that display integrity
was restored with the next refresh cycle. But, without
this patch, one must strike some key to accomplish it.

[ in truth, this patch vastly improves that sigwinch ]
[ response. whereas before, although integrity would ]
[ be restored automatically, it did not happen until ]
[ the next regular refresh. now it is instantaneous! ]

Reference(s):
. May, 2022 - made more responsive to kdb input
commit 3ea1bc779fb7ca5bf065a5ca620ec5b5823bc61c

Signed-off-by: Jim Warner <james.warner@comcast.net>
20 months agolibrary: address an 'uninitialised value' VALGRIND bug
Jim Warner [Wed, 7 Sep 2022 05:00:00 +0000 (00:00 -0500)]
library: address an 'uninitialised value' VALGRIND bug

Thanks to valgrind and his --track-origins=yes option,
the problem and solution was suggested as shown below.

[ and it was created in that commit referenced below ]

But, after attacking this problem by adding a memset()
call in pids.c, a 2nd valgrind oops, also shown below,
was encountered. The dynamically acquired 'cmd' again!

[ might help to explain why changes appear excessive ]

Reference(s):
. 1st valgrind discovery
==11111== Conditional jump or move depends on uninitialised value(s)
==11111==    at 0x13425D: stat2proc (readproc.c:582)
==11111==    by 0x137436: look_up_our_self (readproc.c:1613)
==11111==    by 0x132196: fatal_proc_unmounted (pids.c:1388)
==11111==    by 0x11BA4D: before (top.c:3580)
==11111==    by 0x127E10: main (top.c:7173)
==11111==  Uninitialised value was created by a stack allocation
==11111==    at 0x132165: fatal_proc_unmounted (pids.c:1381)

. Jul, 2022 - fatal_proc_unmounted refactored
commit 52bd019d8ca09ecfec34b5020eb7b8d612c315f8

. 2nd valgrind discovery
==22222== 16 bytes in 1 blocks are definitely lost
==22222==    by 0x4A0E60E: strdup (strdup.c:42)
==22222==    by 0x133D00: stat2proc (readproc.c:587)
==22222==    by 0x136E67: look_up_our_self (readproc.c:1613)
==22222==    by 0x131BC7: fatal_proc_unmounted (pids.c:1390)
==22222==    by 0x11B7C6: before (top.c:3580)
==22222==    by 0x127828: main (top.c:7173)

Signed-off-by: Jim Warner <james.warner@comcast.net>
21 months agonls: Update man-po for EIP updates v4.0.1rc1
Craig Small [Mon, 5 Sep 2022 07:50:54 +0000 (17:50 +1000)]
nls: Update man-po for EIP updates

References:
 commit 3fa04fa9471cc1020c8c7e534ef1d4fa500c90d6

21 months agonls: Update translations for ignore ancestors
Craig Small [Mon, 5 Sep 2022 07:46:40 +0000 (17:46 +1000)]
nls: Update translations for ignore ancestors

References:
 commit 4b44ab98c144dae099442e30a62966a7689818c6

21 months agodocs: add info on why eip and esp are zeroed out
Eduardo Damato [Fri, 26 Aug 2022 11:05:02 +0000 (08:05 -0300)]
docs: add info on why eip and esp are zeroed out

21 months agoImprove trace().
Rafael Kitover [Fri, 15 Oct 2021 04:40:03 +0000 (04:40 +0000)]
Improve trace().

Turn on trace() with the TRACE macro and remove the ## token paste
preprocessor operator which is unnecessary here and causes these errors:

ps/common.h:176:26: error: pasting "(" and ""ps_argv[thisarg] is %s\n""
does no t give a valid preprocessing token
.

Send trace output to STDERR.

Tracing can be enabled by adding TRACE to CPPFLAGS as follows:

./configure CPPFLAGS="-DTRACE"

Signed-off-by: Rafael Kitover <rkitover@gmail.com>
21 months agopgrep: Look at all ancestors in --ignore-ancestors
Chris Down [Wed, 31 Aug 2022 08:59:47 +0000 (09:59 +0100)]
pgrep: Look at all ancestors in --ignore-ancestors

Previously we mistakenly only checked one previous level of the
hierarchy.

Signed-off-by: Chris Down <chris@chrisdown.name>
21 months agomisc: Update NEWS/man date for pgrep -A
Craig Small [Wed, 31 Aug 2022 07:43:17 +0000 (17:43 +1000)]
misc: Update NEWS/man date for pgrep -A

Added NEWS item
Update pgrep.1 date

References:
 commit 4b44ab98c144dae099442e30a62966a7689818c6

21 months agonls: Update man translations for new library
Craig Small [Wed, 31 Aug 2022 07:40:50 +0000 (17:40 +1000)]
nls: Update man translations for new library

Library translations now use the new library and include
path.

References:
 commit 1502648ff9aef047286db2e03a3e1a872d40a0e2

Signed-off-by: Craig Small <csmall@dropbear.xyz>
21 months agopgrep: Add support for ignoring ancestors with -A/--ignore-ancestors
Chris Down [Wed, 10 Aug 2022 13:07:38 +0000 (14:07 +0100)]
pgrep: Add support for ignoring ancestors with -A/--ignore-ancestors

pgrep and friends naturally filter their own processes from their
matches. The same issue can occur when elevating with tools like sudo or
doas, where the elevating shim layers linger as a parent and are
returned in the results. For example:

    % sudo pkill -9 -cf someelevatedcmdline
    1
    zsh: killed     sudo pkill -9 -cf someelevatedcmdline

This is a situation we've actually seen in production, where some poor
soul changes how permission management works (for example with Linux's
hidepid option), needs to elevate a pgrep or pkill call, and now ends up
with more than they bargained for. Even after the issue is noticed,
resolving it requires reinventing some of the pgrep logic, which is
unfortunate.

This commit adds the -A/--ignore-ancestors option which excludes pgrep's
ancestors from the results:

    % sudo ./pkill -9 -Acf someelevatedcmdline
    0

We looks at multiple layers of the process hierarchy because, while
things like sudo only have one layer of shimming, some mechanisms (like
those found in a typical container manager like those found in Docker or
Kubernetes) may have many more.

Signed-off-by: Chris Down <chris@chrisdown.name>
21 months agobuild-sys: Fix paths for check-lib
Craig Small [Wed, 31 Aug 2022 07:30:34 +0000 (17:30 +1000)]
build-sys: Fix paths for check-lib

Forgot to move the location for test_Itemtables

Signed-off-by: Craig Small <csmall@dropbear.xyz>