Andrew Makhorin wrote: >> Hi, >> >> I detected a strange bug in the standard function gettimeofday. >> It *sometimes* reports the time which being expressed as the integer >> number of milliseconds is *less* than the time obtained *earlier* >> with the same function. >> >> The expression 1000000 * tv.tv_sec + tv.tv_usec is calculated in >> 64-bit arithmetic, so overflow cannot happen. The negative difference >> in the time values on two successive calls is about 100 milliseconds.
Is this a dual-core AMD perchance? There are some high-performance timing instructions that can get off between the two cores. I wouldn't think that gettimeofday would use these, but maybe? Let's see, it looks like the RDTSC instruction, or the Windows QueryPerformanceCounter(). This problem doesn't occur on Intel multi-cores. It is caused by AMD attempting to save power by throttling the cores back separately. You can google for lots of information about the pros/cons of different patches by Microsoft and AMD to resolve the problem. I don't have the cygwin source to check if these are used anywhere. Cary -- Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple Problem reports: http://cygwin.com/problems.html Documentation: http://cygwin.com/docs.html FAQ: http://cygwin.com/faq/