8216987: ciMethodData::load_data() unpacks MDOs with non-atomic copy

Erik Osterlund erik.osterlund at oracle.com
Mon Jan 14 17:04:24 UTC 2019

Hi Vladimir,

Thanks for the review.


> On 14 Jan 2019, at 18:03, Vladimir Kozlov <vladimir.kozlov at oracle.com> wrote:
> Good.
> Thanks,
> Vladimir
>> On 1/14/19 7:17 AM, Erik Österlund wrote:
>> Hi,
>> The ciMethodData::load_data() member function copies a raw MDO to the compiler mirror of said MDO. However, the copy is performed using a non-atomic copy function, despite being updated concurrently. This could potentially cause word tearing when reading metadata pointers, causing the VM to crash... in theory.
>> While this is not a problem when unpacking the extra data section, because it is done under a lock, the same can not be said about the rest of the MDO. So it should either be protected by a lock, or use an atomic copy function instead.
>> This patch adds an extra seat belt by performing atomic heap word copy instead.
>> Webrev:
>> http://cr.openjdk.java.net/~eosterlund/8216987/webrev.00/
>> Bug:
>> https://bugs.openjdk.java.net/browse/JDK-8216987
>> Thanks,
>> /Erik

More information about the hotspot-compiler-dev mailing list