RFR (S) 8129355 - [TESTBUG] FragmentMetaspaceSimple.java fails with ClassNotFoundException: test.Empty
Coleen Phillimore
coleen.phillimore at oracle.com
Fri Jul 3 00:22:36 UTC 2015
This looks like a good fix to me also.
Coleen
Sent from my iPhone
> On Jul 2, 2015, at 5:36 PM, Mikhailo Seledtsov <mikhailo.seledtsov at oracle.com> wrote:
>
> Hi Ioi,
>
> Changes look good to me.
> This is a great optimization idea for this testcase, to load class from buffer instead of a file.
>
> And thank you for thorough testing of the fix.
>
> Misha
>
>> On 7/2/2015 1:58 PM, Ioi Lam wrote:
>> Please review a small fix:
>>
>> http://cr.openjdk.java.net/~iklam/8129355-frag-metaspace-testbug-v1/
>>
>> Bug: [TESTBUG] runtime FragmentMetaspaceSimple.java fails with java.lang.ClassNotFoundException: test.Empty
>>
>> https://bugs.openjdk.java.net/browse/JDK-8129355
>>
>> Cause of failure:
>>
>> The test case is intended to stress the HotSpot metaspace allocation code, for 80 seconds,
>> by repeatedly loading many instances of a simple class named "test.Empty".
>>
>> In the failing version, each class is loaded by a new URLClassLoader instance. So each time
>> when a class is loaded, the file system is accessed to read the bytes of the class. So
>> inadvertently, this test has also become a stress test for the file system.
>>
>> On some of our embedded test machines, the file system may be misbehaving and would fail
>> to read the Empty.class file on rare occasions. This causes the test failure reported
>> by 8129355.
>>
>> Summary of fix:
>>
>> My fix is to not to use URLClassLoader. Instead, read Empty.class only once, and store the
>> contents into a byte buffer. This buffer will be used to define every instance of the Empty
>> class.
>>
>> While this fix does not address the root cause of the failure (file system issue in some
>> test machines), it will reduce the noise in our nightly tests.
>>
>> Also, now that the file system is accessed much less frequently, we can run many more iterations
>> so we can stress the metaspace more, which is the real intent of this test.
>>
>> Now it runs for about 80 million iterations on a fast PC and 5 million iterations on an
>> embedded box.
>>
>> Tests:
>>
>> Since the new version causes more stress in metaspace, I wanted to make sure it doesn't cause
>> any new failures related to metaspace. So I used the "RBT" tool to run the test 50 times
>> on 8 platforms:
>>
>> linux-arm64, linux-i586, linux-x64, macosx-x64,
>> solaris-sparcv9, solaris-x64, windows-i586, windows-x64
>>
>> for both product and fast debug builds. I also ran the test on 32-bit ARM for 12 hours (700+ runs)
>> and saw no failure.
>>
>> Thanks
>> - Ioi
>
More information about the hotspot-runtime-dev
mailing list