| Index: runtime/bin/process.cc
 | 
| diff --git a/runtime/bin/process.cc b/runtime/bin/process.cc
 | 
| index 2c90c11cdbebc29c364aaea4675c86cfc5b14c30..c678dfc4c8b944498eaf0fb971c6ccd048981beb 100644
 | 
| --- a/runtime/bin/process.cc
 | 
| +++ b/runtime/bin/process.cc
 | 
| @@ -4,6 +4,7 @@
 | 
|  
 | 
|  #include "bin/dartutils.h"
 | 
|  #include "bin/io_buffer.h"
 | 
| +#include "bin/log.h"
 | 
|  #include "bin/platform.h"
 | 
|  #include "bin/process.h"
 | 
|  #include "bin/socket.h"
 | 
| @@ -216,8 +217,13 @@ void FUNCTION_NAME(Process_Exit)(Dart_NativeArguments args) {
 | 
|    int64_t status = 0;
 | 
|    // Ignore result if passing invalid argument and just exit 0.
 | 
|    DartUtils::GetInt64Value(Dart_GetNativeArgument(args, 0), &status);
 | 
| -  Dart_ExitIsolate();
 | 
| -  Dart_Cleanup();
 | 
| +  Dart_ShutdownIsolate();
 | 
| +  Process::TerminateExitCodeHandler();
 | 
| +  char* error = Dart_Cleanup();
 | 
| +  if (error != NULL) {
 | 
| +    Log::PrintErr("VM cleanup failed: %s\n", error);
 | 
| +    free(error);
 | 
| +  }
 | 
|    exit(static_cast<int>(status));
 | 
|  }
 | 
|  
 | 
| 
 |