[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 19:25:15 UTC 2018
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