Index: benchmark/io/readv.cfa
===================================================================
--- benchmark/io/readv.cfa	(revision 998c1060e28d11706c02b49c85457ac9f24f8852)
+++ benchmark/io/readv.cfa	(revision 1bcdeff36e0962f7f4f9f423768c8f572f6fa619)
@@ -17,4 +17,5 @@
 #include <time.hfa>
 
+extern bool traceHeapOn();
 extern ssize_t async_preadv2(int fd, const struct iovec *iov, int iovcnt, off_t offset, int flags);
 
@@ -38,6 +39,4 @@
 }
 
-Time now(void);
-
 int main(int argc, char * argv[]) {
 	double duration   = 5.0;
@@ -45,5 +44,7 @@
 	unsigned long int nprocs   = 1;
 
+	printf("Setting local\n");
 	setlocale(LC_NUMERIC, "");
+
 
 	arg_loop:
@@ -76,5 +77,5 @@
 			case 't':
 				nthreads = strtoul(arg, &end, 10);
-				if(*end != '\0') {
+				if(*end != '\0' || nthreads < 1) {
 					fprintf(stderr, "Number of threads must be a positive integer, was %s\n", arg);
 					goto usage;
@@ -83,5 +84,5 @@
 			case 'p':
 				nprocs = strtoul(arg, &end, 10);
-				if(*end != '\0') {
+				if(*end != '\0' || nprocs < 1) {
 					fprintf(stderr, "Number of processors must be a positive integer, was %s\n", arg);
 					goto usage;
@@ -119,5 +120,5 @@
 	Time start, end;
 	{
-		processor procs[nprocs];
+		processor procs[nprocs - 1];
 		{
 			Reader threads[nthreads];
@@ -134,5 +135,4 @@
 		}
 	}
-	printf("Done\n");
 	printf("Took %ld ms\n", (end - start)`ms);
 	printf("Total reads:      %'zu\n", count);
@@ -140,3 +140,4 @@
 
 	close(fd);
+	printf("Done\n");
 }
