On Tue, 20 Aug 2024 17:38:01 GMT, Leonid Mesnik <lmes...@openjdk.org> wrote:

>> The summary of the problem. Test is intermittently failing because can't get 
>> expected field watch event.
>> The test is failing to get event in the 'setfmodw001b' thread with Xcomp 
>> only.
>> I verified that frame with the method 'run' of setfmodw001b is compiled when 
>> line
>> 118: setfmodw001.setWatch(4);
>> is executed, however the thread is in interp_only mode. The watch events are 
>> supported by interpreter only and just ignored by compiled code.
>> 
>> The reason of failure is race beteween setting interp_only mode in line
>> 
>> https://github.com/openjdk/jdk/blob/master/test/hotspot/jtreg/vmTestbase/nsk/jvmti/SetFieldModificationWatch/setfmodw001.java#L75
>> 
>>  and calling method call_helper while
>>  the method run()
>> https://github.com/openjdk/jdk/blob/master/test/hotspot/jtreg/vmTestbase/nsk/jvmti/SetFieldModificationWatch/setfmodw001.java#L116
>> 
>>  in newly created thread 'setfmodw001b' is invoked.
>> 
>> The javaCalls:call are used to invoke methods from hotspot, so it might be 
>> rare issues. But still, synchronization might be improved.
>> The
>> void JavaCalls::call_helper(JavaValue* result, const methodHandle& method, 
>> JavaCallArguments* args, TRAPS)
>> 
>> checks if interp_only mode is set and use 'Method::from_interpreted_entry()' 
>> if not. However the interp_only might be set later before compiled method is 
>> called (or enter first safe point?). This might happens in safepoint during 
>> transition via handshake.
>> So the running thread is in interp_only mode however the run() method is 
>> compiled and executed already and never going to be deoptimized.
>> 
>> The additional setWatch calls don't try to deptimize method that are already 
>> in interp_only mode.
>> 
>> BTW, the when JVMCI is enabled and verified adapter exists it is also will 
>> be loaded even in interp_only mode set. There is not race here, just 
>> ignoring of interp_only mode.
>> 
>> I run failing test with Xcomp ~1000 times and tiers1-5.
>
> Leonid Mesnik has updated the pull request incrementally with one additional 
> commit since the last revision:
> 
>   fixed identation.

Marked as reviewed by sspitsyn (Reviewer).

-------------

PR Review: https://git.openjdk.org/jdk/pull/20587#pullrequestreview-2248773043

Reply via email to