strange bug in gettimeofday function

Cary Jamison Cary_Jamison@Symantec.com
Mon Feb 12 21:18:00 GMT 2007


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/



More information about the Cygwin mailing list