From 8aebc7225dc19a5fa679b9cbca1847173566619b Mon Sep 17 00:00:00 2001 From: Yash Tibrewal Date: Tue, 22 May 2018 16:07:49 -0700 Subject: Add comment on the changes --- test/core/end2end/fuzzers/server_fuzzer.cc | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'test/core/end2end/fuzzers/server_fuzzer.cc') diff --git a/test/core/end2end/fuzzers/server_fuzzer.cc b/test/core/end2end/fuzzers/server_fuzzer.cc index 21e99e34d9..d1259259f3 100644 --- a/test/core/end2end/fuzzers/server_fuzzer.cc +++ b/test/core/end2end/fuzzers/server_fuzzer.cc @@ -105,6 +105,13 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) { grpc_server_cancel_all_calls(server); grpc_millis deadline = grpc_core::ExecCtx::Get()->Now() + 5000; for (int i = 0; i <= requested_calls; i++) { + // A single grpc_completion_queue_next might not be sufficient for getting + // the tag from shutdown, because we might potentially get blocked by + // an operation happening on the timer thread. + // For example, the deadline timer might expire, leading to the timer + // thread trying to cancel the RPC and thereby acquiring a few references + // to the call. This will prevent the shutdown to complete till the timer + // thread releases those references. do { ev = grpc_completion_queue_next(cq, gpr_inf_past(GPR_CLOCK_REALTIME), nullptr); -- cgit v1.2.3