From 5e1bb023a26ec0486ce6766283caa02a2e18b319 Mon Sep 17 00:00:00 2001 From: Tanu Kaskinen Date: Mon, 23 Jan 2017 10:38:59 +0200 Subject: [PATCH] thread-test: fix deadlock If we set magic_number to zero, the code will deadlock, because the thread that is waiting for us to set magic_number to non-zero will never progress. The problem was reported here: https://lists.freedesktop.org/archives/pulseaudio-discuss/2017-January/027368.html --- src/tests/thread-test.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/tests/thread-test.c b/src/tests/thread-test.c index 72f21770e..0c83e67e0 100644 --- a/src/tests/thread-test.c +++ b/src/tests/thread-test.c @@ -115,7 +115,10 @@ START_TEST (thread_test) { for (k = 0; k < 100; k++) { pa_assert(magic_number == 0); - magic_number = (int) rand() % 0x10000; + /* There's a thread waiting for us to change magic_number to a non-zero + * value. The "+ 1" part ensures that we don't accidentally set + * magic_number to zero here. */ + magic_number = (int) rand() % 0x10000 + 1; pa_log_info("iteration %i (%i)", k, magic_number);