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