From 01e0fc70f84234cf3ea7ffd3a8302f132014109d Mon Sep 17 00:00:00 2001 From: Craig Tiller Date: Mon, 9 Sep 2024 10:24:01 -0700 Subject: [PATCH] [tsan] Race fix in chaotic good client transport --- src/core/ext/transport/chaotic_good/client_transport.cc | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/core/ext/transport/chaotic_good/client_transport.cc b/src/core/ext/transport/chaotic_good/client_transport.cc index f4d6a3ab6c2..3249ff33b3a 100644 --- a/src/core/ext/transport/chaotic_good/client_transport.cc +++ b/src/core/ext/transport/chaotic_good/client_transport.cc @@ -254,13 +254,14 @@ uint32_t ChaoticGoodClientTransport::MakeStream(CallHandler call_handler) { const uint32_t stream_id = next_stream_id_++; stream_map_.emplace(stream_id, call_handler); lock.Release(); - call_handler.OnDone([this, stream_id](bool cancelled) { + call_handler.OnDone([self = RefAsSubclass(), + stream_id](bool cancelled) { if (cancelled) { - outgoing_frames_.MakeSender().UnbufferedImmediateSend( + self->outgoing_frames_.MakeSender().UnbufferedImmediateSend( CancelFrame{stream_id}); } - MutexLock lock(&mu_); - stream_map_.erase(stream_id); + MutexLock lock(&self->mu_); + self->stream_map_.erase(stream_id); }); return stream_id; }