BUG: withOwnerThread closes MappedMemorySegment
Ty Young
youngty1997 at gmail.com
Fri Sep 25 20:19:17 UTC 2020
Forgot to mention, I'm using default GC.
On 9/25/20 10:00 AM, Jorn Vernee wrote:
> Hi Ty,
>
> I'm trying to reproduce your crash locally, but no luck so far. From
> the error message, it seems like it might be caused by a thread being
> suspended while inside a native call, which triggers a slow path that
> seems to have a bug in it; not setting the thread state to
> _thread_in_java again.
>
> The following patch fixes that mistake [1], but since I'm not able so
> far to reproduce the crash I can't say for sure that that will fix the
> problem you are seeing.
>
> It would help if you could provide some steps to reproduce, and/or try
> out the patch at [1] if you can (should be enough to put it in a file
> and then use `git apply <file>`).
>
> I'm also curious to know if you are running with the default GC, or
> maybe another one?
>
> Thanks,
> Jorn
>
> [1] :
>
> diff --git a/src/hotspot/cpu/x86/sharedRuntime_x86_64.cpp
> b/src/hotspot/cpu/x86/sharedRuntime_x86_64.cpp
> index 51b9082cfae..887369fc5c8 100644
> --- a/src/hotspot/cpu/x86/sharedRuntime_x86_64.cpp
> +++ b/src/hotspot/cpu/x86/sharedRuntime_x86_64.cpp
> @@ -3810,11 +3810,12 @@ void NativeInvokerGenerator::generate() {
> __ safepoint_poll(L_safepoint_poll_slow_path, r15_thread, rscratch1);
> __ cmpl(Address(r15_thread, JavaThread::suspend_flags_offset()), 0);
> __ jcc(Assembler::notEqual, L_safepoint_poll_slow_path);
> - // change thread state
> - __ movl(Address(r15_thread, JavaThread::thread_state_offset()),
> _thread_in_Java);
>
> __ bind(L_after_safepoint_poll);
>
> + // change thread state
> + __ movl(Address(r15_thread, JavaThread::thread_state_offset()),
> _thread_in_Java);
> +
> __ block_comment("reguard stack check");
> Label L_reguard;
> Label L_after_reguard
>
More information about the panama-dev
mailing list