https://bz.apache.org/bugzilla/show_bug.cgi?id=65314
Bug ID: 65314
Summary: draw method hangs on Hemf dashed stroke graphics
Product: POI
Version: 4.1.2-FINAL
Hardware: PC
OS: All
Status: NEW
Severity: blocker
Priority: P2
Component: XSLF
Assignee: [email protected]
Reporter: [email protected]
Target Milestone: ---
This is similar to issue 64806, but involves:
1. An WEMF embedded in an Excel worksheet embedded in a PPTX file.
2. Either the Pisces or Marlin 2D renderer.
3. A dashed line that never completes rendering.
I don't have permission from the file owner to attach the original document. I
tried to isolate the problem by pasting the embedded metafile into its own
document, but doing so causes the renderer to work correctly. In fact, any
innocuous change I make, such as opening the PPTX, double clicking the embedded
spreadsheet, using the Update command to update the spreadsheet in the PPTX but
making no other changes to it and then saving the updated PPTX, fixes the
problem.
Here's a stack trace, should it be helpful for narrowing down an investigation.
Each time I query the process with jstack, the top frame on the thread's stack
is the sun.java2d.pipe.ShapeSpanIterator.lineTo method.
java.lang.Thread.State: RUNNABLE
at sun.java2d.pipe.ShapeSpanIterator.lineTo(Native Method)
at
sun.java2d.marlin.TransformingPathConsumer2D$DeltaScaleFilter.lineTo(TransformingPathConsumer2D.java:355)
at sun.java2d.marlin.Stroker$PolyStack.popAll(Stroker.java:1349)
at sun.java2d.marlin.Stroker.emitReverse(Stroker.java:484)
at sun.java2d.marlin.Stroker.finish(Stroker.java:511)
at sun.java2d.marlin.Stroker.moveTo(Stroker.java:416)
at sun.java2d.marlin.Dasher.goTo(Dasher.java:235)
at sun.java2d.marlin.Dasher.lineTo(Dasher.java:301)
at
sun.java2d.marlin.TransformingPathConsumer2D$DeltaScaleFilter.lineTo(TransformingPathConsumer2D.java:355)
at
sun.java2d.marlin.MarlinRenderingEngine.pathToLoop(MarlinRenderingEngine.java:651)
at
sun.java2d.marlin.MarlinRenderingEngine.pathTo(MarlinRenderingEngine.java:636)
at
sun.java2d.marlin.MarlinRenderingEngine.strokeTo(MarlinRenderingEngine.java:420)
at
sun.java2d.marlin.MarlinRenderingEngine.strokeTo(MarlinRenderingEngine.java:189)
at
sun.java2d.marlin.MarlinRenderingEngine.strokeTo(MarlinRenderingEngine.java:163)
at sun.java2d.pipe.LoopPipe.getStrokeSpans(LoopPipe.java:278)
at sun.java2d.pipe.LoopPipe.draw(LoopPipe.java:201)
at
sun.java2d.pipe.PixelToParallelogramConverter.draw(PixelToParallelogramConverter.java:148)
at sun.java2d.pipe.ValidatePipe.draw(ValidatePipe.java:154)
at sun.java2d.SunGraphics2D.draw(SunGraphics2D.java:2497)
at org.apache.poi.hwmf.draw.HwmfGraphics.draw(HwmfGraphics.java:170)
at
org.apache.poi.hemf.record.emfplus.HemfPlusDraw$EmfPlusDrawPath.draw(HemfPlusDraw.java:220)
at org.apache.poi.hemf.draw.HemfGraphics.draw(HemfGraphics.java:123)
at
org.apache.poi.hemf.record.emf.HemfComment$EmfCommentDataPlus$$Lambda$443/1995987237.accept(Unknown
Source)
at java.util.ArrayList.forEach(ArrayList.java:1259)
at
org.apache.poi.hemf.record.emf.HemfComment$EmfCommentDataPlus.draw(HemfComment.java:307)
at
org.apache.poi.hemf.record.emf.HemfComment$EmfComment.draw(HemfComment.java:128)
at org.apache.poi.hemf.draw.HemfGraphics.draw(HemfGraphics.java:116)
at org.apache.poi.hemf.usermodel.HemfPicture.draw(HemfPicture.java:179)
at
org.apache.poi.hemf.draw.HemfImageRenderer.drawImage(HemfImageRenderer.java:117)
at
org.apache.poi.sl.draw.DrawPictureShape.drawContent(DrawPictureShape.java:64)
at
org.apache.poi.sl.draw.DrawSimpleShape.draw(DrawSimpleShape.java:107)
at
org.apache.poi.sl.draw.DrawGraphicalFrame.draw(DrawGraphicalFrame.java:38)
at org.apache.poi.sl.draw.DrawSheet.draw(DrawSheet.java:71)
at org.apache.poi.sl.draw.DrawSlide.draw(DrawSlide.java:41)
at org.apache.poi.xslf.usermodel.XSLFSlide.draw(XSLFSlide.java:373)
This is happening on Windows x64 with OpenJDK 8 build 282 and on Debian Linux
x64 with OpenJDK 8 build 292. It is also reproducible on OpenJDK 16 (latest) on
MacOS, also with the Marlin rendering engine.
--
You are receiving this mail because:
You are the assignee for the bug.
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]