On Thu, 24 Jun 2021 16:51:59 GMT, Chris Plummer <cjplum...@openjdk.org> wrote:
>> Re-enable the assert that was disabled (with some overhead) by >> [JDK-8265683](https://bugs.openjdk.java.net/browse/JDK-8265683). Explanation >> is in the CR and also in comments included with the changes. >> >> I tested by running `vmTestbase/nsk/jdb/suspend/suspend001/suspend001.java` >> and `vmTestbase/nsk/jdb/wherei/wherei001/wherei001.java` 100's of times, and >> did not see any failures. I also verified the original issue was still >> reproducible by temporarily not setting `gdata->handlingVMDeath = JNI_TRUE`, >> which did trigger the assert as expected. > > Chris Plummer has updated the pull request incrementally with one additional > commit since the last revision: > > Rename flag and make some minor adjustments. Just to follow up: > As far as any other synchronizing or memory barriers being needed, I'm a bit > unclear on that part. The only thing that matters is that > gdata->jvmtiCallBacksCleared being set true is visible to other threads > before the callbacks get cleared. It seems the call to SetEventCallbacks() > should ensure this. In practice this should be fine as `SetEventCallbacks` acquires a monitor/mutex; and `findThread` is also called while holding a monitor, so although different monitors, in practice the acquire/release semantics should make this work. Additionally the complexity of the interaction between the two threads involved will introduce other synchronization actions. ------------- PR: https://git.openjdk.java.net/jdk/pull/4580