8218401: WRONG_PHASE: vmTestbase/nsk/jvmti test crash
Daniil Titov
daniil.x.titov at oracle.com
Wed Mar 20 21:58:48 UTC 2019
Hi Serguei,
I think that just disabling event notifications inside VMDeath callback still leaves a small window for VMDeath callback being called after the classload callback is called (or about being called) but before it enters a raw monitor. Thus I decided to follow your original suggestion and restore volatile modifier for callbacksEnabled. Please review a new version of the patch.
Webrev: http://cr.openjdk.java.net/~dtitov/8218401/webrev.03/
Bug : https://bugs.openjdk.java.net/browse/JDK-8218401
Thanks!
Best regards,
Daniil
From: <serguei.spitsyn at oracle.com>
Organization: Oracle Corporation
Date: Tuesday, March 19, 2019 at 7:17 PM
To: Daniil Titov <daniil.x.titov at oracle.com>, OpenJDK Serviceability <serviceability-dev at openjdk.java.net>, Jean Christophe Beyler <jcbeyler at google.com>
Subject: Re: 8218401: WRONG_PHASE: vmTestbase/nsk/jvmti test crash
Hi Daniil,
I'd keep the volatile modifier for callbacksEnabled to disable compiler optimizations.
Otherwise, looks good to me.
Another approach could be to disable event notifications in VMDeath callback with:
SetEventNotificationMode(JVMTI_DISABLE, JVMTI_EVENT_CLASS_LOAD, NULL);
SetEventNotificationMode(JVMTI_DISABLE, JVMTI_EVENT_BREAKPOINT, NULL);
. . .
Thanks,
Serguei
On 3/18/19 6:58 PM, Daniil Titov wrote:
Hi Serguei and JC,
Please review a new version of the fix that locks a monitor across the callbacks, as Serguei suggested.
Webrev: http://cr.openjdk.java.net/~dtitov/8218401/webrev.02/
Bug: https://bugs.openjdk.java.net/browse/JDK-8218401
Thanks!
--Daniil
On 3/18/19, 9:47 AM, mailto:serguei.spitsyn at oracle.com mailto:serguei.spitsyn at oracle.com wrote:
Hi Daniil,
The JVMTI phase can change in the middle of callback work after the
check you added.
I'd suggest to lock a raw monitor across the callbacks to make them atomic.
Thank you for taking care about this issue!
Thanks,
Serguei
On 3/15/19 16:08, Daniil Titov wrote:
> Please review the change that fixes 3 tests that intermittently fail with JVMTI_ERROR_WRONG_PHASE error.
>
> The problem here is that the callbacks these tests enable keep processing events and perform JVMTI calls after VM is terminated. The fix makes these test listen for VMDeath event and quick return from the callbacks after VMDeath event is received.
>
> Webrev: http://cr.openjdk.java.net/~dtitov/8218401/webrev.01/
> Bug: https://bugs.openjdk.java.net/browse/JDK-8218401
>
> Thanks!
> -Daniil
>
>
More information about the serviceability-dev
mailing list