From d445b6c8d9f1551816bf1ed30fd437b202a4220c Mon Sep 17 00:00:00 2001 From: Todd Eisenberger <teisenbe@google.com> Date: Wed, 13 Mar 2019 13:13:38 -0700 Subject: [PATCH] [devmgr] Use abort() instead of exit() The code was not written with the expectation that global dtors run, and executing them currently results in ASAN violations. Change-Id: Ib9e709483b30a8308af59009c0cbb22fec1fd2e1 --- zircon/system/core/devmgr/devcoordinator/devfs.cpp | 2 +- zircon/system/core/devmgr/devcoordinator/main.cpp | 2 +- zircon/system/core/devmgr/devhost/devhost.cpp | 6 +++--- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/zircon/system/core/devmgr/devcoordinator/devfs.cpp b/zircon/system/core/devmgr/devcoordinator/devfs.cpp index 2d84851bd9d..a3a036c56aa 100644 --- a/zircon/system/core/devmgr/devcoordinator/devfs.cpp +++ b/zircon/system/core/devmgr/devcoordinator/devfs.cpp @@ -833,7 +833,7 @@ void DcIostate::HandleRpc(fbl::unique_ptr<DcIostate> ios, async_dispatcher_t* di }); } else { log(ERROR, "devcoordinator: DcIostate::HandleRpc: invalid signals %x\n", signal->observed); - exit(0); + abort(); } // Do not start waiting again, and destroy |ios| } diff --git a/zircon/system/core/devmgr/devcoordinator/main.cpp b/zircon/system/core/devmgr/devcoordinator/main.cpp index a88c22a10d0..3a5a75cb5ad 100644 --- a/zircon/system/core/devmgr/devcoordinator/main.cpp +++ b/zircon/system/core/devmgr/devcoordinator/main.cpp @@ -770,7 +770,7 @@ void ParseArgs(int argc, char** argv, devmgr::DevmgrArgs* out) { for (const auto& option : options) { printf(" --%s\n", option.name); } - exit(1); + abort(); }; auto check_not_duplicated = [print_usage_and_exit](const char* arg) { diff --git a/zircon/system/core/devmgr/devhost/devhost.cpp b/zircon/system/core/devmgr/devhost/devhost.cpp index 48dbaf26008..50d14d0b859 100644 --- a/zircon/system/core/devmgr/devhost/devhost.cpp +++ b/zircon/system/core/devmgr/devhost/devhost.cpp @@ -632,7 +632,7 @@ void DevcoordinatorConnection::HandleRpc(fbl::unique_ptr<DevcoordinatorConnectio zx_status_t r = dh_handle_rpc_read(wait->object(), conn.get()); if (r != ZX_OK) { log(ERROR, "devhost: devmgr rpc unhandleable ios=%p r=%d. fatal.\n", conn.get(), r); - exit(0); + abort(); } BeginWait(std::move(conn), dispatcher); return; @@ -650,7 +650,7 @@ void DevcoordinatorConnection::HandleRpc(fbl::unique_ptr<DevcoordinatorConnectio } log(ERROR, "devhost: devmgr disconnected! fatal. (conn=%p)\n", conn.get()); - exit(0); + abort(); } log(ERROR, "devhost: no work? %08x\n", signal->observed); BeginWait(std::move(conn), dispatcher); @@ -679,7 +679,7 @@ void DevfsConnection::HandleRpc(fbl::unique_ptr<DevfsConnection> conn, }); } else { printf("dh_handle_fidl_rpc: invalid signals %x\n", signal->observed); - exit(0); + abort(); } // We arrive here if devhost_fidl_handler was a clean close (ERR_DISPATCHER_DONE), -- GitLab