Bug 1710 - Crash SIGSEGV in C2 Compilerthread when compiling one specific method

Andrew Haley aph at redhat.com
Fri May 23 11:18:32 UTC 2014


I've been thinking about what to do about this bug fix.  It has only
ever AFAIK been seen in one method.  So, I was tempted not to back-
port it to OpenJDK6.

However, I've looked at it in detail, and there is nothing special
about this method.  It is a long-running method with nested loops, and
it is compiled as an OSR method, with an entry point inside the
outermost loop.  Apart from that there is nothing special about it,
and it seems to me that this bug could trigger with all sorts of code.
I don't really know why it does not.  It may be that there is some
other factor which I can't see.

So, it now seems to me that the risk of not applying this patch to
OpenJDK 6 is greater than the risk of applying it, and that the patch
should be applied to all live versions of OpenJDK.

Andrew.


net/sf/jasperreports/engine/export/JRGridLayout.horizontallyMergeEmptyCells(IIII)V
  interpreter_invocation_count:        1
  invocation_counter:              10000
  backedge_counter:                 5020

0 iload_1
1 istore #5
3 fast_iload #5
5 iload_3
6 if_icmpge 174
  0   bci: 6    BranchData          taken(1) displacement(616)
                                    not taken(751)
9 iconst_m1
10 istore #6
12 iconst_0
13 istore #7
15 iload_2
16 istore #8
18 fast_iload2 #8
20 fast_iload #4
22 if_icmpge 124
  32  bci: 22   BranchData          taken(752) displacement(400)
                                    not taken(22547)
25 fast_aaccess_0
26 fast_agetfield 53 <net/sf/jasperreports/engine/export/JRGridLayout.grid/[[Lnet/sf/jasperreports/engine/export/JRExporterGridCell;>
29 fast_iload #5
31 aaload
32 fast_iload #8
34 aaload
35 astore #9
37 aload #9
39 invokevirtual 100 <net/sf/jasperreports/engine/export/JRExporterGridCell.isEmpty()Z>
  64  bci: 39   VirtualCallData     count(8245) entries(2)
                                    'net/sf/jasperreports/engine/export/EmptyGridCell'(12423 0.55)
                                    'net/sf/jasperreports/engine/export/ElementGridCell'(1879 0.08)
42 ifeq 68
  112 bci: 42   BranchData          taken(10124) displacement(136)
                                    not taken(12423)
45 fast_iload #6
47 iconst_m1
48 if_icmpne 55
  144 bci: 48   BranchData          taken(11292) displacement(32)
                                    not taken(1131)
51 fast_iload #8
53 istore #6
55 fast_iload #7
57 aload #9
59 invokevirtual 101 <net/sf/jasperreports/engine/export/JRExporterGridCell.getWidth()I>
  176 bci: 59   VirtualCallData     count(0) entries(1)
                                    'net/sf/jasperreports/engine/export/EmptyGridCell'(12423 1.00)
62 iadd
63 istore #7
65 goto 118
  224 bci: 65   JumpData            taken(12423) displacement(184)
68 fast_iload #6
70 iconst_m1
71 if_icmpeq 112
  248 bci: 71   BranchData          taken(9744) displacement(160)
                                    not taken(380)
74 fast_iload2 #8
76 fast_iload #6
78 isub
79 iconst_1
80 if_icmple 112
  280 bci: 80   BranchData          taken(377) displacement(128)
                                    not taken(3)
83 fast_aaccess_0
84 fast_agetfield 53 <net/sf/jasperreports/engine/export/JRGridLayout.grid/[[Lnet/sf/jasperreports/engine/export/JRExporterGridCell;>
87 fast_iload #5
89 aaload
90 fast_iload #6
92 aaload
93 astore #10
95 aload #10
97 fast_iload2 #8
99 fast_iload #6
101 isub
102 invokevirtual 102 <net/sf/jasperreports/engine/export/JRExporterGridCell.setColSpan(I)V>
  312 bci: 102  VirtualCallData     count(0) entries(1)
                                    'net/sf/jasperreports/engine/export/EmptyGridCell'(3 1.00)
105 aload #10
107 fast_iload #7
109 invokevirtual 103 <net/sf/jasperreports/engine/export/JRExporterGridCell.setWidth(I)V>
  360 bci: 109  VirtualCallData     count(0) entries(1)
                                    'net/sf/jasperreports/engine/export/EmptyGridCell'(3 1.00)
112 iconst_m1
113 istore #6
115 iconst_0
116 istore #7
118 iinc #8 1
121 goto 18
  408 bci: 121  JumpData            taken(22547) displacement(-376)
124 fast_iload #6
126 iconst_m1
127 if_icmpeq 168
  432 bci: 127  BranchData          taken(0) displacement(160)
                                    not taken(752)
130 fast_iload2 #8
132 fast_iload #6
134 isub
135 iconst_1
136 if_icmple 168
  464 bci: 136  BranchData          taken(0) displacement(128)
                                    not taken(752)
139 fast_aaccess_0
140 fast_agetfield 53 <net/sf/jasperreports/engine/export/JRGridLayout.grid/[[Lnet/sf/jasperreports/engine/export/JRExporterGridCell;>
143 fast_iload #5
145 aaload
146 fast_iload #6
148 aaload
149 astore #9
151 aload #9
153 fast_iload2 #8
155 fast_iload #6
157 isub
158 invokevirtual 102 <net/sf/jasperreports/engine/export/JRExporterGridCell.setColSpan(I)V>
  496 bci: 158  VirtualCallData     count(0) entries(1)
                                    'net/sf/jasperreports/engine/export/EmptyGridCell'(752 1.00)
161 aload #9
163 fast_iload #7
165 invokevirtual 103 <net/sf/jasperreports/engine/export/JRExporterGridCell.setWidth(I)V>
  544 bci: 165  VirtualCallData     count(0) entries(1)
                                    'net/sf/jasperreports/engine/export/EmptyGridCell'(752 1.00)
168 iinc #5 1
171 goto 3
  592 bci: 171  JumpData            taken(752) displacement(-592)
174 return
------------------------------------------------------------------------
   6664  172             net.sf.jasperreports.engine.base.JRBaseStyle::getStyle (5 bytes)


More information about the distro-pkg-dev mailing list