From 501b895736b196dcbb4efa6df77bb39220c74a07 Mon Sep 17 00:00:00 2001 From: Craig Tiller Date: Mon, 4 Dec 2023 12:04:41 -0800 Subject: [PATCH] [fuzzing-heck] Fix a bug that comes up with promises + work serializer dispatch (#35196) b/310341170 I'm kind of proud of our testing for finding this Closes #35196 COPYBARA_INTEGRATE_REVIEW=https://github.com/grpc/grpc/pull/35196 from ctiller:fuzz-no 28c95606f97732ea1069f3eb067484f9a3f84ec1 PiperOrigin-RevId: 587798657 --- src/core/ext/filters/client_channel/client_channel.cc | 8 ++++++++ .../negative_deadline/5769288995635200 | 11 +++++++++++ 2 files changed, 19 insertions(+) create mode 100644 test/core/end2end/end2end_test_corpus/negative_deadline/5769288995635200 diff --git a/src/core/ext/filters/client_channel/client_channel.cc b/src/core/ext/filters/client_channel/client_channel.cc index b5064ceb20f..197173aa7e0 100644 --- a/src/core/ext/filters/client_channel/client_channel.cc +++ b/src/core/ext/filters/client_channel/client_channel.cc @@ -315,6 +315,14 @@ class ClientChannel::PromiseBasedCallData : public ClientChannel::CallData { public: explicit PromiseBasedCallData(ClientChannel* chand) : chand_(chand) {} + ~PromiseBasedCallData() override { + if (was_queued_ && client_initial_metadata_ != nullptr) { + MutexLock lock(&chand_->resolution_mu_); + RemoveCallFromResolverQueuedCallsLocked(); + chand_->resolver_queued_calls_.erase(this); + } + } + ArenaPromise> MakeNameResolutionPromise( CallArgs call_args) { pollent_ = NowOrNever(call_args.polling_entity->WaitAndCopy()).value(); diff --git a/test/core/end2end/end2end_test_corpus/negative_deadline/5769288995635200 b/test/core/end2end/end2end_test_corpus/negative_deadline/5769288995635200 new file mode 100644 index 00000000000..bb65fceedf8 --- /dev/null +++ b/test/core/end2end/end2end_test_corpus/negative_deadline/5769288995635200 @@ -0,0 +1,11 @@ +test_id: 3 +event_engine_actions { + run_delay: 9851624184873214 + run_delay: 1 + run_delay: 1 + run_delay: 0 + run_delay: 53876069761024 +} +config_vars { + experiments: 280384054960896 +}