Flutter Engine
The Flutter Engine
error_exit.cc
Go to the documentation of this file.
1// Copyright (c) 2017, the Dart project authors. Please see the AUTHORS file
2// for details. All rights reserved. Use of this source code is governed by a
3// BSD-style license that can be found in the LICENSE file.
4
5#include "bin/error_exit.h"
6
7#include "bin/eventhandler.h"
8#include "bin/platform.h"
9#include "bin/process.h"
10#include "include/dart_api.h"
11#include "platform/assert.h"
12#include "platform/globals.h"
13#include "platform/syslog.h"
14
15namespace dart {
16namespace bin {
17
18void ErrorExit(int exit_code, const char* format, ...) {
19 va_list arguments;
20 va_start(arguments, format);
21 Syslog::VPrintErr(format, arguments);
22 va_end(arguments);
23
24 // Sometimes ErrorExit is called even before we have entered an isolate.
25 // We need to shutdown the isolate only if one exists.
26 if (Dart_CurrentIsolate() != nullptr) {
28 }
29
30 // Terminate process exit-code handler.
32
33 char* error = Dart_Cleanup();
34 if (error != nullptr) {
35 Syslog::PrintErr("VM cleanup failed: %s\n", error);
36 free(error);
37 }
38
41 Platform::Exit(exit_code);
42}
43
44} // namespace bin
45} // namespace dart
static void PrintErr(const char *format,...) PRINTF_ATTRIBUTE(1
VPrintErr(format, args)
static DART_NORETURN void Exit(int exit_code)
static void TerminateExitCodeHandler()
static void ClearAllSignalHandlers()
Definition: process.cc:70
const uint8_t uint32_t uint32_t GError ** error
uint32_t uint32_t * format
va_start(args, format)
va_end(args)
void ErrorExit(int exit_code, const char *format,...)
Definition: error_exit.cc:18
Dart_ShutdownIsolate()
Definition: dart_vm.cc:33
DART_EXPORT Dart_Isolate Dart_CurrentIsolate()
DART_EXPORT char * Dart_Cleanup()