RFR (M): 8000805: JMM issue: short loads are non-atomic

Aleksey Shipilev aleksey.shipilev at oracle.com
Fri Oct 19 16:27:41 PDT 2012


In fact, I've been hit by the infamous trouble that RuntimeMXBean had
munched -client, and forked JVM was running in server mode nevertheless.
Running with -f false works. Sorry for false alarm.

-Aleksey.

On 10/20/2012 02:09 AM, Vladimir Ivanov wrote:
> Aleksey,
> 
> Thanks for checking that. I'll look into the issue.
> 
> Best regards,
> Vladimir Ivanov
> 
> On 10/20/12 1:46 AM, Aleksey Shipilev wrote:
>> Please double-check. Reproduces perfectly with 32-bit build on my x86_64
>> Linux:
>>
>> $ ~/Install.32/jdk7u4/bin/java -client -version
>> java version "1.7.0_04"
>> Java(TM) SE Runtime Environment (build 1.7.0_04-b20)
>> Java HotSpot(TM) Client VM (build 23.0-b21, mixed mode)
>>
>> $ ~/Install.32/jdk7u4/bin/java -client -jar
>> target/concurrency-torture.jar  -t ".*ShortAtomicity.*"
>> Java Concurrency Torture Tests
>> ---------------------------------------------------------------------------------
>>
>> Running in forked mode...
>>
>> Running
>> net.shipilev.concurrent.torture.tests.primitiveAtomicity.ShortAtomicityTest
>>
>> Warmup .....
>>                       Observed state  Occurrences          Expectation
>> Interpretation
>>                              [0, 0]  (    878998)             REQUIRED
>>                             [-1, -1] (  10025286)             REQUIRED
>>                             [-1, 0]  (     15596)            FORBIDDEN
>>
>> Running
>> net.shipilev.concurrent.torture.tests.primitiveAtomicity.VolatileShortAtomicityTest
>>
>> Warmup .....
>>                       Observed state  Occurrences          Expectation
>> Interpretation
>>                               [0, 0] (   5322930)             REQUIRED
>>                             [-1, -1] (   1774531)             REQUIRED
>>                              [-1, 0] (     13709)            FORBIDDEN
>>
>>
>> -Aleksey.
>>
>>
>> On 10/20/2012 12:37 AM, Vladimir Ivanov wrote:
>>> Disregard my comment about C1.
>>>
>>> I vaguely remember I saw it fails and CR has a comment by Vladimir K.
>>> about C1 being also affected, but I'm not able to reproduce the problem
>>> anymore.
>>>
>>> Best regards,
>>> Vladimir Ivanov
>>>
>>> On 10/19/12 10:39 PM, Vladimir Ivanov wrote:
>>>> http://cr.openjdk.java.net/~vlivanov/8000805/webrev.00/
>>>> 282 lines changed: 255 ins; 27 del; 0 mod
>>>>
>>>> Ideal transformations during parsing & IGVN may rematerialize loads in
>>>> order to reify useful information (like signed/unsigned load). Such
>>>> behavior breaks JMM - instead of a single atomic load, multiple loads
>>>> are performed violating consistency of loaded data.
>>>>
>>>> The fix is to disable such transformations at all, but perform relevant
>>>> optimizations during matching.
>>>>
>>>> It fixes only C2 part of problem. С1 has similar deficiency, but it'll
>>>> be addressed separately.
>>>>
>>>> Testing: failing test, test for new matching rules, JPRT, CTW (x86, x64
>>>> & sparc).
>>>>
>>>> Best regards,
>>>> Vladimir Ivanov
>>



More information about the hotspot-compiler-dev mailing list