poi-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From kiwiwi...@apache.org
Subject svn commit: r1848601 - in /poi: site/src/documentation/content/xdocs/ trunk/ trunk/src/java/org/apache/poi/sl/draw/
Date Mon, 10 Dec 2018 16:18:50 GMT
Author: kiwiwings
Date: Mon Dec 10 16:18:49 2018
New Revision: 1848601

URL: http://svn.apache.org/viewvc?rev=1848601&view=rev
Log:
#62999 - IBM JDK JIT causes AIOOBE in TexturePaintContext

Modified:
    poi/site/src/documentation/content/xdocs/changes.xml
    poi/trunk/build.xml
    poi/trunk/src/java/org/apache/poi/sl/draw/DrawBackground.java
    poi/trunk/src/java/org/apache/poi/sl/draw/DrawPaint.java
    poi/trunk/src/java/org/apache/poi/sl/draw/DrawSimpleShape.java
    poi/trunk/src/java/org/apache/poi/sl/draw/DrawTableShape.java

Modified: poi/site/src/documentation/content/xdocs/changes.xml
URL: http://svn.apache.org/viewvc/poi/site/src/documentation/content/xdocs/changes.xml?rev=1848601&r1=1848600&r2=1848601&view=diff
==============================================================================
--- poi/site/src/documentation/content/xdocs/changes.xml (original)
+++ poi/site/src/documentation/content/xdocs/changes.xml Mon Dec 10 16:18:49 2018
@@ -87,6 +87,7 @@
 
     <release version="4.0.2" date="2019-02-??">
       <actions>
+        <action dev="PD" type="fix" fixes-bug="62999" context="SL_Common">IBM JDK JIT
causes AIOOBE in TexturePaintContext"/>
         <action dev="PD" type="fix" fixes-bug="62994" context="POI_Overall">IBM JCE
workarounds</action>
         <action dev="PD" type="fix" fixes-bug="62966" context="SL_Common">init presetShapeDefinitions.xml
fail under IBM jdk</action>
         <action dev="PD" type="fix" fixes-bug="62953" context="SL_Common XSLF HSLF">Rendering
of FreeformShapes with formula fails</action>

Modified: poi/trunk/build.xml
URL: http://svn.apache.org/viewvc/poi/trunk/build.xml?rev=1848601&r1=1848600&r2=1848601&view=diff
==============================================================================
--- poi/trunk/build.xml (original)
+++ poi/trunk/build.xml Mon Dec 10 16:18:49 2018
@@ -60,6 +60,10 @@ under the License.
     <property name="jdk.version.class" value="1.8" description="JDK version of generated
class files"/>
     <property name="compile.debug" value="true"/>
 
+    <condition property="isIBMVM">
+        <contains string="${java.vendor}" substring="IBM" casesensitive="false"/>
+    </condition>
+
     <!--
         Logging is suppressed by default.
         To redirect log output to console, run ant with -Dorg.apache.poi.util.POILogger=org.apache.poi.util.SystemOutLogger
@@ -1239,6 +1243,7 @@ under the License.
             <jvmarg value="${java9addopens6}" />
             <!-- jvmarg value="-Duser.timezone=UTC"/ -->
             <jvmarg value="${file.leak.detector}" />
+            <jvmarg value="-Xjit:exclude={sun/java2d/pipe/AlphaPaintPipe.renderPathTile(Ljava/lang/Object;[BIIIIII)V}"
if:true="${isIBMVM}"/>
             <formatter type="plain"/>
             <formatter type="xml"/>
             <batchtest todir="${ooxml.reports.test}">
@@ -1306,6 +1311,7 @@ under the License.
                 <pathelement location="${main.ant.jar}"/>
                 <pathelement location="${scratchpad.output.dir}"/>
             </classpath>
+            <exclude name="**/HeapDump**" if:true="${isIBMVM}"/>
         </javac>
         <!--copy todir="${integration.output.dir}">
             <fileset dir="${integration.resource1.dir}"/>
@@ -1455,6 +1461,7 @@ under the License.
                 <jvmarg value="${java9addopens5}" />
                 <jvmarg value="${java9addopens6}" />
                 <jvmarg value="${file.leak.detector}" />
+                <jvmarg value="-Xjit:exclude={sun/java2d/pipe/AlphaPaintPipe.renderPathTile(Ljava/lang/Object;[BIIIIII)V}"
if:true="${isIBMVM}"/>
                 <formatter type="plain"/>
                 <formatter type="xml"/>
                 <batchtest todir="${main.reports.test}">
@@ -1527,6 +1534,7 @@ under the License.
                 <jvmarg value="${java9addopens4}" />
                 <jvmarg value="${java9addopens5}" />
                 <jvmarg value="${java9addopens6}" />
+                <jvmarg value="-Xjit:exclude={sun/java2d/pipe/AlphaPaintPipe.renderPathTile(Ljava/lang/Object;[BIIIIII)V}"
if:true="${isIBMVM}"/>
                 <formatter type="plain"/>
                 <formatter type="xml"/>
                 <batchtest todir="${scratchpad.reports.test}">
@@ -1581,6 +1589,7 @@ under the License.
                   <jvmarg value="${java9addopens6}" />
                   <!-- jvmarg value="-Duser.timezone=UTC"/ -->
                   <jvmarg value="${file.leak.detector}" />
+                  <jvmarg value="-Xjit:exclude={sun/java2d/pipe/AlphaPaintPipe.renderPathTile(Ljava/lang/Object;[BIIIIII)V}"
if:true="${isIBMVM}"/>
                   <formatter type="plain"/>
                   <formatter type="xml"/>
                   <batchtest todir="${ooxml.reports.test}">
@@ -1616,6 +1625,7 @@ under the License.
                   <jvmarg value="${java9addopens4}" />
                   <jvmarg value="${java9addopens5}" />
                   <jvmarg value="${java9addopens6}" />
+                  <jvmarg value="-Xjit:exclude={sun/java2d/pipe/AlphaPaintPipe.renderPathTile(Ljava/lang/Object;[BIIIIII)V}"
if:true="${isIBMVM}"/>
                   <formatter type="plain"/>
                   <formatter type="xml"/>
                   <batchtest todir="${ooxml.reports.test}">
@@ -1667,6 +1677,7 @@ under the License.
                 <jvmarg value="${java9addopens4}" />
                 <jvmarg value="${java9addopens5}" />
                 <jvmarg value="${java9addopens6}" />
+                <jvmarg value="-Xjit:exclude={sun/java2d/pipe/AlphaPaintPipe.renderPathTile(Ljava/lang/Object;[BIIIIII)V}"
if:true="${isIBMVM}"/>
                 <formatter type="plain"/>
                 <formatter type="xml"/>
                 <batchtest todir="${integration.reports.test}">
@@ -1755,6 +1766,7 @@ under the License.
                 <jvmarg value="${java9addopens5}" />
                 <jvmarg value="${java9addopens6}" />
                 <jvmarg value="${file.leak.detector}" />
+                <jvmarg value="-Xjit:exclude={sun/java2d/pipe/AlphaPaintPipe.renderPathTile(Ljava/lang/Object;[BIIIIII)V}"
if:true="${isIBMVM}"/>
                 <formatter type="plain"/>
                 <formatter type="xml"/>
                 <batchtest todir="${excelant.reports.test}">
@@ -2885,4 +2897,8 @@ under the License.
     <target name="test-env" description="tests if ant is available on the jenkins slave">
       <echo>Using Ant: ${ant.version} from ${ant.home}</echo>    
     </target>
+
+    <target name="foo">
+        <echo>${isIBMVM}</echo>
+    </target>
 </project>

Modified: poi/trunk/src/java/org/apache/poi/sl/draw/DrawBackground.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/sl/draw/DrawBackground.java?rev=1848601&r1=1848600&r2=1848601&view=diff
==============================================================================
--- poi/trunk/src/java/org/apache/poi/sl/draw/DrawBackground.java (original)
+++ poi/trunk/src/java/org/apache/poi/sl/draw/DrawBackground.java Mon Dec 10 16:18:49 2018
@@ -17,6 +17,8 @@
 
 package org.apache.poi.sl.draw;
 
+import static org.apache.poi.sl.draw.DrawPaint.fillPaintWorkaround;
+
 import java.awt.Dimension;
 import java.awt.Graphics2D;
 import java.awt.Paint;
@@ -59,10 +61,10 @@ public class DrawBackground extends Draw
         if(fill != null) {
             graphics.setRenderingHint(Drawable.GRADIENT_SHAPE, anchor);
             graphics.setPaint(fill);
-            graphics.fill(anchor2);
+            fillPaintWorkaround(graphics, anchor2);
         }
     }
-    
+
     protected Background<?,?> getShape() {
         return (Background<?,?>)shape;
     }

Modified: poi/trunk/src/java/org/apache/poi/sl/draw/DrawPaint.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/sl/draw/DrawPaint.java?rev=1848601&r1=1848600&r2=1848601&view=diff
==============================================================================
--- poi/trunk/src/java/org/apache/poi/sl/draw/DrawPaint.java (original)
+++ poi/trunk/src/java/org/apache/poi/sl/draw/DrawPaint.java Mon Dec 10 16:18:49 2018
@@ -23,6 +23,7 @@ import java.awt.Graphics2D;
 import java.awt.LinearGradientPaint;
 import java.awt.Paint;
 import java.awt.RadialGradientPaint;
+import java.awt.Shape;
 import java.awt.geom.AffineTransform;
 import java.awt.geom.Point2D;
 import java.awt.geom.Rectangle2D;
@@ -605,4 +606,19 @@ public class DrawPaint {
             return (float)(1.055d * Math.pow(linRGB / 100000d, 1.0d/2.4d) - 0.055d);
         }
     }
+
+
+    static void fillPaintWorkaround(Graphics2D graphics, Shape shape) {
+        // the ibm jdk has a rendering/JIT bug, which throws an AIOOBE in
+        // TexturePaintContext$Int.setRaster(TexturePaintContext.java:476)
+        // this usually doesn't happen while debugging, because JIT doesn't jump in then.
+        try {
+            graphics.fill(shape);
+        } catch (ArrayIndexOutOfBoundsException e) {
+            LOG.log(POILogger.WARN, "IBM JDK failed with TexturePaintContext AIOOBE - try
adding the following to the VM parameter:\n" +
+                "-Xjit:exclude={sun/java2d/pipe/AlphaPaintPipe.renderPathTile(Ljava/lang/Object;[BIIIIII)V}
and " +
+                "search for 'JIT Problem Determination for IBM SDK using -Xjit' (http://www-01.ibm.com/support/docview.wss?uid=swg21294023)
" +
+                "for how to add/determine further excludes", e);
+        }
+    }
 }

Modified: poi/trunk/src/java/org/apache/poi/sl/draw/DrawSimpleShape.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/sl/draw/DrawSimpleShape.java?rev=1848601&r1=1848600&r2=1848601&view=diff
==============================================================================
--- poi/trunk/src/java/org/apache/poi/sl/draw/DrawSimpleShape.java (original)
+++ poi/trunk/src/java/org/apache/poi/sl/draw/DrawSimpleShape.java Mon Dec 10 16:18:49 2018
@@ -17,6 +17,8 @@
 
 package org.apache.poi.sl.draw;
 
+import static org.apache.poi.sl.draw.DrawPaint.fillPaintWorkaround;
+
 import java.awt.BasicStroke;
 import java.awt.Color;
 import java.awt.Graphics2D;
@@ -87,7 +89,7 @@ public class DrawSimpleShape extends Dra
                         graphics.setPaint(fillMod);
                         java.awt.Shape s = o.getOutline();
                         graphics.setRenderingHint(Drawable.GRADIENT_SHAPE, s);
-                        graphics.fill(s);
+                        fillPaintWorkaround(graphics, s);
                     }
                 }
             }
@@ -327,7 +329,7 @@ public class DrawSimpleShape extends Dra
               graphics.setPaint(shadowColor);
 
               if(fill != null && p.isFilled()){
-                  graphics.fill(s);
+                  fillPaintWorkaround(graphics, s);
               } else if (line != null && p.isStroked()) {
                   graphics.draw(s);
               }

Modified: poi/trunk/src/java/org/apache/poi/sl/draw/DrawTableShape.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/sl/draw/DrawTableShape.java?rev=1848601&r1=1848600&r2=1848601&view=diff
==============================================================================
--- poi/trunk/src/java/org/apache/poi/sl/draw/DrawTableShape.java (original)
+++ poi/trunk/src/java/org/apache/poi/sl/draw/DrawTableShape.java Mon Dec 10 16:18:49 2018
@@ -17,6 +17,8 @@
 
 package org.apache.poi.sl.draw;
 
+import static org.apache.poi.sl.draw.DrawPaint.fillPaintWorkaround;
+
 import java.awt.Color;
 import java.awt.Graphics2D;
 import java.awt.Paint;
@@ -83,8 +85,8 @@ public class DrawTableShape extends Draw
                 Paint fillPaint = drawPaint.getPaint(graphics, tc.getFillStyle().getPaint());
                 graphics.setPaint(fillPaint);
                 Rectangle2D cellAnc = tc.getAnchor();
-                graphics.fill(cellAnc);
-                
+                fillPaintWorkaround(graphics, cellAnc);
+
                 for (BorderEdge edge : BorderEdge.values()) {
                     StrokeStyle stroke = tc.getBorderStyle(edge);
                     if (stroke == null) {



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@poi.apache.org
For additional commands, e-mail: commits-help@poi.apache.org


Mime
View raw message