On Fri, 15 Oct 2021 16:54:58 GMT, Maurizio Cimadamore <mcimadam...@openjdk.org> 
wrote:

>> This PR contains the API and implementation changes for JEP-419 [1]. A more 
>> detailed description of such changes, to avoid repetitions during the review 
>> process, is included as a separate comment.
>> 
>> [1] - https://openjdk.java.net/jeps/419
>
> Maurizio Cimadamore has updated the pull request incrementally with one 
> additional commit since the last revision:
> 
>   * Fix javadoc issue in VaList
>   * Fix bug in concurrent logic for shared scope acquire

src/jdk.incubator.foreign/share/classes/jdk/internal/foreign/SharedScope.java 
line 138:

> 136:                 ResourceCleanup prev = (ResourceCleanup) 
> FST.getAcquire(this);
> 137:                 cleanup.next = prev;
> 138:                 ResourceCleanup newSegment = (ResourceCleanup) 
> FST.compareAndExchangeRelease(this, prev, cleanup);

In this place we can actually overwrite CLOSED_LIST (if getAcquired has seen 
such value). While this particular add will fail later on (since we check 
witness), another concurrent add might then pass, since it sees a value other 
than CLOSED_LIST (which is supposed to be a terminal state).

Also, after consulting with @DougLea  and @shipilev  - it seems like using 
volatile semantics is the way to go here.

This should fix a spurious (and very rare) failure on TestResourceScope on 
arm64.

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

PR: https://git.openjdk.java.net/jdk/pull/5907

Reply via email to