JDK-8076523 : assert(((ABS(iv_adjustment_in_bytes) % elt_size) == 0)) fails in superword.cpp
  • Type: Bug
  • Component: hotspot
  • Sub-Component: compiler
  • Affected Version: 9
  • Priority: P3
  • Status: Resolved
  • Resolution: Fixed
  • Submitted: 2015-04-02
  • Updated: 2015-09-29
  • Resolved: 2015-04-03
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 8 JDK 9
8u60Fixed 9 b64Fixed
Related Reports
Relates :  
Description
Four tests fail with the following error message:

#  Internal Error (/opt/jprt/T/P1/193649.vkozlov/s/hotspot/src/share/vm/opto/superword.cpp:495), pid=28553, tid=3245341552
#  assert(((ABS(iv_adjustment_in_bytes) % elt_size) == 0)) failed: (4) should be divisible by (8)

The problem might be related to the recent changes by JDK-8026049, but more investigation is needed to confirm/deny that.
Comments
Yes, it is JDK-8026049 related because vectorization assumes that offset in array is aligned to size of memory operations (which access element of array). With UseUnalignedAccesses Long load/store operations could be used to access byte[] array without alignment to sizeof(jlong). Vectorization has code which verifies alignment - it should be adjusted to check that offset%mem_oper_size == 0.
02-04-2015

Thank you, Vladimir!
02-04-2015

I will look.
02-04-2015

Hi Vladimir, this problem could be related (but it could be also unrelated) to the recent changes by Andrew Haley from RedHat that you've recently pushed (JDK-8026049). I'm not sure to whom to assign this issue for further investigation. Thank you and best regards, Zoltan
02-04-2015