diff --git a/src/core/iomgr/iomgr.c b/src/core/iomgr/iomgr.c
index 7e6315a8ccf16f719bb127b812f06f04329a954d..9bbff4104ccb28c0bd20ac21c4e2db6804b00794 100644
--- a/src/core/iomgr/iomgr.c
+++ b/src/core/iomgr/iomgr.c
@@ -107,6 +107,7 @@ void grpc_iomgr_shutdown(void) {
   gpr_timespec shutdown_deadline =
       gpr_time_add(gpr_now(), gpr_time_from_seconds(10));
 
+  grpc_alarm_list_shutdown();
 
   gpr_mu_lock(&g_mu);
   g_shutdown = 1;
@@ -153,7 +154,6 @@ void grpc_iomgr_shutdown(void) {
   gpr_event_wait(&g_background_callback_executor_done, gpr_inf_future);
 
   grpc_iomgr_platform_shutdown();
-  grpc_alarm_list_shutdown();
   gpr_mu_destroy(&g_mu);
   gpr_cv_destroy(&g_rcv);
 }