JDK-8329545 : [s390x] Fix garbage value being passed in Argument Register
  • Type: Bug
  • Component: hotspot
  • Sub-Component: runtime
  • Affected Version: 21.0.2,22,23
  • Priority: P2
  • Status: Resolved
  • Resolution: Fixed
  • OS: linux
  • CPU: s390x
  • Submitted: 2024-04-02
  • Updated: 2024-04-16
  • Resolved: 2024-04-10
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 21 JDK 22 JDK 23
21.0.4Fixed 22.0.2Fixed 23 b18Fixed
Related Reports
Relates :  
Description
In FFI implementation on s390x, there is a bug due to which when 32-bit integer is loaded then it contains garbage value in other half of 32-bits. Which results into Segmentation Fault while doing some operations. 

(gdb) i r r2
r2      0x3ff00000019     4393751543833

*3ff needs not be there.

Error:
#
# A fatal error has been detected by the Java Runtime Environment:
#
#  SIGSEGV (0xb) at pc=0x000003fefdeed1be, pid=827814, tid=827815
#
# JRE version: OpenJDK Runtime Environment (23.0) (fastdebug build 23-internal-adhoc.amit.jdk)
# Java VM: OpenJDK 64-Bit Server VM (fastdebug 23-internal-adhoc.amit.jdk, mixed mode, tiered, compressed oops, compressed class ptrs, g1 gc, linux-s390x)
# Problematic frame:
# C  [libfontmanager.so+0xed1be]  getHBScriptCode+0x26
#
# Core dump will be written. Default location: Core dumps may be processed with "/usr/share/apport/apport -p%p -s%s -c%c -d%d -P%P -u%u -g%g -- %E" (or dumping to /home/amit/daily_testing/jdk/core.827814)
#
# If you would like to submit a bug report, please visit:
#   https://bugreport.java.com/bugreport/crash.jsp
# The crash happened outside the Java Virtual Machine in native code.
# See problematic frame for where to report the bug.
#


Stack Trace: 
Stack: [0x000003ffa5880000,0x000003ffa5980000],  sp=0x000003ffa597c700,  free space=1009k
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
C  [libfontmanager.so+0xed1be]  getHBScriptCode+0x26  (scriptMapping.c:91)
v  ~RuntimeStub::nep_invoker_blob 0x000003ff9889f1ac
J 3130 c1 java.lang.invoke.LambdaForm$MH+0x0000000031301000.invoke(Ljava/lang/Object;JFJJJIIIIIFFIIJJ)V java.base (49 bytes) @ 0x000003ff9194a89c [0x000003ff9194a440+0x000000000000045c]
j  java.lang.invoke.LambdaForm$MH+0x00000000312b7000.invokeExact_MT(Ljava/lang/Object;JFJJJIIIIIFFIIJJLjava/lang/Object;)V+49 java.base
j  jdk.internal.foreign.abi.DowncallStub+0x0000000031295400.invoke(Ljava/lang/foreign/SegmentAllocator;Ljava/lang/foreign/MemorySegment;FLjava/lang/foreign/MemorySegment;Ljava/lang/foreign/MemorySegment;Ljava/lang/foreign/MemorySegment;IIIIIFFIILjava/lang/foreign/MemorySegment;Ljava/lang/foreign/MemorySegment;)V+369 java.base
j  java.lang.invoke.LambdaForm$DMH+0x0000000031295800.invokeStatic(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;FLjava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;IIIIIFFIILjava/lang/Object;Ljava/lang/Object;)V+42 java.base
j  java.lang.invoke.LambdaForm$MH+0x0000000031300c00.invoke(Ljava/lang/Object;FLjava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;IIIIIFFIILjava/lang/Object;Ljava/lang/Object;)V+82 java.base
j  java.lang.invoke.LambdaForm$MH+0x00000000312b6800.invokeExact_MT(Ljava/lang/Object;FLjava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;IIIIIFFIILjava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V+46 java.base
j  sun.font.HBShaper.lambda$shape$0(Ljava/awt/geom/Point2D$Float;[F[CFLjava/lang/foreign/MemorySegment;IIIIII)V+79 java.desktop
J 3213 c1 sun.font.HBShaper$$Lambda+0x00000000312d3098.run()V java.desktop (48 bytes) @ 0x000003ff91935b88 [0x000003ff91935a40+0x0000000000000148]
J 3212 c1 jdk.internal.vm.ScopedValueContainer.runWithoutScope(Ljava/lang/Runnable;)V java.base (105 bytes) @ 0x000003ff9191c2d4 [0x000003ff9191c1c0+0x0000000000000114]
J 3208 c1 java.lang.ScopedValue$Carrier.run(Ljava/lang/Runnable;)V java.base (33 bytes) @ 0x000003ff9193c770 [0x000003ff9193c280+0x00000000000004f0]
J 3200 c1 sun.font.HBShaper.shape(Lsun/font/Font2D;Lsun/font/FontStrike;F[FLjava/lang/foreign/MemorySegment;[CLsun/font/GlyphLayout$GVData;IIIILjava/awt/geom/Point2D$Float;II)V java.desktop (52 bytes) @ 0x000003ff91936c20 [0x000003ff91936500+0x0000000000000720]
J 3197 c1 sun.font.SunLayoutEngine.layout(Lsun/font/FontStrikeDesc;[FFIILsun/font/TextRecord;ILjava/awt/geom/Point2D$Float;Lsun/font/GlyphLayout$GVData;)V java.desktop (141 bytes) @ 0x000003ff9192528c [0x000003ff91924f80+0x000000000000030c]
J 3189 c1 sun.font.GlyphLayout$EngineRecord.layout()V java.desktop (108 bytes) @ 0x000003ff9191814c [0x000003ff91917f80+0x00000000000001cc]
J 3114 c1 sun.font.GlyphLayout.layout(Ljava/awt/Font;Ljava/awt/font/FontRenderContext;[CIIILsun/font/StandardGlyphVector;)Lsun/font/StandardGlyphVector; java.desktop (683 bytes) @ 0x000003ff918f2120 [0x000003ff918f0640+0x0000000000001ae0]
J 3235 c1 sun.font.ExtendedTextSourceLabel.createGV()Lsun/font/StandardGlyphVector; java.desktop (79 bytes) @ 0x000003ff9193108c [0x000003ff91930ec0+0x00000000000001cc]
J 3163 c1 java.awt.font.TextLine.init()V java.desktop (1056 bytes) @ 0x000003ff9190aaf8 [0x000003ff91909c00+0x0000000000000ef8]
J 3234 c1 java.awt.font.TextLine.<init>(Ljava/awt/font/FontRenderContext;[Lsun/font/TextLineComponent;[F[CII[I[BZ)V java.desktop (83 bytes) @ 0x000003ff9192cf2c [0x000003ff9192cc00+0x000000000000032c]
J 3093 c1 java.awt.font.TextLine.fastCreateTextLine(Ljava/awt/font/FontRenderContext;[CLjava/awt/Font;Lsun/font/CoreMetrics;Ljava/util/Map;)Ljava/awt/font/TextLine; java.desktop (341 bytes) @ 0x000003ff918b3fd8 [0x000003ff918b3100+0x0000000000000ed8]
J 3142 c1 java.awt.font.TextLayout.fastInit([CLjava/awt/Font;Ljava/util/Map;Ljava/awt/font/FontRenderContext;)V java.desktop (90 bytes) @ 0x000003ff918e7b44 [0x000003ff918e7840+0x0000000000000304]
J 3140 c1 java.awt.font.TextLayout.<init>(Ljava/lang/String;Ljava/awt/Font;Ljava/awt/font/FontRenderContext;)V java.desktop (180 bytes) @ 0x000003ff918ea588 [0x000003ff918e9f00+0x0000000000000688]
J 3138 c1 minimalTest.runTest(Ljava/lang/Object;Ljava/lang/Object;)V (26 bytes) @ 0x000003ff918e2b48 [0x000003ff918e29c0+0x0000000000000188]
j  minimalTest.main([Ljava/lang/String;)V+210
j  java.lang.invoke.LambdaForm$DMH+0x00000000310f0000.invokeStatic(Ljava/lang/Object;Ljava/lang/Object;)V+10 java.base
j  java.lang.invoke.LambdaForm$MH+0x0000000031229000.invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;+33 java.base
j  java.lang.invoke.LambdaForm$MH+0x0000000031229400.invokeExact_MT(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;+20 java.base
j  jdk.internal.reflect.DirectMethodHandleAccessor.invokeImpl(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;+55 java.base
j  jdk.internal.reflect.DirectMethodHandleAccessor.invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;+23 java.base
j  java.lang.reflect.Method.invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;+102 java.base
j  com.sun.tools.javac.launcher.SourceLauncher.execute(Lcom/sun/tools/javac/launcher/MemoryContext;[Ljava/lang/String;)Ljava/lang/Class;+447 jdk.compiler
j  com.sun.tools.javac.launcher.SourceLauncher.run([Ljava/lang/String;[Ljava/lang/String;)Lcom/sun/tools/javac/launcher/Result;+62 jdk.compiler
j  com.sun.tools.javac.launcher.SourceLauncher.main([Ljava/lang/String;)V+17 jdk.compiler
v  ~StubRoutines::call_stub 0x000003ff983cfb1c
V  [libjvm.so+0xb1b51a]  JavaCalls::call_helper(JavaValue*, methodHandle const&, JavaCallArguments*, JavaThread*)+0x42a  (javaCalls.cpp:415)
V  [libjvm.so+0xb1a0d2]  JavaCalls::call(JavaValue*, methodHandle const&, JavaCallArguments*, JavaThread*)+0x42  (javaCalls.cpp:329)
V  [libjvm.so+0xc551c2]  jni_invoke_static(JNIEnv_*, JavaValue*, _jobject*, JNICallType, _jmethodID*, JNI_ArgumentPusher*, JavaThread*) [clone .constprop.1]+0x222  (jni.cpp:888)
V  [libjvm.so+0xc5871a]  jni_CallStaticVoidMethod+0x13a  (jni.cpp:1717)
C  [libjli.so+0x3e5c]  invokeStaticMainWithArgs+0x9c  (java.c:418)
C  [libjli.so+0x4fe8]  JavaMain+0xe28  (java.c:623)
C  [libjli.so+0x8100]  ThreadJavaMain+0x20  (java_md.c:650)
Java frames: (J=compiled Java code, j=interpreted, Vv=VM code)
v  ~RuntimeStub::nep_invoker_blob 0x000003ff9889f0d6
J 3130 c1 java.lang.invoke.LambdaForm$MH+0x0000000031301000.invoke(Ljava/lang/Object;JFJJJIIIIIFFIIJJ)V java.base (49 bytes) @ 0x000003ff9194a89c [0x000003ff9194a440+0x000000000000045c]
j  java.lang.invoke.LambdaForm$MH+0x00000000312b7000.invokeExact_MT(Ljava/lang/Object;JFJJJIIIIIFFIIJJLjava/lang/Object;)V+49 java.base
j  jdk.internal.foreign.abi.DowncallStub+0x0000000031295400.invoke(Ljava/lang/foreign/SegmentAllocator;Ljava/lang/foreign/MemorySegment;FLjava/lang/foreign/MemorySegment;Ljava/lang/foreign/MemorySegment;Ljava/lang/foreign/MemorySegment;IIIIIFFIILjava/lang/foreign/MemorySegment;Ljava/lang/foreign/MemorySegment;)V+369 java.base
j  java.lang.invoke.LambdaForm$DMH+0x0000000031295800.invokeStatic(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;FLjava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;IIIIIFFIILjava/lang/Object;Ljava/lang/Object;)V+42 java.base
j  java.lang.invoke.LambdaForm$MH+0x0000000031300c00.invoke(Ljava/lang/Object;FLjava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;IIIIIFFIILjava/lang/Object;Ljava/lang/Object;)V+82 java.base
j  java.lang.invoke.LambdaForm$MH+0x00000000312b6800.invokeExact_MT(Ljava/lang/Object;FLjava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;IIIIIFFIILjava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V+46 java.base
j  sun.font.HBShaper.lambda$shape$0(Ljava/awt/geom/Point2D$Float;[F[CFLjava/lang/foreign/MemorySegment;IIIIII)V+79 java.desktop
J 3213 c1 sun.font.HBShaper$$Lambda+0x00000000312d3098.run()V java.desktop (48 bytes) @ 0x000003ff91935b88 [0x000003ff91935a40+0x0000000000000148]
J 3212 c1 jdk.internal.vm.ScopedValueContainer.runWithoutScope(Ljava/lang/Runnable;)V java.base (105 bytes) @ 0x000003ff9191c2d4 [0x000003ff9191c1c0+0x0000000000000114]
J 3208 c1 java.lang.ScopedValue$Carrier.run(Ljava/lang/Runnable;)V java.base (33 bytes) @ 0x000003ff9193c770 [0x000003ff9193c280+0x00000000000004f0]
J 3200 c1 sun.font.HBShaper.shape(Lsun/font/Font2D;Lsun/font/FontStrike;F[FLjava/lang/foreign/MemorySegment;[CLsun/font/GlyphLayout$GVData;IIIILjava/awt/geom/Point2D$Float;II)V java.desktop (52 bytes) @ 0x000003ff91936c20 [0x000003ff91936500+0x0000000000000720]
J 3197 c1 sun.font.SunLayoutEngine.layout(Lsun/font/FontStrikeDesc;[FFIILsun/font/TextRecord;ILjava/awt/geom/Point2D$Float;Lsun/font/GlyphLayout$GVData;)V java.desktop (141 bytes) @ 0x000003ff9192528c [0x000003ff91924f80+0x000000000000030c]
J 3189 c1 sun.font.GlyphLayout$EngineRecord.layout()V java.desktop (108 bytes) @ 0x000003ff9191814c [0x000003ff91917f80+0x00000000000001cc]
J 3114 c1 sun.font.GlyphLayout.layout(Ljava/awt/Font;Ljava/awt/font/FontRenderContext;[CIIILsun/font/StandardGlyphVector;)Lsun/font/StandardGlyphVector; java.desktop (683 bytes) @ 0x000003ff918f2120 [0x000003ff918f0640+0x0000000000001ae0]
J 3235 c1 sun.font.ExtendedTextSourceLabel.createGV()Lsun/font/StandardGlyphVector; java.desktop (79 bytes) @ 0x000003ff9193108c [0x000003ff91930ec0+0x00000000000001cc]
J 3163 c1 java.awt.font.TextLine.init()V java.desktop (1056 bytes) @ 0x000003ff9190aaf8 [0x000003ff91909c00+0x0000000000000ef8]
J 3234 c1 java.awt.font.TextLine.<init>(Ljava/awt/font/FontRenderContext;[Lsun/font/TextLineComponent;[F[CII[I[BZ)V java.desktop (83 bytes) @ 0x000003ff9192cf2c [0x000003ff9192cc00+0x000000000000032c]
J 3093 c1 java.awt.font.TextLine.fastCreateTextLine(Ljava/awt/font/FontRenderContext;[CLjava/awt/Font;Lsun/font/CoreMetrics;Ljava/util/Map;)Ljava/awt/font/TextLine; java.desktop (341 bytes) @ 0x000003ff918b3fd8 [0x000003ff918b3100+0x0000000000000ed8]
J 3142 c1 java.awt.font.TextLayout.fastInit([CLjava/awt/Font;Ljava/util/Map;Ljava/awt/font/FontRenderContext;)V java.desktop (90 bytes) @ 0x000003ff918e7b44 [0x000003ff918e7840+0x0000000000000304]
J 3140 c1 java.awt.font.TextLayout.<init>(Ljava/lang/String;Ljava/awt/Font;Ljava/awt/font/FontRenderContext;)V java.desktop (180 bytes) @ 0x000003ff918ea588 [0x000003ff918e9f00+0x0000000000000688]
J 3138 c1 minimalTest.runTest(Ljava/lang/Object;Ljava/lang/Object;)V (26 bytes) @ 0x000003ff918e2b48 [0x000003ff918e29c0+0x0000000000000188]
j  minimalTest.main([Ljava/lang/String;)V+210
j  java.lang.invoke.LambdaForm$DMH+0x00000000310f0000.invokeStatic(Ljava/lang/Object;Ljava/lang/Object;)V+10 java.base
j  java.lang.invoke.LambdaForm$MH+0x0000000031229000.invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;+33 java.base
j  java.lang.invoke.LambdaForm$MH+0x0000000031229400.invokeExact_MT(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;+20 java.base
j  jdk.internal.reflect.DirectMethodHandleAccessor.invokeImpl(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;+55 java.base
j  jdk.internal.reflect.DirectMethodHandleAccessor.invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;+23 java.base
j  java.lang.reflect.Method.invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;+102 java.base
j  com.sun.tools.javac.launcher.SourceLauncher.execute(Lcom/sun/tools/javac/launcher/MemoryContext;[Ljava/lang/String;)Ljava/lang/Class;+447 jdk.compiler
j  com.sun.tools.javac.launcher.SourceLauncher.run([Ljava/lang/String;[Ljava/lang/String;)Lcom/sun/tools/javac/launcher/Result;+62 jdk.compiler
j  com.sun.tools.javac.launcher.SourceLauncher.main([Ljava/lang/String;)V+17 jdk.compiler
v  ~StubRoutines::call_stub 0x000003ff983cfb1c
Comments
I have tested this backport patch for jdk21u-dev for release and fastdebug build. I do not see failures related to this patch.
12-04-2024

[21u] Please comment on the testing you did for this in 21!
12-04-2024

[jdk21u-fix-request] Approval Request from sid8606 Fix sign extension on 4 byte load from argument stack slot to GPR, without this change the code is throwing segmentation fault while doing some operations.
12-04-2024

A pull request was submitted for review. URL: https://git.openjdk.org/jdk21u-dev/pull/492 Date: 2024-04-12 06:06:09 +0000
12-04-2024

Changeset: e0fd6c4c Author: Sidraya Jayagond <sjayagond@openjdk.org> Committer: Amit Kumar <amitkumar@openjdk.org> Date: 2024-04-10 10:12:21 +0000 URL: https://git.openjdk.org/jdk/commit/e0fd6c4c9e30ef107ea930c8ecc449842ae4b8d4
10-04-2024

A pull request was submitted for review. URL: https://git.openjdk.org/jdk22u/pull/137 Date: 2024-04-10 12:26:00 +0000
10-04-2024

[jdk22u-fix-request] Approval Request from sid8606 Fix sign extension on 4 byte load from argument stack slot to GPR, without this change the code is throwing segmentation fault while doing some operations.
10-04-2024

A pull request was submitted for review. URL: https://git.openjdk.org/jdk/pull/18601 Date: 2024-04-03 11:40:44 +0000
03-04-2024