Commit 5592bad9 authored by Camillo's avatar Camillo Committed by V8 LUCI CQ

[d8] Dump stack trace on d8 tests timeouts on posix systems

- Add a SIGTERM handler in d8 that dupms the stack trace
- Send SIGTERM before SIGKILL in the test runner

Bug: v8:13115
Change-Id: I75285f33caabab61ff6ae83c1fbc6faf45cf595a
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3791906Reviewed-by: 's avatarMichael Achenbach <machenbach@chromium.org>
Reviewed-by: 's avatarIgor Sheludko <ishell@chromium.org>
Commit-Queue: Camillo Bruni <cbruni@chromium.org>
Cr-Commit-Position: refs/heads/main@{#82173}
parent 8d0c71d7
......@@ -70,6 +70,10 @@
#include "src/utils/utils.h"
#include "src/web-snapshot/web-snapshot.h"
#if V8_OS_POSIX
#include <signal.h>
#endif // V8_OS_POSIX
#ifdef V8_FUZZILLI
#include "src/d8/cov.h"
#endif // V8_FUZZILLI
......@@ -5515,9 +5519,33 @@ bool HasFlagThatRequiresSharedIsolate() {
return i::FLAG_shared_string_table || i::FLAG_harmony_struct;
}
#ifdef V8_OS_POSIX
void d8_sigterm_handler(int signal) {
// Dump stacktraces when terminating d8 instances with SIGTERM.
// SIGKILL is not intercepted.
if (signal == SIGTERM) {
FATAL("d8: Received SIGTERM signal (likely due to a TIMEOUT)\n");
} else {
UNREACHABLE();
}
}
#endif // V8_OS_POSIX
void d8_install_sigterm_handler() {
#ifdef V8_OS_POSIX
struct sigaction sa;
sa.sa_handler = d8_sigterm_handler;
sigemptyset(&sa.sa_mask);
if (sigaction(SIGTERM, &sa, NULL) == -1) {
FATAL("Could not install SIGTERM handler");
}
#endif // V8_OS_POSIX
}
} // namespace
int Shell::Main(int argc, char* argv[]) {
d8_install_sigterm_handler();
v8::base::EnsureConsoleOutput();
if (!SetOptions(argc, argv)) return 1;
......
......@@ -200,6 +200,11 @@ class PosixCommand(BaseCommand):
def _kill_process(self, process):
# Kill the whole process group (PID == GPID after setsid).
# First try a soft term to allow some feedback
os.killpg(process.pid, signal.SIGTERM)
# Give the process some time to cleanly terminate.
time.sleep(0.1)
# Forcefully kill processes.
os.killpg(process.pid, signal.SIGKILL)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment