diff --git a/src/core/lib/iomgr/combiner.c b/src/core/lib/iomgr/combiner.c index eb476c057292c0df756dd89ddb06dc2ab294ea7d..25b2ec3d4c5eff38a95451d5c8ccf543c6194f77 100644 --- a/src/core/lib/iomgr/combiner.c +++ b/src/core/lib/iomgr/combiner.c @@ -155,11 +155,12 @@ static bool start_execute_final(grpc_exec_ctx *exec_ctx, grpc_combiner *lock) { gpr_log(GPR_DEBUG, "C:%p start_execute_final take_async_break_before_final_list=%d", lock, lock->take_async_break_before_final_list)); - if (lock->take_async_break_before_final_list) { + if (lock->optional_workqueue != NULL && + lock->take_async_break_before_final_list) { grpc_closure_init(&lock->continue_finishing, continue_executing_final, lock); - grpc_exec_ctx_sched(exec_ctx, &lock->continue_finishing, GRPC_ERROR_NONE, - GRPC_WORKQUEUE_REF(lock->optional_workqueue, "sched")); + grpc_workqueue_enqueue(exec_ctx, lock->optional_workqueue, + &lock->continue_finishing, GRPC_ERROR_NONE); GPR_TIMER_END("combiner.start_execute_final", 0); return false; } else {