diff --git a/src/core/lib/surface/completion_queue.c b/src/core/lib/surface/completion_queue.c
index 8067b1000dfc70ac2e721279980841e0f3bc0bae..14e55eda8521bd79c8d0c1db342a216ab4173e72 100644
--- a/src/core/lib/surface/completion_queue.c
+++ b/src/core/lib/surface/completion_queue.c
@@ -946,6 +946,7 @@ static void cq_shutdown_next(grpc_exec_ctx *exec_ctx,
   gpr_mu_lock(cq->mu);
   if (cqd->shutdown_called) {
     gpr_mu_unlock(cq->mu);
+    GRPC_CQ_INTERNAL_UNREF(exec_ctx, cq, "shutting_down");
     GPR_TIMER_END("grpc_completion_queue_shutdown", 0);
     return;
   }