diff options
author | Craig Small <csmall@users.sourceforge.net> | 2012-08-31 14:37:57 +1000 |
---|---|---|
committer | Craig Small <csmall@users.sourceforge.net> | 2012-08-31 14:37:57 +1000 |
commit | 76e7557e332f0724dc9a4efc3d0ddbea83d9e579 (patch) | |
tree | ef3506096dc8b4388e363ff60abbd4770c60eb78 | |
parent | be54c4182c7826ab633d3f39904db441e960e497 (diff) |
force process age >= 0
sometimes some small numbers would hit an assert around process age,
this fix just makes really young processes have an age of 0
Bug-Debian: http://bugs.debian.org/628617
-rw-r--r-- | src/killall.c | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/src/killall.c b/src/killall.c index a26c458..9f2782a 100644 --- a/src/killall.c +++ b/src/killall.c @@ -142,9 +142,13 @@ uptime() /* process age from jiffies to seconds via uptime */ static double process_age(const unsigned long long jf) { - double sc_clk_tck = sysconf(_SC_CLK_TCK); - assert(sc_clk_tck > 0); - return uptime() - jf / sc_clk_tck; + double age; + double sc_clk_tck = sysconf(_SC_CLK_TCK); + assert(sc_clk_tck > 0); + age = uptime() - jf / sc_clk_tck; + if (age < 0L) + return 0L; + return age; } /* returns requested time interval in seconds, @@ -381,7 +385,6 @@ kill_all (int signal, int names, char **namelist, struct passwd *pwent) continue; } process_age_sec = process_age(proc_stt_jf); - assert(process_age_sec >= 0L); } (void) fclose (file); |