JDK-8317865 : C2 compiler crash with SIGFPE (0x8)
  • Type: Bug
  • Component: hotspot
  • Sub-Component: compiler
  • Affected Version: 8
  • Priority: P4
  • Status: New
  • Resolution: Unresolved
  • OS: linux_ubuntu
  • CPU: x86_64
  • Submitted: 2023-09-25
  • Updated: 2023-10-11
Description
ADDITIONAL SYSTEM INFORMATION :
# JRE version: OpenJDK Runtime Environment (8.0_392) (build 1.8.0_392-internal-fastdebug--b00)
# Java VM: OpenJDK 64-Bit Server VM (25.392-b00-fastdebug mixed mode linux-amd64 compressed oops)

A DESCRIPTION OF THE PROBLEM :
I ran a regression test on JDK8u392 and found that the JVM crashed without any options.

#
# A fatal error has been detected by the Java Runtime Environment:
#
#  SIGFPE (0x8) at pc=0x00007fc494cad1e1, pid=58836, tid=0x00007fc4ab2f0700
#
# JRE version: OpenJDK Runtime Environment (8.0_392) (build 1.8.0_392-internal-fastdebug--b00)
# Java VM: OpenJDK 64-Bit Server VM (25.392-b00-fastdebug mixed mode linux-amd64 compressed oops)
# Problematic frame:
# J 22 C2 compiler.c2.loopopts.TestSplitThruPhiDivMod.testMod()I (118 bytes) @ 0x00007fc494cad1e1 [0x00007fc494cacf60+0x281]
#
# Failed to write core dump. Core dumps have been disabled. To enable core dumping, try "ulimit -c unlimited" before starting Java again
#
# If you would like to submit a bug report, please visit:
#   http://bugreport.java.com/bugreport/crash.jsp
#

STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
java compiler.c2.loopopts.TestSplitThruPhiDivMod

ACTUAL -
implicit exception happened at 0x00007fc494cad1e1
Compiled method (c2)    1130   22       4       compiler.c2.loopopts.TestSplitThruPhiDivMod::testMod (118 bytes)
 total in heap  [0x00007fc494cace10,0x00007fc494cad580] = 1904
 relocation     [0x00007fc494cacf40,0x00007fc494cacf50] = 16
 main code      [0x00007fc494cacf60,0x00007fc494cad320] = 960
 stub code      [0x00007fc494cad320,0x00007fc494cad338] = 24
 oops           [0x00007fc494cad338,0x00007fc494cad340] = 8
 metadata       [0x00007fc494cad340,0x00007fc494cad348] = 8
 scopes data    [0x00007fc494cad348,0x00007fc494cad398] = 80
 scopes pcs     [0x00007fc494cad398,0x00007fc494cad578] = 480
 dependencies   [0x00007fc494cad578,0x00007fc494cad580] = 8
0 iconst_2
1 istore_1
2 iconst_5
3 istore_2
4 iload_2
5 bipush 25
7 if_icmpge 116
  0   bci: 7    BranchData          taken(1582) displacement(264)
                                    not taken(32041)
10 bipush 50
12 istore_3
13 iload_3
14 iconst_1
15 if_icmple 110
  32  bci: 15   BranchData          taken(32016) displacement(208)
                                    not taken(800744)
18 fast_aload_0
19 bipush 20
21 iload_3
22 irem
23 fast_iputfield 2 <compiler/c2/loopopts/TestSplitThruPhiDivMod.x/I> 
26 iload_1
27 iload_2
28 idiv
29 istore_1
30 iconst_3
31 istore #4
33 fast_iload #4
35 iconst_1
36 if_icmple 104
  64  bci: 36   BranchData          taken(800744) displacement(152)
                                    not taken(1601488)
39 iload_2
40 iconst_4
41 irem
42 bipush 22
44 iadd
45 fast_linearswitch 98 1  22:64
  96  bci: 45   MultiBranchData     default_count(72961) displacement(96)
                                    count(24632) displacement(48)
64 iload_3
65 bipush 10
67 irem
68 fast_linearswitch 98 1  83:88
  144 bci: 68   MultiBranchData     default_count(24632) displacement(48)
                                    count(0) displacement(48)
88 aload_0
89 dup
90 getfield 2 <compiler/c2/loopopts/TestSplitThruPhiDivMod.x/I> 
93 iconst_5
94 iadd
95 putfield 2 <compiler/c2/loopopts/TestSplitThruPhiDivMod.x/I> 
98 iinc #4 -1
101 goto 33
  192 bci: 101  JumpData            taken(1601488) displacement(-128)
104 iinc #3 -2
107 goto 13
  216 bci: 107  JumpData            taken(800744) displacement(-184)
110 iinc #2 1
113 goto 4
  240 bci: 113  JumpData            taken(32016) displacement(-240)
116 iload_1
117 ireturn
Could not load hsdis-amd64.so; library not loadable; PrintAssembly is disabled
pc-bytecode offsets:
PcDesc(pc=0x7fc494cacf5f offset=ffffffff bits=0):
PcDesc(pc=0x7fc494cacf8c offset=2c bits=0):
   compiler.c2.loopopts.TestSplitThruPhiDivMod::testMod  @-1
PcDesc(pc=0x7fc494cacfb2 offset=52 bits=0):
   compiler.c2.loopopts.TestSplitThruPhiDivMod::testMod  @23
PcDesc(pc=0x7fc494cad14a offset=1ea bits=0):
   compiler.c2.loopopts.TestSplitThruPhiDivMod::testMod  @28
PcDesc(pc=0x7fc494cad14f offset=1ef bits=0):
   compiler.c2.loopopts.TestSplitThruPhiDivMod::testMod  @110
PcDesc(pc=0x7fc494cad158 offset=1f8 bits=0):
   compiler.c2.loopopts.TestSplitThruPhiDivMod::testMod  @7
PcDesc(pc=0x7fc494cad15f offset=1ff bits=0):
   compiler.c2.loopopts.TestSplitThruPhiDivMod::testMod  @41
PcDesc(pc=0x7fc494cad162 offset=202 bits=0):
   compiler.c2.loopopts.TestSplitThruPhiDivMod::testMod  @10
PcDesc(pc=0x7fc494cad173 offset=213 bits=0):
   compiler.c2.loopopts.TestSplitThruPhiDivMod::testMod  @28
PcDesc(pc=0x7fc494cad18b offset=22b bits=0):
   compiler.c2.loopopts.TestSplitThruPhiDivMod::testMod  @23
PcDesc(pc=0x7fc494cad19e offset=23e bits=0):
   compiler.c2.loopopts.TestSplitThruPhiDivMod::testMod  @95
PcDesc(pc=0x7fc494cad1c5 offset=265 bits=0):
   compiler.c2.loopopts.TestSplitThruPhiDivMod::testMod  @28
PcDesc(pc=0x7fc494cad1cc offset=26c bits=0):
   compiler.c2.loopopts.TestSplitThruPhiDivMod::testMod  @104
PcDesc(pc=0x7fc494cad1e4 offset=284 bits=0):
   compiler.c2.loopopts.TestSplitThruPhiDivMod::testMod  @22
PcDesc(pc=0x7fc494cad1ee offset=28e bits=0):
   compiler.c2.loopopts.TestSplitThruPhiDivMod::testMod  @18
PcDesc(pc=0x7fc494cad1f1 offset=291 bits=0):
   compiler.c2.loopopts.TestSplitThruPhiDivMod::testMod  @23
PcDesc(pc=0x7fc494cad205 offset=2a5 bits=0):
   compiler.c2.loopopts.TestSplitThruPhiDivMod::testMod  @67
PcDesc(pc=0x7fc494cad223 offset=2c3 bits=0):
   compiler.c2.loopopts.TestSplitThruPhiDivMod::testMod  @18
PcDesc(pc=0x7fc494cad245 offset=2e5 bits=0):
   compiler.c2.loopopts.TestSplitThruPhiDivMod::testMod  @22
PcDesc(pc=0x7fc494cad248 offset=2e8 bits=0):
   compiler.c2.loopopts.TestSplitThruPhiDivMod::testMod  @23
PcDesc(pc=0x7fc494cad24f offset=2ef bits=0):
   compiler.c2.loopopts.TestSplitThruPhiDivMod::testMod  @67
PcDesc(pc=0x7fc494cad280 offset=320 bits=0):
   compiler.c2.loopopts.TestSplitThruPhiDivMod::testMod  @18
PcDesc(pc=0x7fc494cad283 offset=323 bits=0):
   compiler.c2.loopopts.TestSplitThruPhiDivMod::testMod  @23
PcDesc(pc=0x7fc494cad294 offset=334 bits=0):
   compiler.c2.loopopts.TestSplitThruPhiDivMod::testMod  @67
PcDesc(pc=0x7fc494cad2b3 offset=353 bits=0):
   compiler.c2.loopopts.TestSplitThruPhiDivMod::testMod  @95
PcDesc(pc=0x7fc494cad2c7 offset=367 bits=0):
   compiler.c2.loopopts.TestSplitThruPhiDivMod::testMod  @28
PcDesc(pc=0x7fc494cad2ce offset=36e bits=0):
   compiler.c2.loopopts.TestSplitThruPhiDivMod::testMod  @104
PcDesc(pc=0x7fc494cad2d8 offset=378 bits=0):
   compiler.c2.loopopts.TestSplitThruPhiDivMod::testMod  @15
PcDesc(pc=0x7fc494cad2f0 offset=390 bits=0):
   compiler.c2.loopopts.TestSplitThruPhiDivMod::testMod  @22
PcDesc(pc=0x7fc494cad339 offset=3d9 bits=0):
#
# A fatal error has been detected by the Java Runtime Environment:
#
#  SIGFPE (0x8) at pc=0x00007fc494cad1e1, pid=58836, tid=0x00007fc4ab2f0700
#
# JRE version: OpenJDK Runtime Environment (8.0_392) (build 1.8.0_392-internal-fastdebug--b00)
# Java VM: OpenJDK 64-Bit Server VM (25.392-b00-fastdebug mixed mode linux-amd64 compressed oops)
# Problematic frame:
# J 22 C2 compiler.c2.loopopts.TestSplitThruPhiDivMod.testMod()I (118 bytes) @ 0x00007fc494cad1e1 [0x00007fc494cacf60+0x281]
#
# Failed to write core dump. Core dumps have been disabled. To enable core dumping, try "ulimit -c unlimited" before starting Java again
#
# An error report file with more information is saved as:
# /home//repository//toreport/TestSplitThruPhiDivMod_09_24_15_11_55/hs_err_pid58836.log
#
# If you would like to submit a bug report, please visit:
#   http://bugreport.java.com/bugreport/crash.jsp
#

---------- BEGIN SOURCE ----------
The source code fild and hs_err file are available at the following URL:
https://drive.google.com/drive/folders/1WJkW89U-YdoaqsKqK6xaYc3N6iS12rw1?usp=drive_link
---------- END SOURCE ----------

FREQUENCY : always