coroutine: Remove problematic diagnostic from api-3 test
authorDavid Gibson <david@gibson.dropbear.id.au>
Tue, 24 Jan 2017 06:59:16 +0000 (17:59 +1100)
committerDavid Gibson <david@gibson.dropbear.id.au>
Tue, 24 Jan 2017 10:22:27 +0000 (21:22 +1100)
The api-3 testcase devotes most of its available stack space to a test
buffer, leaving only a small amount (COROUTINE_MIN_STKSZ) for the actual
stack usage of the coroutine.

It turns out that the ccan/tap diag() function can - depending on compiler
version and flags, and on whether diagnostics are enabled - exceed that
limited stack space.  That leads to a stack overrun, and in turn corruption
of the parent routine's stack, generating unpredictable and hard to debug
SEGVs.

At present, this bug seems to be tripped by clang-3.8 when diagnostic
messages are printed.

This removes the troublesome diag() call.

Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
ccan/coroutine/test/api-3.c

index e06c03d3c47f2eec23e4dd9c0bee666ecd1ee0f6..dcc3531250683d49c3ef3d9c52281917e9445598 100644 (file)
@@ -27,8 +27,6 @@ static void clobber(void *p)
                buf[i] = random() & 0xff;
        }
 
-       diag("Wrote random to buffer\n");
-
        s->total = 0;
        for (i = 0; i < sizeof(buf); i++) {
                s->total += buf[i];