From 6c2f4371bb0b46bbac2a15e1119edbba8d79b7e1 Mon Sep 17 00:00:00 2001 From: Ming-Chuan Date: Mon, 8 May 2023 17:37:17 -0700 Subject: [PATCH] [Binder Transport] Flush ExecCtx in e2e test (#32971) WireWriter implementation schedules actions to be run by `ExecCtx`. We should flush pending actions before destructing `end2end_testing::g_transaction_processor`, which need to be alive to handle the scheduled actions. Otherwise, we get heap-use-after-free error because the testing fixture (`end2end_testing::g_transaction_processor`) is destructed before all the scheduled actions are run. This lowers end2end binder transport test failure rate from 0.23% to 0.15%, according to internal tool that runs the test for 15000 times under various configuration. --- .../transport/binder/end2end/end2end_binder_transport_test.cc | 1 + 1 file changed, 1 insertion(+) diff --git a/test/core/transport/binder/end2end/end2end_binder_transport_test.cc b/test/core/transport/binder/end2end/end2end_binder_transport_test.cc index 91aba5a5d32..2bdb85b3d37 100644 --- a/test/core/transport/binder/end2end/end2end_binder_transport_test.cc +++ b/test/core/transport/binder/end2end/end2end_binder_transport_test.cc @@ -50,6 +50,7 @@ class End2EndBinderTransportTest ~End2EndBinderTransportTest() override { server_->Shutdown(); service_.reset(); + exec_ctx.Flush(); delete end2end_testing::g_transaction_processor; }