gettimeofday() goes backwards on FreeBSD 4.9 - Mailing list pgsql-hackers
| From | Tom Lane |
|---|---|
| Subject | gettimeofday() goes backwards on FreeBSD 4.9 |
| Date | |
| Msg-id | 764.1070051601@sss.pgh.pa.us Whole thread Raw |
| In response to | Re: about explain analyze (Tom Lane <tgl@sss.pgh.pa.us>) |
| Responses |
Re: gettimeofday() goes backwards on FreeBSD 4.9
Re: gettimeofday() goes backwards on FreeBSD 4.9 Re: gettimeofday() goes backwards on FreeBSD 4.9 |
| List | pgsql-hackers |
I said:
> I'm wondering if there's an actual bug in gettimeofday() in this
> platform, such that once in a while it returns a value that's off
> a minute or so ...
Whoa. Try the following test program. Then send it in to your friendly
local BSD hackers ....
> uname -a
FreeBSD pgsql74.hub.org 4.9-PRERELEASE FreeBSD 4.9-PRERELEASE #3: Sat Sep 20 14:16:48 ADT 2003
root@neptune.hub.org:/usr/obj/usr/src/sys/kernel i386
> ./a.out
out of order tv_sec: 1070050646 939970, prev 1070051342 516165
out of order tv_sec: 1070051342 789127, prev 1070050646 939970
out of order tv_usec: 1070051342 789127, prev 1070050646 939970
out of order tv_sec: 1070050654 690255, prev 1070051350 216448
out of order tv_sec: 1070051350 402412, prev 1070050654 690255
out of order tv_usec: 1070051350 402412, prev 1070050654 690255
out of order tv_sec: 1070050672 990359, prev 1070051368 416546
out of order tv_sec: 1070051368 501648, prev 1070050672 990359
out of order tv_usec: 1070051368 501648, prev 1070050672 990359
out of order tv_sec: 1070050672 990363, prev 1070051368 516557
out of order tv_sec: 1070051368 700227, prev 1070050672 990363
out of order tv_usec: 1070051368 700227, prev 1070050672 990363
out of order tv_sec: 1070050675 740524, prev 1070051371 216718
out of order tv_sec: 1070051371 346521, prev 1070050675 740524
out of order tv_usec: 1070051371 346521, prev 1070050675 740524
out of order tv_sec: 1070050676 440415, prev 1070051371 916605
out of order tv_usec: 1070050676 440415, prev 1070051371 916605
out of order tv_sec: 1070051372 238348, prev 1070050676 440415
out of order tv_usec: 1070051372 238348, prev 1070050676 440415
^C
>
regards, tom lane
#include <stdio.h>
#include <sys/time.h>
int
main()
{struct timeval prevtime;struct timeval curtime;
gettimeofday(&prevtime, NULL);
for (;;){ gettimeofday(&curtime, NULL);
if (curtime.tv_usec < 0 || curtime.tv_usec >= 1000000) fprintf(stderr, "bogus tv_usec: %ld %ld, prev %ld
%ld\n", (long int) curtime.tv_sec, (long int) curtime.tv_usec, (long int)
prevtime.tv_sec, (long int) prevtime.tv_usec);
if (curtime.tv_sec < prevtime.tv_sec || curtime.tv_sec > prevtime.tv_sec + 1) fprintf(stderr, "out of
ordertv_sec: %ld %ld, prev %ld %ld\n", (long int) curtime.tv_sec, (long int)
curtime.tv_usec, (long int) prevtime.tv_sec, (long int) prevtime.tv_usec);
if (curtime.tv_usec < prevtime.tv_usec && curtime.tv_sec != prevtime.tv_sec + 1) fprintf(stderr, "out
oforder tv_usec: %ld %ld, prev %ld %ld\n", (long int) curtime.tv_sec, (long int)
curtime.tv_usec, (long int) prevtime.tv_sec, (long int) prevtime.tv_usec);
prevtime = curtime;}
return 0;
}
pgsql-hackers by date: