JDK-8209623 : assert(sym->byte_at(i) == _name[I]) after JDK-8195100 (low latency hash table)
  • Type: Bug
  • Component: hotspot
  • Sub-Component: runtime
  • Affected Version: 12
  • Priority: P3
  • Status: Closed
  • Resolution: Duplicate
  • OS: generic
  • CPU: ppc,s390x
  • Submitted: 2018-08-17
  • Updated: 2019-01-15
  • Resolved: 2018-08-17
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.
Other
tbdResolved
Related Reports
Duplicate :  
Relates :  
Description
Assertion fails on s390x and all ppc platforms. Root cause is assumed to be the following passage from the c++ standard (copied from cppreference.com):

"char - type for character representation which can be most efficiently processed on the target system (has the same representation and alignment as either signed char or unsigned char, but is always a distinct type). ... The signedness of char depends on the compiler and the target platform. ..."

From hs_err file:
#  Internal Error (/net/usr.work/openjdk/nb/linuxs390x/nightly/jdk/src/hotspot/share/classfile/symbolTable.cpp:452), pid=8445, tid=8450
#  assert(sym->byte_at(i) == _name[i]) failed: operator()() [0,-17,239]

Source code:
#ifdef ASSERT
    assert(sym->utf8_length() == _len, "%s [%d,%d]", where, sym->utf8_length(), _len);
    for (int i = 0; i < _len; i++) {
      assert(sym->byte_at(i) == _name[i],
             "%s [%d,%d,%d]", where, i, sym->byte_at(i), _name[i]);
    }
#endif

Obviously, byte_at(i) does a sign extension when widening the extracted byte to the int result type. _name[] is a char*, thus can be implemented as signed (code works) or unsigned (assertion fails).


Comments
Sorry,my fault.
17-08-2018

Why is this filed in hotspot/compiler? Moving to runtime.
17-08-2018