[PATCH 0/2] accel/tcg: Fix concurrent pthread_create() and munmap()

Ilya Leoshkevich posted 2 patches 1 year, 6 months ago
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20221028124227.2354792-1-iii@linux.ibm.com
Maintainers: Richard Henderson <richard.henderson@linaro.org>, Paolo Bonzini <pbonzini@redhat.com>, "Alex Bennée" <alex.bennee@linaro.org>
accel/tcg/tb-maint.c                 |  5 ++
tests/tcg/multiarch/Makefile.target  |  3 ++
tests/tcg/multiarch/munmap-pthread.c | 71 ++++++++++++++++++++++++++++
3 files changed, 79 insertions(+)
create mode 100644 tests/tcg/multiarch/munmap-pthread.c
[PATCH 0/2] accel/tcg: Fix concurrent pthread_create() and munmap()
Posted by Ilya Leoshkevich 1 year, 6 months ago
Hi,

This is a fix for the issue reported in [1].
Patch 1 is the fix itself, patch 2 is the test/reproducer.

By the way, I noticed that there is no code to free tb_jmp_cache, and
object_finalize(CPUState) is never called - in case of system emulation
this is fine, but what about linux-user?

[1] https://lists.gnu.org/archive/html/qemu-devel/2022-10/msg05181.html

Best regards,
Ilya

Ilya Leoshkevich (2):
  accel/tcg: Fix concurrent pthread_create() and munmap()
  tests/tcg/multiarch: Add munmap-pthread.c

 accel/tcg/tb-maint.c                 |  5 ++
 tests/tcg/multiarch/Makefile.target  |  3 ++
 tests/tcg/multiarch/munmap-pthread.c | 71 ++++++++++++++++++++++++++++
 3 files changed, 79 insertions(+)
 create mode 100644 tests/tcg/multiarch/munmap-pthread.c

-- 
2.37.2
Re: [PATCH 0/2] accel/tcg: Fix concurrent pthread_create() and munmap()
Posted by Alex Bennée 1 year, 6 months ago
Ilya Leoshkevich <iii@linux.ibm.com> writes:

> Hi,
>
> This is a fix for the issue reported in [1].
> Patch 1 is the fix itself, patch 2 is the test/reproducer.
>
> By the way, I noticed that there is no code to free tb_jmp_cache, and
> object_finalize(CPUState) is never called - in case of system emulation
> this is fine, but what about linux-user?

We definitely have a memory leak here. The last attempt to properly
finalize CPUState failed because we have duplicate pointers to the
cpregs structures that end up in generated code. See:

  https://lists.gnu.org/archive/html/qemu-devel/2022-08/msg02819.html

>
> [1] https://lists.gnu.org/archive/html/qemu-devel/2022-10/msg05181.html
>
> Best regards,
> Ilya
>
> Ilya Leoshkevich (2):
>   accel/tcg: Fix concurrent pthread_create() and munmap()
>   tests/tcg/multiarch: Add munmap-pthread.c
>
>  accel/tcg/tb-maint.c                 |  5 ++
>  tests/tcg/multiarch/Makefile.target  |  3 ++
>  tests/tcg/multiarch/munmap-pthread.c | 71 ++++++++++++++++++++++++++++
>  3 files changed, 79 insertions(+)
>  create mode 100644 tests/tcg/multiarch/munmap-pthread.c


-- 
Alex Bennée