JDK-8229437 : assert(is_aligned(ref, HeapWordSize)) failed: invariant
  • Type: Bug
  • Component: hotspot
  • Sub-Component: jfr
  • Affected Version: 14
  • Priority: P2
  • Status: Closed
  • Resolution: Fixed
  • Submitted: 2019-08-12
  • Updated: 2022-06-27
  • Resolved: 2019-09-02
The Version table provides details related to the release that this issue/RFE will be addressed.

Unresolved : Release in which this issue/RFE will be addressed.
Resolved: Release in which this issue/RFE has been resolved.
Fixed : Release in which this issue/RFE has been fixed. The release containing this fix may be available for download as an Early Access Release or a General Availability Release.

To download the current JDK release, click here.
JDK 11 JDK 13 JDK 14 Other
11.0.6Fixed 13.0.3Fixed 14 b13Fixed openjdk8u-jfr-incubatorFixed
Related Reports
Relates :  
Relates :  
Description
Test crashed with 
#
# A fatal error has been detected by the Java Runtime Environment:
#
#  Internal Error (open/src/hotspot/share/jfr/leakprofiler/chains/bfsClosure.cpp:233), pid=19187, tid=19198
#  assert(is_aligned(ref, HeapWordSize)) failed: invariant
#
# JRE version: Java(TM) SE Runtime Environment (14.0+9) (fastdebug build 14-ea+9-267)
# Java VM: Java HotSpot(TM) 64-Bit Server VM (fastdebug 14-ea+9-267, mixed mode, sharing, tiered, compressed oops, parallel gc, linux-amd64)
# Problematic frame:
# V  [libjvm.so+0x67f734]  BFSClosure::do_root(oop const*)+0x64
#
# Core dump will be written. Default location: /opt/mach5/mesos/work_dir/slaves/00f4d7f9-7805-4b6a-aef8-9bb130db2435-S633/frameworks/1735e8a2-a1db-478c-8104-60c8b0af87dd-0196/executors/7e40f4e6-8ca6-48f2-b4a6-fb976bd99450/runs/9d4ce469-0788-4ca2-9ff3-472aab97a9a3/testoutput/test-support/jtreg_closed_test_hotspot_jtreg_applications_dacapo_Dacapo24H_java/scratch/0/core.19187
#
# If you would like to submit a bug report, please visit:
#   http://bugreport.java.com/bugreport/crash.jsp
#

---------------  S U M M A R Y ------------

Command Line: -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions -XX:+WhiteBoxAPI -XX:MaxRAMPercentage=6 -XX:+UseParallelGC -XX:StartFlightRecording=dumponexit=true,maxsize=500M -XX:FlightRecorderOptions=repository=jfrrep -XX:MaxRAMPercentage=50 -XX:+HeapDumpOnOutOfMemoryError -XX:+CrashOnOutOfMemoryError -XX:+DisplayVMOutputToStderr -Xlog:gc*,gc+heap=debug:gc.log:uptime,timemillis,level,tags -XX:+DisableExplicitGC -XX:+StartAttachListener -Djava.io.tmpdir=/opt/mach5/mesos/work_dir/slaves/00f4d7f9-7805-4b6a-aef8-9bb130db2435-S633/frameworks/1735e8a2-a1db-478c-8104-60c8b0af87dd-0196/executors/7e40f4e6-8ca6-48f2-b4a6-fb976bd99450/runs/9d4ce469-0788-4ca2-9ff3-472aab97a9a3/testoutput/test-support/jtreg_closed_test_hotspot_jtreg_applications_dacapo_Dacapo24H_java/scratch/0/java.io.tmpdir -Duser.home=/opt/mach5/mesos/work_dir/slaves/00f4d7f9-7805-4b6a-aef8-9bb130db2435-S633/frameworks/1735e8a2-a1db-478c-8104-60c8b0af87dd-0196/executors/7e40f4e6-8ca6-48f2-b4a6-fb976bd99450/runs/9d4ce469-0788-4ca2-9ff3-472aab97a9a3/testoutput/test-support/jtreg_closed_test_hotspot_jtreg_applications_dacapo_Dacapo24H_java/scratch/0/user.home applications.kitchensink.process.stress.Main /opt/mach5/mesos/work_dir/slaves/00f4d7f9-7805-4b6a-aef8-9bb130db2435-S633/frameworks/1735e8a2-a1db-478c-8104-60c8b0af87dd-0196/executors/7e40f4e6-8ca6-48f2-b4a6-fb976bd99450/runs/9d4ce469-0788-4ca2-9ff3-472aab97a9a3/testoutput/test-support/jtreg_closed_test_hotspot_jtreg_applications_dacapo_Dacapo24H_java/scratch/0/kitchensink.final.properties

Host:  Intel(R) Xeon(R) Platinum 8167M CPU @ 2.00GHz, 8 cores, 58G, Oracle Linux Server release 7.6
Time: Fri Aug  9 17:55:29 2019 UTC elapsed time: 88052 seconds (1d 0h 27m 32s)

---------------  T H R E A D  ---------------

Current thread (0x00007ff458132000):  VMThread "VM Thread" [stack: 0x00007ff43a164000,0x00007ff43a264000] [id=19198]

Stack: [0x00007ff43a164000,0x00007ff43a264000],  sp=0x00007ff43a261280,  free space=1012k
Native frames: (J=compiled Java code, A=aot compiled Java code, j=interpreted, Vv=VM code, C=native code)
V  [libjvm.so+0x67f734]  BFSClosure::do_root(oop const*)+0x64
V  [libjvm.so+0x153e646]  RootSetClosure<BFSClosure>::do_oop(unsigned int*)+0xc6
V  [libjvm.so+0x13ce0df]  OopMapSet::oops_do(frame const*, RegisterMap const*, OopClosure*)+0x4df
V  [libjvm.so+0xbc8919]  frame::oops_code_blob_do(OopClosure*, CodeBlobClosure*, RegisterMap const*)+0x39
V  [libjvm.so+0x16c499f]  JavaThread::oops_do(OopClosure*, CodeBlobClosure*)+0x19f
V  [libjvm.so+0x16d06fb]  Threads::oops_do(OopClosure*, CodeBlobClosure*)+0x5b
V  [libjvm.so+0x153e88d]  RootSetClosure<BFSClosure>::process()+0x6d
V  [libjvm.so+0x146c080]  PathToGcRootsOperation::doit()+0x2c0
V  [libjvm.so+0x178a7a3]  VM_Operation::evaluate()+0x143
V  [libjvm.so+0x17b9f98]  VMThread::evaluate_operation(VM_Operation*) [clone .constprop.66]+0x2b8
V  [libjvm.so+0x17ba89e]  VMThread::loop()+0x74e
V  [libjvm.so+0x17bac1a]  VMThread::run()+0xca
V  [libjvm.so+0x16d26f6]  Thread::call_run()+0xf6
V  [libjvm.so+0x13efc7e]  thread_native_entry(Thread*)+0x10e

JavaThread 0x00007ff45813c000 (nid = 19200) was being processed
Java frames: (J=compiled Java code, j=interpreted, Vv=VM code)
J 3222  java.lang.Object.wait(J)V java.base@14-ea (0 bytes) @ 0x00007ff4486fba8f [0x00007ff4486fb9c0+0x00000000000000cf]
J 8286 c2 java.lang.ref.ReferenceQueue.remove(J)Ljava/lang/ref/Reference; java.base@14-ea (125 bytes) @ 0x00007ff4489ac230 [0x00007ff4489abea0+0x0000000000000390]
J 65921% c2 java.lang.ref.Finalizer$FinalizerThread.run()V java.base@14-ea (56 bytes) @ 0x00007ff44b4b601c [0x00007ff44b4b5d60+0x00000000000002bc]
v  ~StubRoutines::call_stub
Register to memory mapping:

RAX=0x00007ff461848000 points into unknown readable memory: 58 00 00 00 00 00 00 00
RBX=0x00007ff43a05f951 is pointing into the stack for thread: 0x00007ff45813c000
RCX=0x00007ff46075380b: <offset 0x00000000019f680b> in /opt/mach5/mesos/work_dir/jib-master/install/jdk-14+9-267/linux-x64-debug.jdk/jdk-14/fastdebug/lib/server/libjvm.so at 0x00007ff45ed5d000
RDX=0x00007ff4605f61c8: <offset 0x00000000018991c8> in /opt/mach5/mesos/work_dir/jib-master/install/jdk-14+9-267/linux-x64-debug.jdk/jdk-14/fastdebug/lib/server/libjvm.so at 0x00007ff45ed5d000
RSP=0x00007ff43a261280 points into unknown readable memory: 50 f9 05 3a f4 7f 00 00
RBP=0x00007ff43a261290 points into unknown readable memory: 00 13 26 3a f4 7f 00 00
RSI=0x00000000000000e9 is an unknown value
RDI=0x00007ff4605f6050: <offset 0x0000000001899050> in /opt/mach5/mesos/work_dir/jib-master/install/jdk-14+9-267/linux-x64-debug.jdk/jdk-14/fastdebug/lib/server/libjvm.so at 0x00007ff45ed5d000
R8 =0x00007ff3d8a9692f points into unknown readable memory: c2
R9 =0x0000000000000005 is an unknown value
R10=0x0000000000000003 is an unknown value
R11=0x000000000000008e is an unknown value
R12=0x00007ff43a262960 points into unknown readable memory: 88 83 ac 60 f4 7f 00 00
R13=0x00007ff43a262960 points into unknown readable memory: 88 83 ac 60 f4 7f 00 00
R14=0x0 is NULL
R15=0x00007ff43a262860 points into unknown readable memory: 70 e8 b0 60 f4 7f 00 00


Registers:
RAX=0x00007ff461848000, RBX=0x00007ff43a05f951, RCX=0x00007ff46075380b, RDX=0x00007ff4605f61c8
RSP=0x00007ff43a261280, RBP=0x00007ff43a261290, RSI=0x00000000000000e9, RDI=0x00007ff4605f6050
R8 =0x00007ff3d8a9692f, R9 =0x0000000000000005, R10=0x0000000000000003, R11=0x000000000000008e
R12=0x00007ff43a262960, R13=0x00007ff43a262960, R14=0x0000000000000000, R15=0x00007ff43a262860
RIP=0x00007ff45f3dc734, EFLAGS=0x0000000000010202, CSGSFS=0x002b000000000033, ERR=0x0000000000000006
  TRAPNO=0x000000000000000e

Top of Stack: (sp=0x00007ff43a261280)
0x00007ff43a261280:   00007ff43a05f950 00007ff460bc880a
0x00007ff43a261290:   00007ff43a261300 00007ff46029b646
0x00007ff43a2612a0:   00007ff43a261300 00007ff4602918d3
0x00007ff43a2612b0:   00007ff460af2028 00000000a9421b50 

Instructions: (pc=0x00007ff45f3dc734)
0x00007ff45f3dc634:   c6 00 58 31 c0 e8 a2 3e 40 00 e8 8d 74 d6 00 e9
0x00007ff45f3dc644:   58 fe ff ff 0f 1f 84 00 00 00 00 00 48 8d 05 89
0x00007ff45f3dc654:   ed 73 01 48 8d 0d ad 71 37 01 48 8d 15 c3 99 21
0x00007ff45f3dc664:   01 be d0 00 00 00 48 8d 3d df 99 21 01 48 8b 00
0x00007ff45f3dc674:   c6 00 58 31 c0 e8 62 3e 40 00 e8 4d 74 d6 00 e9
0x00007ff45f3dc684:   34 fe ff ff 0f 1f 84 00 00 00 00 00 48 8d 05 49
0x00007ff45f3dc694:   ed 73 01 48 8d 0d ba a8 20 01 48 8d 15 4a be 36
0x00007ff45f3dc6a4:   01 be 53 00 00 00 48 8d 3d cf a8 20 01 48 8b 00
0x00007ff45f3dc6b4:   c6 00 58 31 c0 e8 22 3e 40 00 e8 0d 74 d6 00 e9
0x00007ff45f3dc6c4:   6c fe ff ff 0f 1f 84 00 00 00 00 00 55 48 89 e5
0x00007ff45f3dc6d4:   41 54 49 89 fc 53 48 89 f3 48 85 f6 0f 84 c2 00
0x00007ff45f3dc6e4:   00 00 40 f6 c6 07 75 24 48 8b 03 48 85 c0 74 57
0x00007ff45f3dc6f4:   49 8b 7c 24 10 e8 22 9c 50 00 84 c0 0f 84 8a 00
0x00007ff45f3dc704:   00 00 5b 41 5c 5d c3 0f 1f 44 00 00 48 8d 05 c9
0x00007ff45f3dc714:   ec 73 01 48 8d 0d ed 70 37 01 48 8d 15 a3 9a 21
0x00007ff45f3dc724:   01 be e9 00 00 00 48 8d 3d 1f 99 21 01 48 8b 00
0x00007ff45f3dc734:   c6 00 58 31 c0 e8 a2 3d 40 00 e8 8d 73 d6 00 48
0x00007ff45f3dc744:   8b 03 48 85 c0 75 a9 48 8d 05 8e ec 73 01 48 8d
0x00007ff45f3dc754:   3d f7 98 21 01 48 8d 0d ab 70 37 01 be ea 00 00
0x00007ff45f3dc764:   00 48 8d 15 00 a8 37 01 48 8b 00 c6 00 58 31 c0
0x00007ff45f3dc774:   e8 67 3d 40 00 e8 52 73 d6 00 49 8b 7c 24 10 e8
0x00007ff45f3dc784:   98 9b 50 00 84 c0 0f 85 76 ff ff ff 49 8b 7c 24
0x00007ff45f3dc794:   10 48 89 da 31 f6 5b 41 5c 5d e9 8d 99 50 00 0f
0x00007ff45f3dc7a4:   1f 44 00 00 48 8d 05 31 ec 73 01 48 8d 0d 55 70
0x00007ff45f3dc7b4:   37 01 48 8d 15 92 a7 37 01 be e8 00 00 00 48 8d
0x00007ff45f3dc7c4:   3d 87 98 21 01 48 8b 00 c6 00 58 31 c0 e8 0a 3d
0x00007ff45f3dc7d4:   40 00 e8 f5 72 d6 00 e9 0c ff ff ff 55 48 89 e5
0x00007ff45f3dc7e4:   53 48 89 fb 48 83 ec 08 48 8b 7f 10 e8 7b 9d 50
0x00007ff45f3dc7f4:   00 48 83 3d 73 d1 77 01 00 74 31 48 8b 53 38 48
0x00007ff45f3dc804:   2b 53 40 48 8d 3d 6a 9a 21 01 48 0f af c2 48 8b
0x00007ff45f3dc814:   73 30 48 83 c4 08 5b 5d 48 c1 e8 0a 48 89 c1 31
0x00007ff45f3dc824:   c0 e9 b6 85 00 00 66 0f 1f 44 00 00 48 83 c4 08 


Stack slot to memory mapping:
stack at sp + 0 slots: 0x00007ff43a05f950 is pointing into the stack for thread: 0x00007ff45813c000
stack at sp + 1 slots: 0x00007ff460bc880a: <offset 0x0000000001e6b80a> in /opt/mach5/mesos/work_dir/jib-master/install/jdk-14+9-267/linux-x64-debug.jdk/jdk-14/fastdebug/lib/server/libjvm.so at 0x00007ff45ed5d000
stack at sp + 2 slots: 0x00007ff43a261300 points into unknown readable memory: c0 13 26 3a f4 7f 00 00
stack at sp + 3 slots: 0x00007ff46029b646: <offset 0x000000000153e646> in /opt/mach5/mesos/work_dir/jib-master/install/jdk-14+9-267/linux-x64-debug.jdk/jdk-14/fastdebug/lib/server/libjvm.so at 0x00007ff45ed5d000
stack at sp + 4 slots: 0x00007ff43a261300 points into unknown readable memory: c0 13 26 3a f4 7f 00 00
stack at sp + 5 slots: 0x00007ff4602918d3: <offset 0x00000000015348d3> in /opt/mach5/mesos/work_dir/jib-master/install/jdk-14+9-267/linux-x64-debug.jdk/jdk-14/fastdebug/lib/server/libjvm.so at 0x00007ff45ed5d000
stack at sp + 6 slots: 0x00007ff460af2028: <offset 0x0000000001d95028> in /opt/mach5/mesos/work_dir/jib-master/install/jdk-14+9-267/linux-x64-debug.jdk/jdk-14/fastdebug/lib/server/libjvm.so at 0x00007ff45ed5d000
stack at sp + 7 slots: 0x00000000a9421b50 is an oop: java.lang.ref.ReferenceQueue$Lock 
{0x00000000a9421b50} - klass: 'java/lang/ref/ReferenceQueue$Lock'
 - ---- fields (total size 2 words):

VM_Operation (0x00007ff461827970): JFROldObject, mode: safepoint, requested by thread 0x00007ff458024800

Comments
Fix request (13u) JDK-8214542 is already in 13 so it would be better to backport this one. Not having the tests from description, will depend on Azul internal regular test runs.
20-03-2020

Fix request (11u) This patch needs to be brought along when backporting JDK-8214542 since it fixes a regression of it. Patch applies cleanly. Will run it through SAP's nightlies.
03-09-2019

URL: https://hg.openjdk.java.net/jdk/jdk/rev/94481c2b9388 User: mgronlun Date: 2019-09-02 12:04:11 +0000
02-09-2019

Refactoring as part of JDK-8214542 copied the alignment assertion to the target delegates do_root() member function. But this is too strong since encoded narrowOop* references also forwards into the same do_root() member function. The alignment assertions are (still) done inside the RootSetClosure before references are forwarded to delegates. Therefore we are not weakening validity checks by this change set: diff -r 807d192fb7dd -r 97a842e42b38 src/hotspot/share/jfr/leakprofiler/chains/bfsClosure.cpp --- a/src/hotspot/share/jfr/leakprofiler/chains/bfsClosure.cpp Wed Aug 14 00:18:00 2019 -0400 +++ b/src/hotspot/share/jfr/leakprofiler/chains/bfsClosure.cpp Wed Aug 14 11:20:25 2019 +0200 @@ -230,8 +230,6 @@ void BFSClosure::do_root(const oop* ref) { assert(ref != NULL, "invariant"); - assert(is_aligned(ref, HeapWordSize), "invariant"); - assert(*ref != NULL, "invariant"); if (!_edge_queue->is_full()) { _edge_queue->add(NULL, ref); } diff -r 807d192fb7dd -r 97a842e42b38 src/hotspot/share/jfr/leakprofiler/chains/dfsClosure.cpp --- a/src/hotspot/share/jfr/leakprofiler/chains/dfsClosure.cpp Wed Aug 14 00:18:00 2019 -0400 +++ b/src/hotspot/share/jfr/leakprofiler/chains/dfsClosure.cpp Wed Aug 14 11:20:25 2019 +0200 @@ -178,8 +178,7 @@ void DFSClosure::do_root(const oop* ref) { assert(ref != NULL, "invariant"); - assert(is_aligned(ref, HeapWordSize), "invariant"); - const oop pointee = *ref; + const oop pointee = UnifiedOop::dereference(ref); assert(pointee != NULL, "invariant"); closure_impl(ref, pointee); }
14-08-2019

[~rraghavan] Thanks, you are right Rahul, it is related to JDK-8214542 - refactoring introduced this assertion that is misplaced for narrowOops.
14-08-2019

This issue seems related to recent added fix changeset of JDK-8214542. So for now changing Subcomponent to jfr and request help from [~mgronlun]. Please unassign, change back to compiler if wrong. Thanks.
14-08-2019