Fix logic race in chttp2 write path
IF: - we schedule a write in chttp2 in response to some stream op (which will cause a write that's covered by a poller to be scheduled on the combiner lock) - AND then, under that same combiner lock, we process a RST_STREAM - then we'll remove the op that's being processed, consequently removing the polling coverage - and then, IF that is the last poll on said transport, the transport will never write, which CAN cause servers to fail to shutdown
Showing
- src/core/ext/transport/chttp2/transport/chttp2_transport.c 50 additions, 9 deletionssrc/core/ext/transport/chttp2/transport/chttp2_transport.c
- src/core/ext/transport/chttp2/transport/internal.h 10 additions, 0 deletionssrc/core/ext/transport/chttp2/transport/internal.h
- src/core/ext/transport/chttp2/transport/writing.c 2 additions, 0 deletionssrc/core/ext/transport/chttp2/transport/writing.c
- src/core/lib/iomgr/combiner.c 9 additions, 2 deletionssrc/core/lib/iomgr/combiner.c
Loading
Please register or sign in to comment