diff --git a/zircon/system/core/devmgr/devcoordinator/devfs.cpp b/zircon/system/core/devmgr/devcoordinator/devfs.cpp
index 2d84851bd9da5bf81ed1186fe51bf8c05baffdca..a3a036c56aa9e2d3796ca73cfc33bbaffa5d36fd 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 a88c22a10d0d34ad9a490d3eb6a9e500ba62d470..3a5a75cb5adfe07f169a359a2fe880684c660212 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 48dbaf260082f31bcd810cb136d376c049783bb1..50d14d0b85940ca6a67082f30625643a3c4277dc 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),