diff --git a/system/ulib/unittest/crash-handler.cpp b/system/ulib/unittest/crash-handler.cpp
index 58ec65d16f8e010cd3fc968e625f063614f80953..d2fdc16ffada5deba374c53e79900da2fc5279ca 100644
--- a/system/ulib/unittest/crash-handler.cpp
+++ b/system/ulib/unittest/crash-handler.cpp
@@ -33,7 +33,8 @@
  * If the crash was not registered, it will be bubbled up to the crashlogger,
  * and then the test will be terminated.
  */
-static void process_exception(crash_list_t crash_list, const zx_port_packet_t* packet) {
+static void process_exception(crash_list_t crash_list, const zx_port_packet_t* packet,
+                              zx_handle_t exception_port) {
     const zx_packet_exception_t* exception = &packet->exception;
 
     // Check for exceptions from registered processes that are not really crashes.
@@ -58,7 +59,7 @@ static void process_exception(crash_list_t crash_list, const zx_port_packet_t* p
                     exit(ZX_ERR_INTERNAL);
                 }
             }
-            status = zx_task_resume(thread, ZX_RESUME_EXCEPTION);
+            status = zx_task_resume_from_exception(thread, exception_port, 0);
             if (status != ZX_OK) {
                 UNITTEST_FAIL_TRACEF("FATAL: failed to resume [%" PRIu64 ".%" PRIu64
                                      "] : error %s\n",
@@ -112,7 +113,7 @@ static void process_exception(crash_list_t crash_list, const zx_port_packet_t* p
             exit(ZX_ERR_INTERNAL);
         }
         // Pass the exception up to crashlogger.
-        status = zx_task_resume(thread, ZX_RESUME_EXCEPTION | ZX_RESUME_TRY_NEXT);
+        status = zx_task_resume_from_exception(thread, exception_port, ZX_RESUME_TRY_NEXT);
         if (status == ZX_OK) {
             // Give crashlogger a little time to print info about the crashed
             // thread.
@@ -160,7 +161,7 @@ static test_result_t watch_test_thread(zx_handle_t port, crash_list_t crash_list
         }
         switch (packet.key) {
         case EXCEPTION_PORT_KEY:
-            process_exception(crash_list, &packet);
+            process_exception(crash_list, &packet, port);
             break;
         case TEST_ENDED_EVENT_KEY:
             if (packet.signal.observed & TEST_PASSED_SIGNAL) {