RFR(S): 8163994: Nightly test crashed in jvmtiAllocate

Dmitry Samersoff dmitry.samersoff at oracle.com
Mon Aug 29 13:12:12 UTC 2016


Chris & David,

JVMTI_ERROR_WRONG_PHASE problem is complicated and requires significant
work probably on both JDWP and JVMTI side. Serguei plan to do it as a
part of JDK-8134103 and not for JDK 9.

So yes, we can close this one as a dup of JDK-8134103 - it has the same
root cause and should be addressed as the part of JDK-8134103
(particularly, we have to cleanup ignore_vm_death logic)

But the crash is observed only once in a nightly, so my intention is to
save us a bit of time next time when this situation happens.

i.e. before the changes we get JVMTI_ERROR_WRONG_PHASE message and
*crash*, after the changes  we get JVMTI_ERROR_WRONG_PHASE message
and AGENT_ERROR_INTERNAL message.


-Dmitry



On 2016-08-29 09:43, Chris Plummer wrote:
> On 8/28/16 6:14 PM, David Holmes wrote:
>> On 27/08/2016 7:35 AM, Chris Plummer wrote:
>>> Hi Dmitry,
>>>
>>> Although the fix is addressing the specific issue described in the bug,
>>> what about the general issue of referencing gdata after a call to
>>> cbEarlyVMDeath(). Do more references to gdata need to be protected?
>>>
>>> Also, is there the possibility of a multi-threading race condition here?
>>> Could gdata be cleared by another thread after it is checked?
>>
>> Certainly. This really isn't fixing anything just adding a bailout
>> check before the crashing code. We can still crash and not be any the
>> wiser as to why.
>>
>> Not sure I really see the point of doing this instead of closing this
>> as a dup of JDK-8134103 and fixing things properly.
> It it correct to say that Dmitry is fixing a bug exposed by JDK-8134103,
> or that he is temporarily working around something that is not a true
> bug, but is indirectly caused by JDK-8134103. I'm not sure, but the
> answer will dictate the correct course of action here.
> 
> Chris
>>
>> David
>>
>>> thanks,
>>>
>>> Chris
>>>
>>> On 8/26/16 4:00 AM, Dmitry Samersoff wrote:
>>>> Everybody,
>>>>
>>>> Please review the fix.
>>>>
>>>> http://cr.openjdk.java.net/~dsamersoff/JDK-8163994/webrev.02/
>>>>
>>>> *Problem*
>>>>
>>>> Under some circumstances, when JVMTI_ERROR_WRONG_PHASE(112) is
>>>> received,
>>>> jvmtiAllocate could be called after call to cbEarlyVMDeath.
>>>>
>>>> cbEarlyVMDeath set gdata->jvmti to NULL, so jvmtiAllocate crashes.
>>>>
>>>> The problem appears only once in nightly testing and I was not able to
>>>> reproduce it locally.
>>>>
>>>> *Solution*
>>>>
>>>> Guard added to jvmtiAllocate to get meaningful error message instead of
>>>> crash.
>>>>
>>>> These fix doesn't fix root cause - JVMTI_ERROR_WRONG_PHASE problem is
>>>> going to be addressed under JDK-8134103.
>>>>
>>>> -Dmitry
>>>>
>>>
> 


-- 
Dmitry Samersoff
Oracle Java development team, Saint Petersburg, Russia
* I would love to change the world, but they won't give me the sources.


More information about the hotspot-runtime-dev mailing list