raidtest receives SIGFPE: Core was generated by `raidtest'. Program terminated with signal 8, Arithmetic exception. Reading symbols from /lib/libc.so.6...done. Loaded symbols for /lib/libc.so.6 Reading symbols from /libexec/ld-elf.so.1...done. Loaded symbols for /libexec/ld-elf.so.1 #0 0x000000000040185c in show_stats (secs=0, nbytes=12815872, nreqs=200) at raidtest.c:260 260 printf("Bytes per second: %ju\n", nbytes / secs); (gdb) bt #0 0x000000000040185c in show_stats (secs=0, nbytes=12815872, nreqs=200) at raidtest.c:260 #1 0x0000000000402000 in raidtest_test (argc=0, argv=0x7fffffffea98) at raidtest.c:407 #2 0x000000000040207c in main (argc=6, argv=0x7fffffffea68) at raidtest.c:421 The reason for this is obvious: secs is 0. Fix: In addition to avoiding the division by zero this patch makes raidtest more accurate by not truncating seconds fractions. -- Vasil Dimov gro.DSBeerF@dv % The Roman Rule The one who says it cannot be done should never interrupt the one who is doing it.--9T6inmKABCAjzjTD3cndORtAcbHcFIK5ojU7Paq0GDoMvKI3 Content-Type: text/plain; name="raidtest_accuracy.diff" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="raidtest_accuracy.diff" Index: Makefile =================================================================== RCS file: /usr/local/pcvs/ports/benchmarks/raidtest/Makefile,v retrieving revision 1.4 diff -u -r1.4 Makefile --- Makefile 7 May 2006 12:31:44 -0000 1.4 +++ Makefile 29 Dec 2006 10:15:31 -0000 @@ -7,7 +7,7 @@ # PORTNAME= raidtest -PORTVERSION= 1.0 +PORTVERSION= 1.1 CATEGORIES= benchmarks MASTER_SITES= # none DISTFILES= # none Index: files/Makefile =================================================================== RCS file: /usr/local/pcvs/ports/benchmarks/raidtest/files/Makefile,v retrieving revision 1.1 diff -u -r1.1 Makefile --- files/Makefile 5 Dec 2004 04:13:29 -0000 1.1 +++ files/Makefile 29 Dec 2006 10:15:31 -0000 @@ -1,7 +1,7 @@ # $FreeBSD: ports/benchmarks/raidtest/files/Makefile,v 1.1 2004/12/05 04:13:29 obrien Exp $ PROG= raidtest -NOMAN= true +NO_MAN= true WARNS?= 6 BINDIR?= ${PREFIX}/bin Index: files/raidtest.c =================================================================== RCS file: /usr/local/pcvs/ports/benchmarks/raidtest/files/raidtest.c,v retrieving revision 1.3 diff -u -r1.3 raidtest.c --- files/raidtest.c 29 Dec 2004 01:57:28 -0000 1.3 +++ files/raidtest.c 29 Dec 2006 10:15:31 -0000 @@ -254,11 +254,11 @@ } static void -show_stats(long secs, uintmax_t nbytes, uintmax_t nreqs) +show_stats(double secs, uintmax_t nbytes, uintmax_t nreqs) { - printf("Bytes per second: %ju\n", nbytes / secs); - printf("Requests per second: %ju\n", nreqs / secs); + printf("Bytes per second: %ju\n", (uintmax_t)(nbytes / secs)); + printf("Requests per second: %ju\n", (uintmax_t)(nreqs / secs)); } static void @@ -266,7 +266,7 @@ { uintmax_t i, nbytes, nreqs, nrreqs, nwreqs, reqs_per_proc, nstart; const char *dev, *file = NULL; - struct timeval tstart, tend; + struct timeval tstart, tend, tdiff; struct ioreq *iorqs; unsigned nprocs; struct stat sb; @@ -404,7 +404,9 @@ wait(&status); } gettimeofday(&tend, NULL); - show_stats(tend.tv_sec - tstart.tv_sec, nbytes, nreqs); + timersub(&tend, &tstart, &tdiff); + show_stats(tdiff.tv_sec + (double)tdiff.tv_usec / 1000000, + nbytes, nreqs); } int How-To-Repeat: Run test which finishes in less than one second.
Responsible Changed From-To: freebsd-ports-bugs->pjd Over to maintainer
vd 2007-01-23 10:26:06 UTC FreeBSD ports repository Modified files: benchmarks/raidtest Makefile benchmarks/raidtest/files Makefile raidtest.c Log: * Make benchmarks/raidtest more accurate and avoid crashes * Bump PORTVERSION * s/NOMAN/NO_MAN PR: ports/107311 Submitted by: vd Approved by: pjd@FreeBSD.org (maintainer timeout) Revision Changes Path 1.5 +1 -1 ports/benchmarks/raidtest/Makefile 1.2 +1 -1 ports/benchmarks/raidtest/files/Makefile 1.4 +8 -6 ports/benchmarks/raidtest/files/raidtest.c _______________________________________________ cvs-all@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/cvs-all To unsubscribe, send any mail to "cvs-all-unsubscribe@freebsd.org"
State Changed From-To: open->closed Committed (maintainer timeout)