[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 28c95606f9
PiperOrigin-RevId: 587798657
pull/35195/head^2
Craig Tiller 1 year ago committed by Copybara-Service
parent 207b881868
commit 501b895736
  1. 8
      src/core/ext/filters/client_channel/client_channel.cc
  2. 11
      test/core/end2end/end2end_test_corpus/negative_deadline/5769288995635200

@ -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<absl::StatusOr<CallArgs>> MakeNameResolutionPromise(
CallArgs call_args) {
pollent_ = NowOrNever(call_args.polling_entity->WaitAndCopy()).value();

@ -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
}
Loading…
Cancel
Save