The gnulib implementation of 'times' for MS-Windows uses the process creation time returned by the GetProcessTimes API to construct the value that the function should return.
This has 2 problems: . The value is constant: every call to 'times' within the same process returns the same value. Callers generally expect the value to change, since Posix says the value is the elapsed time since some arbitrary point in time, and that point doesn't change for function calls in the same process. For example, Guile's test suite includes a test that calls 'times', sleeps for a few seconds, then calls 'times' again, and expects the return value to change by approximately the number of seconds it slept. . The value overflows the clock_t data type (which is 32 bits wide), because its point of origin is Jan 1, 1601. This is unnecessary, since the point of origin can change from process to process. To fix both issues, I suggest the following simple change: --- lib/times.c~0 2014-02-15 01:00:33 +0200 +++ lib/times.c 2014-06-08 18:12:53 +0300 @@ -62,5 +62,5 @@ times (struct tms * buffer) buffer->tms_cutime = 0; buffer->tms_cstime = 0; - return filetime2clock (creation_time); + return clock (); } The function 'clock' in its Windows implementation returns the number of clock ticks since the time the calling process started. Thanks.