RFR: 8265292: [macos_aarch64] java/foreign/TestDowncall.java crashes with SIGBUS
Andrew Haley
aph at redhat.com
Mon May 10 09:46:10 UTC 2021
On 5/10/21 6:19 AM, David Holmes wrote:
> On Fri, 7 May 2021 15:38:24 GMT, Anton Kozlov <akozlov at openjdk.org> wrote:
>
>> Please review a fix for the intermittent crash. It is caused by a mistake in the ProgrammableInvoker::invoke_native, the wrong order of W^X and JavaThread state transition. We need WXExec since we are about to call a generated stub. But we need to switch to WXExec only after JavaThread state change. The thread state change may trigger a safepoint, that would need to do bookkeeping in the codecache (MarkActivationClosure::do_code_blob from the bug). So the fix is to change JavaThread state first, then change WX.
>>
>> The fix was verified with the help of https://bugs.openjdk.java.net/browse/JDK-8266742. The new check catches all test failures reported by 8265292, 8265183, 8265182. I've verified tests pass after the fix with that new check enabled.
>
> If this fixes the problem - great, approved.
>
> But this just highlights the limited understanding around W^X and thread states IMO.
Yes, that's what I was getting at. This looks to me like an instance of
the Temporal Coupling design smell.
More information about the hotspot-dev
mailing list