RFR (S) 8129355 - [TESTBUG] FragmentMetaspaceSimple.java fails with ClassNotFoundException: test.Empty

Mikhailo Seledtsov mikhailo.seledtsov at oracle.com
Thu Jul 2 21:36:58 UTC 2015


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