diff --git a/src/core/ext/transport/chttp2/transport/chttp2_transport.c b/src/core/ext/transport/chttp2/transport/chttp2_transport.c
index 310bca0b1f856fe66cbc8496e66c74f411bc80af..cf2c38f287fd508ad9ac9a2703f830cbc81860a7 100644
--- a/src/core/ext/transport/chttp2/transport/chttp2_transport.c
+++ b/src/core/ext/transport/chttp2/transport/chttp2_transport.c
@@ -720,6 +720,8 @@ static void maybe_start_some_streams(grpc_exec_ctx *exec_ctx,
 #define CLOSURE_BARRIER_FIRST_REF_BIT (1 << 16)
 
 static grpc_closure *add_closure_barrier(grpc_closure *closure) {
+  gpr_log(GPR_DEBUG, "add_closure_barrier[%p]: scratch=%" PRIdPTR, closure,
+          closure->next_data.scratch);
   closure->next_data.scratch += CLOSURE_BARRIER_FIRST_REF_BIT;
   return closure;
 }
@@ -734,6 +736,8 @@ void grpc_chttp2_complete_closure_step(grpc_exec_ctx *exec_ctx,
     GRPC_ERROR_UNREF(error);
     return;
   }
+  gpr_log(GPR_DEBUG, "complete_closure_step[%p]: scratch=%" PRIdPTR, closure,
+          closure->next_data.scratch);
   closure->next_data.scratch -= CLOSURE_BARRIER_FIRST_REF_BIT;
   if (error != GRPC_ERROR_NONE) {
     if (closure->error == GRPC_ERROR_NONE) {
@@ -772,6 +776,10 @@ static void add_fetched_slice_locked(grpc_exec_ctx *exec_ctx,
 static void continue_fetching_send_locked(grpc_exec_ctx *exec_ctx,
                                           grpc_chttp2_transport *t,
                                           grpc_chttp2_stream *s) {
+  gpr_log(GPR_DEBUG,
+          "continue_fetching_send_locked[%d]: fsm=%p fetched=%d tgt=%d", s->id,
+          s->fetching_send_message, s->fetched_send_message_length,
+          s->fetching_send_message->length);
   if (s->fetching_send_message == NULL) {
     /* Stream was cancelled before message fetch completed */
     abort(); /* TODO(ctiller): what cleanup here? */
diff --git a/src/core/ext/transport/chttp2/transport/writing.c b/src/core/ext/transport/chttp2/transport/writing.c
index e513bd9f5a24d5849df888764c9c08b0404fe438..98c0781ac22f14ff92d2942c05c7eb629e375bc9 100644
--- a/src/core/ext/transport/chttp2/transport/writing.c
+++ b/src/core/ext/transport/chttp2/transport/writing.c
@@ -77,6 +77,13 @@ bool grpc_chttp2_begin_write(grpc_exec_ctx *exec_ctx,
 
   GPR_TIMER_BEGIN("grpc_chttp2_begin_write", 0);
 
+  gpr_log(
+      GPR_DEBUG,
+      "grpc_chttp2_begin_write: outbuf_len0=%" PRIdPTR
+      " dirtied_local_settings=%d sent_local_settings=%d qbuf_len=%" PRIdPTR,
+      t->outbuf.length, t->dirtied_local_settings, t->sent_local_settings,
+      t->qbuf.length);
+
   if (t->dirtied_local_settings && !t->sent_local_settings) {
     gpr_slice_buffer_add(
         &t->outbuf,
@@ -109,8 +116,13 @@ bool grpc_chttp2_begin_write(grpc_exec_ctx *exec_ctx,
     bool sent_initial_metadata = s->sent_initial_metadata;
     bool now_writing = false;
 
-    GRPC_CHTTP2_FLOW_MOVE_STREAM("write", t, s, outgoing_window, s,
-                                 outgoing_window);
+    gpr_log(GPR_DEBUG,
+            "grpc_chttp2_begin_write[%d]: sent_initial_metadata=%d "
+            "send_initial_metadata=%p announce_window=%d fcbuf_len=%" PRIdPTR
+            " s_win=%" PRId64 " t_win=%" PRId64 " send_trailing_metadata=%p",
+            s->id, sent_initial_metadata, s->send_initial_metadata,
+            s->announce_window, s->flow_controlled_buffer.length,
+            s->outgoing_window, t->outgoing_window, s->send_trailing_metadata);
 
     /* send initial metadata if it's available */
     if (!sent_initial_metadata && s->send_initial_metadata) {
@@ -123,7 +135,7 @@ bool grpc_chttp2_begin_write(grpc_exec_ctx *exec_ctx,
       now_writing = true;
     }
     /* send any window updates */
-    if (s->announce_window > 0 && s->send_initial_metadata == NULL) {
+    if (s->announce_window > 0 && s->sent_initial_metadata) {
       uint32_t announce = s->announce_window;
       gpr_slice_buffer_add(&t->outbuf,
                            grpc_chttp2_window_update_create(
@@ -156,7 +168,7 @@ bool grpc_chttp2_begin_write(grpc_exec_ctx *exec_ctx,
                                            send_bytes);
           if (is_last_frame) {
             s->send_trailing_metadata = NULL;
-            s->sent_trailing_metadata = 1;
+            s->sent_trailing_metadata = true;
           }
           s->sending_bytes += send_bytes;
           now_writing = true;