RFR: 8327990: [macosx-aarch64] JFR enters VM without WXWrite
Richard Reingruber
rrich at openjdk.org
Fri Mar 15 08:37:38 UTC 2024
On Thu, 14 Mar 2024 14:49:12 GMT, Matthias Baesken <mbaesken at openjdk.org> wrote:
>> This pr changes `JfrJvmtiAgent::retransform_classes()` and `jfr_set_enabled` to switch to `WXWrite` before transitioning to the vm.
>>
>> Testing:
>> make test TEST=jdk/jfr/event/runtime/TestClassLoadEvent.java TEST_VM_OPTS=-XX:+AssertWXAtThreadSync
>> make test TEST=compiler/intrinsics/klass/CastNullCheckDroppingsTest.java TEST_VM_OPTS=-XX:+AssertWXAtThreadSync
>>
>> More tests are pending.
>
> I noticed a few more asserts (assert(_wx_state == expected) failed: wrong state) in the jfr area (jdk tier3 jfr tests).
> E.g.
>
>
> V [libjvm.dylib+0x8a5d94] JavaThread::check_for_valid_safepoint_state()+0x0
> V [libjvm.dylib+0x3e95b4] ThreadStateTransition::transition_from_native(JavaThread*, JavaThreadState, bool)+0x174
> V [libjvm.dylib+0x3e93d0] ThreadInVMfromNative::ThreadInVMfromNative(JavaThread*)+0x70
> V [libjvm.dylib+0x91a578] JfrRecorderService::emit_leakprofiler_events(long long, bool, bool)+0xcc
>
>
>
> and
>
>
> V [libjvm.dylib+0x8a5d94] JavaThread::check_for_valid_safepoint_state()+0x0
> V [libjvm.dylib+0x3e95b4] ThreadStateTransition::transition_from_native(JavaThread*, JavaThreadState, bool)+0x174
> V [libjvm.dylib+0x3e93d0] ThreadInVMfromNative::ThreadInVMfromNative(JavaThread*)+0x70
> V [libjvm.dylib+0x8d7f74] JfrJavaEventWriter::flush(_jobject*, int, int, JavaThread*)+0xf8
> j jdk.jfr.internal.JVM.flush(Ljdk/jfr/internal/event/EventWriter;II)V+0 jdk.jfr at 23-internal
> j jdk.jfr.internal.event.EventWriter.flush(II)V+3 jdk.jfr at 23-internal
> > @MBaesken found 2 more locations in jvmti that need switching to `WXWrite`
> > ```
> > JvmtiExport::get_jvmti_interface
> > GetCarrierThread
> > ```
> > Both use `ThreadInVMfromNative`.
>
> Should we address those 2 more findings in this PR ? Or open a separate JBS issue ?
>
I'm leaning towards fixing all locations in this PR even though this will prevent clean backports. Would that be ok?
-------------
PR Comment: https://git.openjdk.org/jdk/pull/18238#issuecomment-1999168860
More information about the serviceability-dev
mailing list