Assertion page_chunks < MediumChunk fail for 16K page size on TestVirtualSpaceNodeTest

Leslie Zhai zhaixiang at loongson.cn
Wed Sep 5 07:05:18 UTC 2018


Hi all,

Assertion page_chunks < MediumChunk fail for 16K page size on 
TestVirtualSpaceNodeTest[1]:

...
STDOUT:
Running internal VM tests
Running test: TestOS_test()
Running test: TestReservedSpace_test()
Running test: TestReserveMemorySpecial_test()
Running test: TestVirtualSpace_test()
Running test: TestMetaspaceAux_test()
Running test: TestMetachunk_test()
Running test: TestVirtualSpaceNode_test()
# To suppress the following error report, specify this argument
# after -XX: or in .hotspotrc: SuppressErrorAt=/metaspace.cpp:3871
#
# A fatal error has been detected by the Java Runtime Environment:
#
#  Internal Error 
(/home/loongson/aoqi/jdk8-mips/hotspot/src/share/vm/memory/metaspace.cpp:3871), 
pid=32657, tid=0x000000ffebd571f0
#  assert(page_chunks < MediumChunk) failed: Test expects medium chunks 
to be at least 4*page_size
#
# JRE version: OpenJDK Runtime Environment (8.0) (build 
1.8.0-internal-fastdebug-loongson_2018_09_03_18_49-b00) (Loongson 
8.1-loongson3a-Loongnix)
# Java VM: OpenJDK 64-Bit Server VM (25.71-b00-fastdebug mixed mode 
linux-mips64 compressed oops)
# Failed to write core dump. Core dumps have been disabled. To enable 
core dumping, try "ulimit -c unlimited" before starting Java again
#
# An error report file with more information is saved as:
# /home/loongson/tmp/JTwork/scratch/hs_err_pid32657.log
#
# If you would like to submit a bug report, please visit:
#   http://bugreport.java.com/bugreport/crash.jsp
#
Current thread is 1099173294576
Dumping core ...
STDERR:
rerun:
cd /home/loongson/tmp/JTwork/scratch && \
DISPLAY=localhost:14.0 \
HOME=/home/loongson \
LANG=zh_CN.UTF-8 \
PATH=/bin:/usr/bin \
CLASSPATH=/home/loongson/tmp/JTwork/classes/sanity:/home/loongson/aoqi/jdk8-mips/hotspot/test/sanity:/home/loongson/aoqi/j2sdk-image-835-fastdebug/lib/tools.jar:/home/loongson/bin/jtreg/lib/javatest.jar:/home/loongson/bin/jtreg/lib/jtreg.jar 
\
     /home/loongson/aoqi/j2sdk-image-835-fastdebug/bin/java \
-Dtest.class.path.prefix=/home/loongson/tmp/JTwork/classes/sanity:/home/loongson/aoqi/jdk8-mips/hotspot/test/sanity 
\
-Dtest.src=/home/loongson/aoqi/jdk8-mips/hotspot/test/sanity \
-Dtest.src.path=/home/loongson/aoqi/jdk8-mips/hotspot/test/sanity \
         -Dtest.classes=/home/loongson/tmp/JTwork/classes/sanity \
         -Dtest.class.path=/home/loongson/tmp/JTwork/classes/sanity \
         -Dtest.vm.opts= \
         -Dtest.tool.vm.opts= \
         -Dtest.compiler.opts= \
         -Dtest.java.opts= \
         -Dtest.jdk=/home/loongson/aoqi/j2sdk-image-835-fastdebug \
-Dcompile.jdk=/home/loongson/aoqi/j2sdk-image-835-fastdebug \
         -Dtest.timeout.factor=5.0 \
         -XX:+IgnoreUnrecognizedVMOptions \
         -XX:+ExecuteInternalVMTests \
         com.sun.javatest.regtest.agent.MainWrapper 
/home/loongson/tmp/JTwork/sanity/ExecuteInternalVMTests.d/main.0.jta

TEST RESULT: Failed. Unexpected exit from test [exit code: 134]
--------------------------------------------------
Test results: failed: 1


And it is also reproducible for x86 16K page size:
diff -r eed8e846c982 src/share/vm/memory/metaspace.cpp
--- a/src/share/vm/memory/metaspace.cpp    Tue Jul 03 18:01:40 2018 -0700
+++ b/src/share/vm/memory/metaspace.cpp    Wed Sep 05 14:56:10 2018 +0800
@@ -3867,7 +3867,7 @@
      { // 4 pages of VSN is committed, some is used by chunks
        ChunkManager cm(SpecializedChunk, SmallChunk, MediumChunk);
        VirtualSpaceNode vsn(vsn_test_size_bytes);
-      const size_t page_chunks = 4 * (size_t)os::vm_page_size() / 
BytesPerWord;
+      const size_t page_chunks = 4 * 16384 / BytesPerWord;
        assert(page_chunks < MediumChunk, "Test expects medium chunks to 
be at least 4*page_size");
        vsn.initialize();
        vsn.expand_by(page_chunks, page_chunks);
...
STDOUT:
Running internal VM tests
Running test: TestOS_test()
Running test: TestReservedSpace_test()
Running test: TestReserveMemorySpecial_test()
Running test: TestVirtualSpace_test()
Running test: TestMetaspaceAux_test()
Running test: TestMetachunk_test()
Running test: TestVirtualSpaceNode_test()
# To suppress the following error report, specify this argument
# after -XX: or in .hotspotrc:  SuppressErrorAt=/metaspace.cpp:3871
#
# A fatal error has been detected by the Java Runtime Environment:
#
#  Internal Error 
(/home/loongson/zhaixiang/jdk8u/hotspot/src/share/vm/memory/metaspace.cpp:3871), 
pid=8307, tid=0x00007fc9199d0700
#  assert(page_chunks < MediumChunk) failed: Test expects medium chunks 
to be at least 4*page_size
#
# JRE version: OpenJDK Runtime Environment (8.0) (build 
1.8.0-internal-fastdebug-loongson_2018_09_05_13_48-b00)
# Java VM: OpenJDK 64-Bit Server VM (25.71-b00-fastdebug mixed mode 
linux-amd64 compressed oops)
# Failed to write core dump. Core dumps have been disabled. To enable 
core dumping, try "ulimit -c unlimited" before starting Java again
#
# An error report file with more information is saved as:
# /home/loongson/zhaixiang/JTwork/scratch/hs_err_pid8307.log
#
# If you would like to submit a bug report, please visit:
#   http://bugreport.java.com/bugreport/crash.jsp
#
Current thread is 140501694875392
Dumping core ...
...
----- 8< -------- 8< -------- 8< -------- 8< -------- 8< -------- 8< ---

Because vm_page_size is setter by sysconf(_SC_PAGESIZE)[2]  So could I 
change the assertion?
diff -r eed8e846c982 src/share/vm/memory/metaspace.cpp
--- a/src/share/vm/memory/metaspace.cpp    Tue Jul 03 18:01:40 2018 -0700
+++ b/src/share/vm/memory/metaspace.cpp    Wed Sep 05 15:00:55 2018 +0800
@@ -3868,7 +3868,7 @@
        ChunkManager cm(SpecializedChunk, SmallChunk, MediumChunk);
        VirtualSpaceNode vsn(vsn_test_size_bytes);
        const size_t page_chunks = 4 * (size_t)os::vm_page_size() / 
BytesPerWord;
-      assert(page_chunks < MediumChunk, "Test expects medium chunks to 
be at least 4*page_size");
+      assert(page_chunks <= MediumChunk, "Test expects medium chunks to 
be at least 4*page_size");
        vsn.initialize();
        vsn.expand_by(page_chunks, page_chunks);
        vsn.get_chunk_vs(SmallChunk);

Please give me some suggestion,  thanks a lot!

1. 
http://hg.openjdk.java.net/jdk8u/jdk8u-dev/hotspot/file/1d1ea10fe09f/src/share/vm/memory/metaspace.cpp#l3588
2. 
http://hg.openjdk.java.net/jdk8u/jdk8u-dev/hotspot/file/80ee2541504e/src/os/linux/vm/os_linux.cpp#l5009

-- 
Regards,
Leslie Zhai




More information about the jdk8u-dev mailing list