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

Vitaly Davidovich vitalyd at gmail.com
Thu Sep 18 10:51:23 EDT 2014


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/d0f1c3a3/attachment.html>


More information about the Concurrency-interest mailing list