kern/78957: time counter per process stops (syscall: getrusage)

Bruce Evans bde at zeta.org.au
Fri Mar 18 01:10:05 PST 2005


The following reply was made to PR kern/78957; it has been noted by GNATS.

From: Bruce Evans <bde at zeta.org.au>
To: Jakub Kruszona-Zawadzki <acid at gemius.pl>
Cc: freebsd-gnats-submit at freebsd.org, freebsd-bugs at freebsd.org
Subject: Re: kern/78957: time counter per process stops (syscall: getrusage)
Date: Fri, 18 Mar 2005 20:06:15 +1100 (EST)

 On Thu, 17 Mar 2005, Jakub Kruszona-Zawadzki wrote:
 
 >> Description:
 > When a process is running for a long time (several days) time counter per process stops on value:
 > ru_utime.tv_sec:305221
 > ru_utime.tv_usec:322735
 
 This may be the same bug as in PR 76972.  Overflow occurs at about
 48592008 ticks = 379625 seconds = 105 hours for a a process that consumes
 100% of the CPU if the statclock frequency is 128 Hz (which is the default
 and not easy to change).  There is another overflow bug at 2^32 ticks = 388
 days.  This one is harder to fix.  See PR 76972 for details and a fix for
 the first overflow bug.
 
 37965 seconds is a little larger than 305221 seconds.  The difference might
 be due to the other 70000+ seconds being in ru_stime.
 
 The behaviour when overflow occurs is undefined, but stopping on a value
 is quite likely to occur due to the algorithm for updating ru_*time.
 Integer overflow tends to cause counters to reset to 0 (or INT_MIN),
 but the kernel enforces monotonicity of the usage times, so they will
 stick instead of going backwards to 0.
 
 Bruce


More information about the freebsd-bugs mailing list