From: David Gibson Date: Tue, 24 Jan 2017 06:59:16 +0000 (+1100) Subject: coroutine: Remove problematic diagnostic from api-3 test X-Git-Url: https://git.ozlabs.org/?p=ccan;a=commitdiff_plain;h=ace6131ed7d12a48fc6f019a0d69e94f30c5cd3e coroutine: Remove problematic diagnostic from api-3 test 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 --- diff --git a/ccan/coroutine/test/api-3.c b/ccan/coroutine/test/api-3.c index e06c03d3..dcc35312 100644 --- a/ccan/coroutine/test/api-3.c +++ b/ccan/coroutine/test/api-3.c @@ -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];