[8u] RFR: fix of vtable self-patching routine

Sergey Nazarkin snazarkin at azul.com
Mon May 16 15:52:23 UTC 2016


Oh, it is there  already

http://hg.openjdk.java.net/aarch32-port/jdk8u/hotspot/rev/483350e18369


Sergey Nazarkin




> On 16 May 2016, at 18:31, Sergey Nazarkin <snazarkin at azul.com> wrote:
> 
> Seems we forgot about this issue. I can’t find it in the logs at least. 
> 
> 
> Sergey Nazarkin
> 
> 
> 
> 
>> On 07 Apr 2016, at 20:14, Fedor Burdun <fedor.burdun at azulsystems.com> wrote:
>> 
>> Hi all,
>> 
>> I would like to ask you several reviews of proposed fix of issue below.
>> 
>> The problem is crash caused by using CDS.
>> It occurs because c++ vtables self-patching routine (written in metaspaceShared_aarch32.cpp) corrupts r9 register, that can be used by c++ compiler to store locals.
>> Usually it happens in Method::restore_vtable virtual call, that causes undefined behaviour (mostly crahes) in InstanceKlass::restore_unshareable_info function.
>> 
>> Reproduction steps:
>> # dump shared space
>> $ java -Xint -XX:+UnlockDiagnosticVMOptions -XX:SharedArchiveFile=./sample.jsa -Xshare:dump
>> 
>> # restore from CDS (crash happens here)
>> $ java -Xint -XX:+UnlockDiagnosticVMOptions -XX:SharedArchiveFile=./sample.jsa -Xshare:on -version
>> 
>> Fix is in attachement.
>> 
>> Thanks,
>> Fedor
>> <CDS.patch>
> 



More information about the aarch32-port-dev mailing list