Browse Source

coroutine: Remove on-stack buffers from testcases

In preparation for enabling valgrind tests, remove instances where we
allocate a coroutine's stack from a buffer itself on the stack.  Not all
that surprisingly, valgrind gets very, very confused by having one
"thread"'s stack embedded within another's.

Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
David Gibson 9 years ago
parent
commit
f6557ca653
2 changed files with 10 additions and 4 deletions
  1. 2 1
      ccan/coroutine/test/api-1.c
  2. 8 3
      ccan/coroutine/test/api-3.c

+ 2 - 1
ccan/coroutine/test/api-1.c

@@ -30,9 +30,10 @@ static void test_trivial(struct coroutine_stack *stack)
 }
 
 
+static char buf[COROUTINE_MIN_STKSZ + COROUTINE_STK_OVERHEAD];
+
 int main(void)
 {
-	char buf[COROUTINE_MIN_STKSZ + COROUTINE_STK_OVERHEAD];
 	struct coroutine_stack *stack;
 
 	/* This is how many tests you plan to run */

+ 8 - 3
ccan/coroutine/test/api-3.c

@@ -64,16 +64,19 @@ static void test_metadata(struct coroutine_stack *stack)
 
 int main(void)
 {
-	char buf[BUFSIZE];
+	char *buf;
 	struct coroutine_stack *stack;
 
 	/* This is how many tests you plan to run */
-	plan_tests(9);
+	plan_tests(10);
 
 	/* Fix seed so we get consistent, though pseudo-random results */	
 	srandom(0);
 
-	stack = coroutine_stack_init(buf, sizeof(buf), sizeof(struct metadata));
+	buf = malloc(BUFSIZE);
+	ok1(buf != NULL);
+
+	stack = coroutine_stack_init(buf, BUFSIZE, sizeof(struct metadata));
 	ok1(stack != NULL);
 	ok1(coroutine_stack_check(stack, NULL) == stack);
 	ok1(coroutine_stack_size(stack)
@@ -83,6 +86,8 @@ int main(void)
 
 	coroutine_stack_release(stack, sizeof(struct metadata));
 
+	free(buf);
+
 	/* This exits depending on whether all tests passed */
 	return exit_status();
 }