mirror of
https://github.com/servo/servo.git
synced 2025-08-07 06:25:32 +01:00
testing: Trigger a crash more reliably when panicking and hard fail is active (#32947)
Before when handling panics and hard-fail was activated, Servo would just exit with an error return code. This isn't interpreted as a crash by the WPT test runner. This change raises a SEGV signal instead, which means that panics should more reliably be treated as crashes. This doesn't seem to change any test results, at least any non-flaky test results. It is necessary for the test in #32782 to work though. Signed-off-by: Martin Robinson <mrobinson@igalia.com>
This commit is contained in:
parent
89d20fc401
commit
c9fbe018f1
2 changed files with 30 additions and 18 deletions
|
@ -9,6 +9,8 @@ use std::{env, thread};
|
|||
use log::{error, warn};
|
||||
use servo::config::opts;
|
||||
|
||||
use crate::crash_handler::raise_signal_or_exit_with_error;
|
||||
|
||||
pub(crate) fn panic_hook(info: &PanicInfo) {
|
||||
warn!("Panic hook called.");
|
||||
let msg = match info.payload().downcast_ref::<&'static str>() {
|
||||
|
@ -40,7 +42,9 @@ pub(crate) fn panic_hook(info: &PanicInfo) {
|
|||
drop(stderr);
|
||||
|
||||
if opts::get().hard_fail && !opts::get().multiprocess {
|
||||
std::process::exit(1);
|
||||
// When we are exiting due to a hard-failure mode, we trigger a segfault so that crash
|
||||
// tests detect that we crashed. If we exit normally it just looks like a non-crash exit.
|
||||
raise_signal_or_exit_with_error(libc::SIGSEGV);
|
||||
}
|
||||
|
||||
error!("{}", msg);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue