qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v4 0/4] Fix deadlock when dying because of a signal
@ 2023-02-14 14:08 Ilya Leoshkevich
  2023-02-14 14:08 ` [PATCH v4 1/4] linux-user: Always exit from exclusive state in fork_end() Ilya Leoshkevich
                   ` (4 more replies)
  0 siblings, 5 replies; 6+ messages in thread
From: Ilya Leoshkevich @ 2023-02-14 14:08 UTC (permalink / raw)
  To: Richard Henderson, Paolo Bonzini, Eduardo Habkost,
	Marcel Apfelbaum, Philippe Mathieu-Daudé, Yanan Wang,
	Laurent Vivier, Alex Bennée
  Cc: qemu-devel, Christian Borntraeger, Ilya Leoshkevich

Based-on: <20230202005204.2055899-1-richard.henderson@linaro.org>
("[PATCH 00/14] linux-user/sparc: Handle missing traps")

v3: https://lists.gnu.org/archive/html/qemu-devel/2023-02/msg03534.html
v3 -> v4: Add printfs to the test in order to make the uncaught signals
          less scary:

          $ build/x86_64-linux-user/qemu-x86_64 build/tests/tcg/x86_64-linux-user/linux-fork-trap
          about to trigger fault...
          qemu: uncaught target signal 4 (Illegal instruction) - core dumped
          faulting thread exited cleanly

v2: https://lists.gnu.org/archive/html/qemu-devel/2023-02/msg03299.html
v2 -> v3: Use exclusive_context_count = 1 instead of
          exclusive_context_count++ in the non-recursive case.

v1: https://lists.gnu.org/archive/html/qemu-devel/2023-01/msg07251.html
v1 -> v2: Drop the sparc patch (superseded by Richard's series).
          Add the end_exclusive() fix.

Hi,

wasmtime testsuite found a deadlock in qemu_plugin_user_exit().
I tracked it down to one of my earlier patches, which introduced
cleanup in dump_core_and_abort().

Patches 1 and 2 fix the issue, patch 3 fixes __builtin_trap()
handling in microblaze, which is needed for patch 4, that adds a test.

Best regards,
Ilya

Ilya Leoshkevich (4):
  linux-user: Always exit from exclusive state in fork_end()
  cpus: Make {start,end}_exclusive() recursive
  linux-user/microblaze: Handle privileged exception
  tests/tcg/linux-test: Add linux-fork-trap test

 cpus-common.c                               | 12 ++++-
 include/hw/core/cpu.h                       |  4 +-
 linux-user/main.c                           | 10 ++--
 linux-user/microblaze/cpu_loop.c            | 10 +++-
 linux-user/syscall.c                        |  1 +
 tests/tcg/multiarch/linux/linux-fork-trap.c | 51 +++++++++++++++++++++
 6 files changed, 78 insertions(+), 10 deletions(-)
 create mode 100644 tests/tcg/multiarch/linux/linux-fork-trap.c

-- 
2.39.1



^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2023-02-16  6:10 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-02-14 14:08 [PATCH v4 0/4] Fix deadlock when dying because of a signal Ilya Leoshkevich
2023-02-14 14:08 ` [PATCH v4 1/4] linux-user: Always exit from exclusive state in fork_end() Ilya Leoshkevich
2023-02-14 14:08 ` [PATCH v4 2/4] cpus: Make {start,end}_exclusive() recursive Ilya Leoshkevich
2023-02-14 14:08 ` [PATCH v4 3/4] linux-user/microblaze: Handle privileged exception Ilya Leoshkevich
2023-02-14 14:08 ` [PATCH v4 4/4] tests/tcg/linux-test: Add linux-fork-trap test Ilya Leoshkevich
2023-02-16  6:09 ` [PATCH v4 0/4] Fix deadlock when dying because of a signal Richard Henderson

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).