Date: 17 Sep 2002 16:13:34 -0000 From: Karl Lehenbauer <karl@habitat.procplace.com> To: FreeBSD-gnats-submit@FreeBSD.org Subject: kern/42875: gettimeofday super rarely returns an impossible tv_usec value Message-ID: <20020917161334.20862.qmail@habitat.procplace.com>
next in thread | raw e-mail | index | archive | help
>Number: 42875 >Category: kern >Synopsis: gettimeofday super rarely returns an impossible tv_usec value >Confidential: no >Severity: serious >Priority: high >Responsible: freebsd-bugs >State: open >Quarter: >Keywords: >Date-Required: >Class: sw-bug >Submitter-Id: current-users >Arrival-Date: Tue Sep 17 09:20:01 PDT 2002 >Closed-Date: >Last-Modified: >Originator: Karl Lehenbauer >Release: FreeBSD 4.6-STABLE i386 >Organization: Procplace.com, Inc. >Environment: System: FreeBSD habitat.procplace.com 4.6-STABLE FreeBSD 4.6-STABLE #3: Mon Aug 5 22:36:39 CDT 2002 dbaker@habitat.procplace.com:/usr/local/dbakerspawn/builds/obj/RELENG_4/usr/local/dbakerspawn/RELENG/4/src/sys/2UIAHPROCPLACE i386 >Description: Maybe one in thirty million times, gettimeofday will return an invalid tv_usec value (microseconds). It should ALWAYS be between 0 and 999999, but it is occasionally a very large negative number. >How-To-Repeat: Compile this program and let it run for a super long time. Preferably use a machine that is actually doing stuff. /* detect freebsd gettimeofday bug */ #include <stdio.h> #include <unistd.h> #include <sys/time.h> check() { struct timeval tv; if (gettimeofday(&tv, NULL) == -1) { perror("gettimeofday"); return; } if (tv.tv_usec < 0 || tv.tv_usec >= 1000000) { printf("cazart! gettimeofday returned impossible tv_usec value of %d\n", tv.tv_usec); } } main() { int i; for (i = 0; i < 1000000; i++) { int j; for (j = 0; i < 100; j++) { check(); } usleep((i % 8) + 1); } } >Fix: Locate and repair bug in kernel that allows invalid tv_usec calls to be returned. >Release-Note: >Audit-Trail: >Unformatted: To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-bugs" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20020917161334.20862.qmail>