JDK-8073796 : assert(check_obj_alignment(result)) failed: address not aligned: ...
  • Type: Bug
  • Component: hotspot
  • Sub-Component: compiler
  • Affected Version: 9
  • Priority: P2
  • Status: Resolved
  • Resolution: Fixed
  • Submitted: 2015-02-24
  • Updated: 2015-06-03
  • Resolved: 2015-03-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 9
9 b55Fixed
Related Reports
Relates :  
Description
#  Internal Error (/opt/jprt/T/P1/094357.tohartma/s/hotspot/src/share/vm/oops/oop.inline.hpp:199), pid=28219, tid=140082967181056
#  assert(check_obj_alignment(result)) failed: address not aligned: 0x00000000baadbabe

Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
V  [libjvm.so+0x107add1]  VMError::report_and_die()+0x151;;  VMError::report_and_die()+0x151
V  [libjvm.so+0x73582b]  report_vm_error(char const*, int, char const*, char const*)+0x7b;;  report_vm_error(char const*, int, char const*, char const*)+0x7b
V  [libjvm.so+0x599bf7]  oopDesc::decode_heap_oop_not_null(unsigned int)+0xb7;;  oopDesc::decode_heap_oop_not_null(unsigned int)+0xb7
V  [libjvm.so+0x70375e]  Par_MarkRefsIntoClosure::do_oop(unsigned int*)+0x2e;;  Par_MarkRefsIntoClosure::do_oop(unsigned int*)+0x2e
V  [libjvm.so+0xd94db0]  ObjArrayKlass::oop_oop_iterate_v(oop, ExtendedOopClosure*)+0xf0;;  ObjArrayKlass::oop_oop_iterate_v(oop, ExtendedOopClosure*)+0xf0
V  [libjvm.so+0xf3097c]  ContiguousSpace::par_oop_iterate(MemRegion, ExtendedOopClosure*)+0xbc;;  ContiguousSpace::par_oop_iterate(MemRegion, ExtendedOopClosure*)+0xbc
V  [libjvm.so+0x6fa301]  CMSParMarkTask::do_young_space_rescan(unsigned int, OopsInGenClosure*, ContiguousSpace*, HeapWord**, unsigned long)+0x201;;  CMSParMarkTask::do_young_space_rescan(unsigned int, OopsInGenClosure*, ContiguousSpace*, HeapWord**, unsigned long)+0x201
V  [libjvm.so+0x6fa824]  CMSParInitialMarkTask::work(unsigned int)+0x154;;  CMSParInitialMarkTask::work(unsigned int)+0x154
V  [libjvm.so+0x10cbd90]  GangWorker::loop()+0x2b0;;  GangWorker::loop()+0x2b0
V  [libjvm.so+0xdd14e2]  java_start(Thread*)+0xf2;;  java_start(Thread*)+0xf2

Comments
regarding lack of test case: some GC phases and deoptimization must be concurrent and that appears hard to trigger in a simple test case.
02-03-2015

In the Arrays.copyOf intrinsic, when deoptimization happens between the array allocation and the array copy itself, a non initialized array can become visible to the GC (the array copy does the initialization). The array is not referenced for anywhere so this failure is specific to CMS. The fix consists in moving the allocation after the uncommon traps.
02-03-2015

Also, fails with the following assertions: # Internal Error (/opt/jprt/T/P1/200806.rwestrel/s/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp:6164), pid=9737, tid=20 # assert(obj->is_oop()) failed: expected an oop Current thread (0x0000000000453000): GCTaskThread [stack: 0xfffffd7ff818d000,0xfffffd7ff828d000] [id=20] Stack: [0xfffffd7ff818d000,0xfffffd7ff828d000], sp=0xfffffd7ff828b440, free space=1017k Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code) V [libjvm.so+0x1c35058] void VMError::report(outputStream*)+0xa18;; __1cHVMErrorGreport6MpnMoutputStream__v_+0xa18 V [libjvm.so+0x1c364bc] void VMError::report_and_die()+0x5ac;; __1cHVMErrorOreport_and_die6M_v_+0x5ac V [libjvm.so+0xfc248e] void report_vm_error(const char*,int,const char*,const char*)+0x7e;; __1cPreport_vm_error6Fpkci11_v_+0x7e V [libjvm.so+0xf84c7d] void Par_MarkRefsIntoClosure::do_oop(oop)+0xbd;; __1cXPar_MarkRefsIntoClosureGdo_oop6MnDoop__v_+0xbd V [libjvm.so+0xf84dde] void Par_MarkRefsIntoClosure::do_oop(oop*)+0x10e;; __1cXPar_MarkRefsIntoClosureGdo_oop6MpnDoop__v_+0x10e V [libjvm.so+0x1883f3d] int ObjArrayKlass::oop_oop_iterate_v(oop,ExtendedOopClosure*)+0x3bd;; __1cNObjArrayKlassRoop_oop_iterate_v6MnDoop_pnSExtendedOopClosure__i_+0x3bd V [libjvm.so+0x1a9386d] void ContiguousSpace::par_oop_iterate(MemRegion,ExtendedOopClosure*)+0x4dd;; __1cPContiguousSpacePpar_oop_iterate6MnJMemRegion_pnSExtendedOopClosure__v_+0x4dd V [libjvm.so+0xf7aeee] void CMSParMarkTask::do_young_space_rescan(unsigned,OopsInGenClosure*,ContiguousSpace*,HeapWord**,unsigned long)+0x6ae;; __1cOCMSParMarkTaskVdo_young_space_rescan6MIpnQOopsInGenClosure_pnPContiguousSpace_ppnIHeapWord_L_v_+0x6ae V [libjvm.so+0xf79ca4] void CMSParInitialMarkTask::work(unsigned)+0x124;; __1cVCMSParInitialMarkTaskEwork6MI_v_+0x124 V [libjvm.so+0x1ca2707] void GangWorker::loop()+0x5a7;; __1cKGangWorkerEloop6M_v_+0x5a7 V [libjvm.so+0x18ea30d] java_start+0x10d;; java_start+0x10d C [libc.so.1+0xdd60b] _thr_setup+0x5b;; _thr_setup+0x5b C [libc.so.1+0xdd840] _lwp_start+0x0;; _lwp_start+0x0 Deoptimization events (10 events): ... Event: 49.507 Thread 0x0000000001765000 Uncommon trap: reason=unloaded action=reinterpret pc=0xfffffd7ff981e2c8 method=java.util.Arrays.copyOf([Ljava/lang/Object;ILjava/lang/Class;)[Ljava/lang/Object; @ 18
26-02-2015

ILW=access to uninitialized memory, rare, none=HLH=P2
25-02-2015

In the Arrays.copyOf intrinsic, when deoptimization happens between the array allocation and the array copy itself, a non initialized array can become visible to the GC (the array copy does the initialization). The array is not referenced for anywhere so this failure is specific to CMS. The fix consists in moving the allocation after the uncommon traps.
25-02-2015

Probably not related. This bug asserts on reclaimed heap (0xbaadbabe). The other bug is an assert on something that is supposed to be a constant.
25-02-2015

Started to fail at the same time with JDK-8073792. Possibly, related.
24-02-2015