]> granicus.if.org Git - psmisc/commitdiff
force process age >= 0
authorCraig Small <csmall@users.sourceforge.net>
Fri, 31 Aug 2012 04:37:57 +0000 (14:37 +1000)
committerCraig Small <csmall@users.sourceforge.net>
Fri, 31 Aug 2012 04:37:57 +0000 (14:37 +1000)
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

src/killall.c

index a26c4587ad9022e6271b8ab10c5ecebc345d64cc..9f2782ab21b7fa66896d793c885e511238dba75d 100644 (file)
@@ -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);