JDK-8230797 : ARM32-softfp: assertion in InterpreterRuntime::resolve_ldc
  • Type: Bug
  • Component: hotspot
  • Sub-Component: runtime
  • Affected Version: 14
  • Priority: P4
  • Status: Closed
  • Resolution: Duplicate
  • OS: linux
  • CPU: aarch32
  • Submitted: 2019-09-10
  • Updated: 2021-07-28
  • Resolved: 2021-07-28
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 :  
Description
On 10.09.2019 13:30, christoph.goettschkes@microdoc.com wrote:

The runtime implementation of the ldc bytecodes has an ASSERT block, which does
some sanity checks after the constant has been resolved [1]. The checks include
loading the cached reference of the loaded constant using the
ConstantPool::cp_to_object_index() method. This can fail, if the type of the
loaded constant is not a reference, but a primitive type. This can happen on
32-bit ARM softfp, since double constants are loaded using the runtime
implementation on that platform (see [2]). If no other constants have been
loaded before and there are no cached references, using the
ConstantPool::cp_to_object_index() method crashes HotSpot with a SIGSEGV.
This is the backtrace of a slowdebug build:

#0  0x762f8886 in Array<unsigned short>::length (this=0x0) at src/hotspot/share/oops/array.hpp:106
#1  0x764a1e48 in Array<unsigned short>::index_of (this=0x0, x=@0x761bc9ee: 2) at src/hotspot/share/oops/array.hpp:111
#2  0x764a1b16 in Array<unsigned short>::find (this=0x0, x=@0x761bc9ee: 2) at src/hotspot/share/oops/array.hpp:123
#3  0x7649a7d8 in ConstantPool::cp_to_object_index (this=0x647df840, cp_index=2) at src/hotspot/share/oops/constantPool.cpp:418
#4  0x765e53e6 in InterpreterRuntime::resolve_ldc (thread=0x76017400, bytecode=Bytecodes::_ldc2_w) at src/hotspot/share/interpreter/interpreterRuntime.cpp:205
#5  0x73e5c804 in ?? ()

Sample application:

class Test {
    public static void main(String... args) {
        double x = 4.2;
    }
}

[1] http://hg.openjdk.java.net/jdk/jdk/file/3fee0e6b54f5/src/hotspot/share/interpreter/interpreterRuntime.cpp#l199
[2] http://hg.openjdk.java.net/jdk/jdk/file/3fee0e6b54f5/src/hotspot/cpu/arm/templateTable_arm.cpp#l475
Comments
http://mail.openjdk.java.net/pipermail/hotspot-runtime-dev/2019-September/035907.html
10-09-2019