RFR: 8335836: serviceability/jvmti/StartPhase/AllowedFunctions/AllowedFunctions.java fails with unexpected exit code: 112
Chris Plummer
cjplummer at openjdk.org
Thu Aug 1 22:04:33 UTC 2024
On Tue, 30 Jul 2024 23:13:23 GMT, Serguei Spitsyn <sspitsyn at openjdk.org> wrote:
> The test has been fixed to:
> - add a guard against JVMTI_ERROR_WRONG_PHASE
> - replace `exit(err)` with `abort()` in the `check_jvmti_error()`
>
> The JVMTI `VMDeath` event is enabled and a `RawMonitor` is introduced to serialize `ClassPrepare` and `VMDeath` events, and so, to prevent JVMTI_ERROR_WRONG_PHASE in the `ClassPrepare` events.
>
> Testing:
> - run the test AllowedFunctions.java locally
> - TBD: submit a mach5 run for fixed test
test/hotspot/jtreg/serviceability/jvmti/StartPhase/AllowedFunctions/libAllowedFunctions.c line 358:
> 356:
> 357: // Block VMDeath event and other ClassPrepare events while this callback is executed.
> 358: // Sync with VMDeath event guards agains JVMTI_ERROR WRONG_PHASE.
Suggestion:
// Sync with VMDeath event guards agains JVMTI_ERROR_WRONG_PHASE.
test/hotspot/jtreg/serviceability/jvmti/StartPhase/AllowedFunctions/libAllowedFunctions.c line 359:
> 357: // Block VMDeath event and other ClassPrepare events while this callback is executed.
> 358: // Sync with VMDeath event guards agains JVMTI_ERROR WRONG_PHASE.
> 359: err = (*jvmti)->RawMonitorEnter(jvmti, event_mon);
I don't see how this fixes the problem. You can be exiting VMDeath when this monitor is entered. This does not block the get_thread_local() call below, which is what leads to the WRONG_PHASE. I think using a raw monitor is the right approach, but I was expecting to see VMDeath set a flag after grabbing the monitor that indicated VMDeath had been called. Then ClassPrepare should check this flag after grabbing the monitor and ignore the event if it is set.
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/20397#discussion_r1700920905
PR Review Comment: https://git.openjdk.org/jdk/pull/20397#discussion_r1700920369
More information about the serviceability-dev
mailing list