This is the mail archive of the cygwin mailing list for the Cygwin project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: strange bug in gettimeofday function


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/


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]