We could special-case that and turn it into 0. That would introduce a
0.01 second blip, which would be better than a 41 second window for
bad behaviour like we have at the moment.
It's also possible that many applications already don't check for
errors. For example, glibc deliberately doesn't check for errors when
it calls __times in the clock() implementation. There is a comment in
sysdeps/unix/sysv/linux/clock.c that says this:
/* We don't check for errors here. The only error the kernel
returns is EFAULT if the value cannot be written to the struct we
pass a pointer to. Otherwise the kernel returns an `unsigned
long' value which is the number of jiffies since system start.
But this number can be negative (when read as `long') when the
system is up for some time. Ignoring errors should therefore
have no negative impacts but solve the problem. */
__times (&buf);
Paul.
-