diff options
| author | Brian Campbell <lambda@continuation.org> | 2016-02-06 17:16:56 -0500 |
|---|---|---|
| committer | Brian Campbell <lambda@continuation.org> | 2016-05-23 00:22:41 -0400 |
| commit | cfc386583291c8868d093d07431a57a20e69c944 (patch) | |
| tree | 1a39f5eb5c9619a2d9f09e209c1d4966827db759 /src/libsyntax/errors | |
| parent | be2ffddffb1c8e56a673c3bf29fae780e1ef53c5 (diff) | |
| download | rust-cfc386583291c8868d093d07431a57a20e69c944.tar.gz rust-cfc386583291c8868d093d07431a57a20e69c944.zip | |
Use libc::abort, not intrinsics::abort, in rtabort!
intrinsics::abort compiles down to an illegal instruction, which on Unix-like platforms causes the process to be killed with SIGILL. A more appropriate way to kill the process would be SIGABRT; this indicates better that the runtime has explicitly aborted, rather than some kind of compiler bug or architecture mismatch that SIGILL might indicate. For rtassert!, replace this with libc::abort. libc::abort raises SIGABRT, but is defined to do so in such a way that it will terminate the process even if SIGABRT is currently masked or caught by a signal handler that returns. On non-Unix platforms, retain the existing behavior. On Windows we prefer to avoid depending on the C runtime, and we need a fallback for any other platforms that may be defined. An alternative on Windows would be to call TerminateProcess, but this seems less essential than switching to using SIGABRT on Unix-like platforms, where it is common for the process-killing signal to be printed out or logged. This is a [breaking-change] for any code that depends on the exact signal raised to abort a process via rtabort! cc #31273 cc #31333
Diffstat (limited to 'src/libsyntax/errors')
0 files changed, 0 insertions, 0 deletions
