[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v4 03/10] linux-user: Use die_with_signal with abort
From: |
Richard Henderson |
Subject: |
[PATCH v4 03/10] linux-user: Use die_with_signal with abort |
Date: |
Tue, 22 Aug 2023 22:16:08 -0700 |
Describe the convoluted way by which we can see
ERROR:../alt/accel/tcg/cpu-exec.c:532:cpu_exec_longjmp_cleanup: assertion
failed: (cpu == current_cpu)
Bail out! ERROR:../alt/accel/tcg/cpu-exec.c:532:cpu_exec_longjmp_cleanup:
assertion failed: (cpu == current_cpu)
for encountering an an abort() in qemu source.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
---
linux-user/signal.c | 12 ++++++++++++
1 file changed, 12 insertions(+)
diff --git a/linux-user/signal.c b/linux-user/signal.c
index 57fbf2f58b..a77d003de6 100644
--- a/linux-user/signal.c
+++ b/linux-user/signal.c
@@ -721,6 +721,18 @@ void die_with_signal(int sig)
_exit(EXIT_FAILURE);
}
+/*
+ * The system abort() will raise SIGABRT, which will get caught and deferred
+ * by host_signal_handler. Returning into system abort will try harder.
+ * Eventually, on x86, it will execute HLT, which raises SIGSEGV. This goes
+ * back into host_signal_handler, through a different path which may longjmp
+ * back to the main loop. This often explodes.
+ */
+void abort(void)
+{
+ die_with_signal(SIGABRT);
+}
+
static G_NORETURN
void dump_core_and_abort(CPUArchState *cpu_env, int target_sig)
{
--
2.34.1
- [PATCH v4 00/10] linux-user: Detect and report host crashes, Richard Henderson, 2023/08/23
- [PATCH v4 01/10] linux-user: Split out die_with_signal, Richard Henderson, 2023/08/23
- [PATCH v4 02/10] linux-user: Exit not abort in die_with_backtrace, Richard Henderson, 2023/08/23
- [PATCH v4 03/10] linux-user: Use die_with_signal with abort,
Richard Henderson <=
- [PATCH v4 04/10] linux-user: Detect and report host crashes, Richard Henderson, 2023/08/23
- [PATCH v4 05/10] linux-user: Only register handlers for core_dump_signal by default, Richard Henderson, 2023/08/23
- [PATCH v4 07/10] linux-user: Remap SIGPROF when CONFIG_GPROF, Richard Henderson, 2023/08/23
- [PATCH v4 08/10] linux-user: Simplify signal_init, Richard Henderson, 2023/08/23
- [PATCH v4 06/10] linux-user: Map unsupported signals to an out-of-bounds value, Richard Henderson, 2023/08/23
- [PATCH v4 09/10] linux-user: Split out host_sig{segv,bus}_handler, Richard Henderson, 2023/08/23
- [PATCH v4 10/10] linux-user: Detect and report host SIGILL, SIGFPE, SIGTRAP, Richard Henderson, 2023/08/23