summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorCraig Small <csmall@users.sourceforge.net>2012-08-31 14:37:57 +1000
committerCraig Small <csmall@users.sourceforge.net>2012-08-31 14:37:57 +1000
commit76e7557e332f0724dc9a4efc3d0ddbea83d9e579 (patch)
treeef3506096dc8b4388e363ff60abbd4770c60eb78
parentbe54c4182c7826ab633d3f39904db441e960e497 (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.c11
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);