[PATCH 0/4] Fix deadlock when dying because of a signal

Ilya Leoshkevich posted 4 patches 1 year, 2 months ago
There is a newer version of this series
cpus-common.c                               | 12 +++++-
include/hw/core/cpu.h                       |  4 +-
linux-user/microblaze/cpu_loop.c            | 10 ++++-
linux-user/sparc/cpu_loop.c                 |  3 ++
tests/tcg/multiarch/linux/linux-fork-trap.c | 48 +++++++++++++++++++++
5 files changed, 71 insertions(+), 6 deletions(-)
create mode 100644 tests/tcg/multiarch/linux/linux-fork-trap.c
[PATCH 0/4] Fix deadlock when dying because of a signal
Posted by Ilya Leoshkevich 1 year, 2 months ago
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().

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

Just before sending this, I noticed that a solution has already been
proposed in [1], but apparently it wasn't accepted.

Best regards,
Ilya

[1] https://lists.gnu.org/archive/html/qemu-devel/2023-01/msg03506.html

Ilya Leoshkevich (4):
  cpus: Make {start,end}_exclusive() recursive
  linux-user/microblaze: Handle privileged exception
  linux-user/sparc: Handle "ta 5"
  tests/tcg/linux-test: Add linux-fork-trap test

 cpus-common.c                               | 12 +++++-
 include/hw/core/cpu.h                       |  4 +-
 linux-user/microblaze/cpu_loop.c            | 10 ++++-
 linux-user/sparc/cpu_loop.c                 |  3 ++
 tests/tcg/multiarch/linux/linux-fork-trap.c | 48 +++++++++++++++++++++
 5 files changed, 71 insertions(+), 6 deletions(-)
 create mode 100644 tests/tcg/multiarch/linux/linux-fork-trap.c

-- 
2.39.1