[12] RFR(S) 8210220: [AOT] jdwp test cases are failing with error # ERROR: TEST FAILED: Cought IOException while receiving event packet
Vladimir Kozlov
vladimir.kozlov at oracle.com
Thu Sep 13 20:48:20 UTC 2018
Thank you, Dean
Vladimir
On 9/13/18 12:44 PM, dean.long at oracle.com wrote:
> No it's fine. I wasn't looking at the full context. Sorry for the confusion. This version is good.
>
> dl
>
> On 9/13/18 12:25 PM, Vladimir Kozlov wrote:
>> No, first PauseNoSafepointVerifier is on the path where we exit function without publishing AOT
>> method.
>> May be my comment there is not clear. Do you have better suggestion for comment?
>>
>> Thanks,
>> Vladimir
>>
>> On 9/13/18 11:59 AM, dean.long at oracle.com wrote:
>>> After the first PauseNoSafepointVerifier, I think you need to check mh->number_of_breakpoints()
>>> again, because it could have changed.
>>>
>>> dl
>>>
>>> On 9/13/18 9:01 AM, Vladimir Kozlov wrote:
>>>> Updated changes with NoSafepointVerifier:
>>>>
>>>> http://cr.openjdk.java.net/~kvn/8210220/webrev.01/
>>>>
>>>> Vladimir
>>>>
>>>> On 9/12/18 9:00 PM, Vladimir Kozlov wrote:
>>>>> Yes, you are right I will add NoSafepointVerifier and will rerun testing.
>>>>>
>>>>> Thanks,
>>>>> Vladimir
>>>>>
>>>>> On 9/12/18 6:51 PM, dean.long at oracle.com wrote:
>>>>>> On 9/12/18 6:25 PM, Vladimir Kozlov wrote:
>>>>>>> Thank you, Dean
>>>>>>>
>>>>>>> Breakpoint is set at safepoint:
>>>>>>>
>>>>>>> http://hg.openjdk.java.net/jdk/jdk/file/b7bfd64e43a6/src/hotspot/share/prims/jvmtiImpl.cpp#l411
>>>>>>>
>>>>>>> But why it is important to not be at safepoint in publish_aot(). If AOT is registered first
>>>>>>> and then breakpoint is set AOT methods will be deoptimized by
>>>>>>> CodeCache::flush_dependents_on_method() which is called from BreakpointInfo::set().
>>>>>>
>>>>>> I mean you can't do this:
>>>>>>
>>>>>> 1) check breakpoint count
>>>>>> 2) safepoint
>>>>>> 3) register code
>>>>>>
>>>>>> The AOT code is not visible to CodeCache::flush_dependents_on_method() until the cmpxchg().
>>>>>> NoSafepointVerifier would catch any changes in the future that introduce a safepoint.
>>>>>>
>>>>>> dl
>>>>>>
>>>>>>>
>>>>>>> Vladimir
>>>>>>>
>>>>>>> On 9/12/18 5:45 PM, dean.long at oracle.com wrote:
>>>>>>>> Hi Vladimir. C1 and C2 use ciEnv which also grabs locks and checks
>>>>>>>> JvmtiExport::can_hotswap_or_post_breakpoint() and Dependencies::check_evol_method(). But if
>>>>>>>> the breakpoint count can only be changed by the VM thread at a safepoint, then your fix
>>>>>>>> looks good as long as we don't enter a safepoint before the code is registered. How about
>>>>>>>> adding a NoSafepointVerifier to publish_aot()?
>>>>>>>>
>>>>>>>> dl
>>>>>>>>
>>>>>>>>
>>>>>>>> On 9/12/18 1:52 PM, Vladimir Kozlov wrote:
>>>>>>>>> http://cr.openjdk.java.net/~kvn/8210220/webrev.00/
>>>>>>>>> https://bugs.openjdk.java.net/browse/JDK-8210220
>>>>>>>>>
>>>>>>>>> Don't register AOT method if corresponding java method has breakpoints (for debugging)
>>>>>>>>> otherwise AOT method will be executed which do not stop at breakpoint. JIT has similar
>>>>>>>>> check [1].
>>>>>>>>>
>>>>>>>>> I also removed AOT code which is not used and we forgot to remove.
>>>>>>>>>
>>>>>>>>> Tested hs-tier1-3.
>>>>>>>>>
>>>>>>>>> thanks,
>>>>>>>>> Vladimir
>>>>>>>>>
>>>>>>>>> [1]
>>>>>>>>> http://hg.openjdk.java.net/jdk/jdk/file/75261571c13d/src/hotspot/share/oops/method.cpp#l845
>>>>>>>>
>>>>>>
>>>
>
More information about the hotspot-compiler-dev
mailing list