[concurrency-interest] JVM crash when using Unsafe to read/write bytes in Java 8 (no crash with same code in Java 7)

Gaëlle Guimezanes ggu at quartetfs.com
Thu Sep 18 11:05:25 EDT 2014


Thanks!

I'll start a clean thread on that address and stop spamming you.
I'll just post the "conclusion" on this thread, if there is one.

Gaelle

On Thu, Sep 18, 2014 at 4:51 PM, Vitaly Davidovich <vitalyd at gmail.com>
wrote:

> Sounds like it.  Given you have a self-contained repro, you can forward
> this email thread (or CC them) to hotspot-compiler-dev at openjdk.java.net,
> and see if anyone from the JIT team has any ideas.
>
> On Thu, Sep 18, 2014 at 10:49 AM, Gaëlle Guimezanes <ggu at quartetfs.com>
> wrote:
>
>> We're nearing it down... disabling OSR compilation or tiered compilation
>> makes the test run correctly.
>> So if the options work as I understood, this means the problem is in C1,
>> only when doing OSR.
>>
>> On Thu, Sep 18, 2014 at 4:17 PM, Vitaly Davidovich <vitalyd at gmail.com>
>> wrote:
>>
>>> Try turning off tiered compilation (-XX:-TieredCompilation) and pass
>>> -server to the launcher.  I *think* that should do it.
>>>
>>> However, I think you ran this with C1 just without OSR compilation (I
>>> believe -Xcomp would do that), so this seems to point at an OSR compile.
>>>  You can try disabling OSR compilation (irrespective of C1 or C2):
>>> -XX:-UseOnStackReplacement
>>>
>>> On Thu, Sep 18, 2014 at 9:54 AM, Gaëlle Guimezanes <ggu at quartetfs.com>
>>> wrote:
>>>
>>>> Running the test class with -Xint or -Xcomp makes the test work with no
>>>> crash, so the problem apparently is with OSR compiles...
>>>>
>>>> However I don't know how to use only the C2 compiler, can you explain
>>>> how to do it?
>>>>
>>>> Thanks
>>>> Gaelle
>>>>
>>>>
>>>>
>>>> On Thu, Sep 18, 2014 at 2:53 PM, Vitaly Davidovich <vitalyd at gmail.com>
>>>> wrote:
>>>>
>>>>> Looks like it's C1 OSR compiled code when it crashes.  Have you tried
>>>>> running this only in interpreter and only using C2 compiler? Can also try
>>>>> disabling OSR compiles.  Just to rule out any miscompilation ...
>>>>>
>>>>> Sent from my phone
>>>>> On Sep 18, 2014 8:09 AM, "Gaëlle Guimezanes" <ggu at quartetfs.com>
>>>>> wrote:
>>>>>
>>>>>> Hi Stanimir,
>>>>>>
>>>>>> Thanks for the suggestion, but I've tried allocating extra 16 bytes
>>>>>> and even extra 1024 bytes, and it still fails.
>>>>>>
>>>>>> Gaelle
>>>>>>
>>>>>> On Thu, Sep 18, 2014 at 1:34 PM, Stanimir Simeonoff <
>>>>>> stanimir at riflexo.com> wrote:
>>>>>>
>>>>>>> Hi,
>>>>>>>
>>>>>>> I suppose the problem occurs due to the last few (less than 8) bytes
>>>>>>> are addressed. Probably getByte(address) won't read just a byte but a 32/64
>>>>>>> word and mask+shift it.
>>>>>>> Try to allocate extra 16 bytes instead of 8.
>>>>>>>
>>>>>>> Stanimir
>>>>>>>
>>>>>>> On Thu, Sep 18, 2014 at 1:38 PM, Gaëlle Guimezanes <
>>>>>>> ggu at quartetfs.com> wrote:
>>>>>>>
>>>>>>>> Hello,
>>>>>>>>
>>>>>>>> I am sorry this is not really a concurrency problem since it can be
>>>>>>>> reproduced using only one thread, but I didn't really know where to discuss
>>>>>>>> this. Since many of you use Unsafe I thought you might be able to help me
>>>>>>>> understand what's happening or direct me to the correct mailing list.
>>>>>>>>
>>>>>>>> I have a strange behaviour using Unsafe in Java 1.8.0_20.
>>>>>>>> When I use getByte/putByte to manipulate bits, my JVM crashes
>>>>>>>> (access violation).
>>>>>>>> But when I use getLong/putLong for the same purpose it works
>>>>>>>> correctly (even though I have allocated exactly the same amount of memory).
>>>>>>>> Also, when using Java 1.7.0_67 to compile and run the same source
>>>>>>>> code, both the getByte/putByte and the getLong/putLong approaches work
>>>>>>>> correctly.
>>>>>>>>
>>>>>>>> I have attached a simple test class (DirectMemoryCrash.java) for
>>>>>>>> reproducing the problem: you can run it with no argument for
>>>>>>>> the getByte/putByte version, or with "useLongs" arguments for
>>>>>>>> the getLong/putLong version.
>>>>>>>>
>>>>>>>> I also have attached crash reports :
>>>>>>>> hs_err_pid5480.log for the crash on windows
>>>>>>>> hs_err_pid7210.log for the crash on linux
>>>>>>>>
>>>>>>>> Thank you for your attention,
>>>>>>>> Best regards,
>>>>>>>> Gaëlle Guimezanes.
>>>>>>>>
>>>>>>>>
>>>>>>>> _______________________________________________
>>>>>>>> Concurrency-interest mailing list
>>>>>>>> Concurrency-interest at cs.oswego.edu
>>>>>>>> http://cs.oswego.edu/mailman/listinfo/concurrency-interest
>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>>
>>>>>> _______________________________________________
>>>>>> Concurrency-interest mailing list
>>>>>> Concurrency-interest at cs.oswego.edu
>>>>>> http://cs.oswego.edu/mailman/listinfo/concurrency-interest
>>>>>>
>>>>>>
>>>>
>>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://cs.oswego.edu/pipermail/concurrency-interest/attachments/20140918/d35cb5ad/attachment.html>


More information about the Concurrency-interest mailing list