diff --git a/src/core/lib/iomgr/async_execution_lock.c b/src/core/lib/iomgr/async_execution_lock.c
index 3859f474bf7b38b352ae38665e6505cde0bdc9df..96ba175a5a1132d613e6362bdcf4ec158bbae10e 100644
--- a/src/core/lib/iomgr/async_execution_lock.c
+++ b/src/core/lib/iomgr/async_execution_lock.c
@@ -69,6 +69,7 @@ grpc_aelock *grpc_aelock_create(grpc_workqueue *optional_workqueue) {
 static void really_destroy(grpc_aelock *lock) {
   GPR_ASSERT(gpr_atm_no_barrier_load(&lock->state) == 0);
   gpr_mpscq_destroy(&lock->queue);
+  gpr_free(lock);
 }
 
 void grpc_aelock_destroy(grpc_aelock *lock) {