Device identified the stack hint of the 2 threads that have been in impasse. Beneath is the stack hint of these two threads:
“APP_Thread_50_WorkerTask_pool-5-thread-6” #1899 prio=5 os_prio=0 tid=0x00007f894c405555 nid=0x44d1 ready for monitor entry [0x00007f88e9c44000]
java.lang.Thread.State: BLOCKED (on object monitor)
at org.apache.fontbox.ttf.TrueTypeFont.getTable(TrueTypeFont.java:147)
– ready to lock <0x00000002d216fec8> (a org.apache.fontbox.ttf.TrueTypeFont)
at org.apache.fontbox.ttf.TrueTypeFont.getHorizontalMetrics(TrueTypeFont.java:229)
at org.apache.fontbox.ttf.GlyphTable.getGlyphData(GlyphTable.java:210)
at org.apache.fontbox.ttf.GlyphTable.getGlyph(GlyphTable.java:191)
– locked <0x00000002d218ca28> (a org.apache.fontbox.ttf.RAFDataStream)
at org.apache.fontbox.ttf.TrueTypeFont.getPath(TrueTypeFont.java:676)
at org.apache.pdfbox.pdmodel.font.PDType1Font.getPath(PDType1Font.java:638)
at org.apache.pdfbox.rendering.Type1Glyph2D.getPathForCharacterCode(Type1Glyph2D.java:83)
at org.apache.pdfbox.rendering.PageDrawer.drawGlyph2D(PageDrawer.java:495)
at org.apache.pdfbox.rendering.PageDrawer.showFontGlyph(PageDrawer.java:476)
at org.apache.pdfbox.Contentstream.PDFStreamEngine.showGlyph(PDFStreamEngine.java:787)
at org.apache.pdfbox.Contentstream.PDFStreamEngine.showGlyph(PDFStreamEngine.java:805)
at org.apache.pdfbox.Contentstream.PDFStreamEngine.showText(PDFStreamEngine.java:743)
at org.apache.pdfbox.Contentstream.PDFStreamEngine.showTextString(PDFStreamEngine.java:606)
at org.apache.pdfbox.Contentstream.operator.textual content.ShowText.course of(ShowText.java:56)
at org.apache.pdfbox.Contentstream.PDFStreamEngine.processOperator(PDFStreamEngine.java:933)
at org.apache.pdfbox.Contentstream.PDFStreamEngine.processStreamOperators(PDFStreamEngine.java:514)
at org.apache.pdfbox.Contentstream.PDFStreamEngine.processStream(PDFStreamEngine.java:492)
at org.apache.pdfbox.Contentstream.PDFStreamEngine.processPage(PDFStreamEngine.java:155)
at org.apache.pdfbox.rendering.PageDrawer.drawPage(PageDrawer.java:277)
at org.apache.pdfbox.rendering.PDFRenderer.renderImage(PDFRenderer.java:347)
at org.apache.pdfbox.rendering.PDFRenderer.renderImage(PDFRenderer.java:268)
at org.apache.pdfbox.rendering.PDFRenderer.renderImage(PDFRenderer.java:228)
at xxxxxxx.export.service.thumbnail.PDFSlideGeneratorServiceImpl$1.name(PDFSlideGeneratorServiceImpl.java:60)
at xxxxxxx.ops.executor.util.ParallelExecutorTask.doCall(ParallelExecutorTask.java:43)
at xxxxxxx.ops.executor.util.ParallelExecutor.executeTaskFromQueue(ParallelExecutor.java:154)
at xxxxxxx.ops.executor.util.ParallelExecutor.entry$100(ParallelExecutor.java:26)
at xxxxxxx.ops.executor.util.ParallelExecutor$WorkerTask.doCall(ParallelExecutor.java:164)
at xxxxxxx.ops.executor.util.UserContextAwareCallable.name(UserContextAwareCallable.java:89)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Employee.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
“APP_Thread_WorkerTask_APP-pool-5-thread-5” #1898 prio=5 os_prio=0 tid=0x00007f894c898900 nid=0x44d0 ready for monitor entry [0x00007f88e9d45000]
java.lang.Thread.State: BLOCKED (on object monitor)
at org.apache.fontbox.ttf.TrueTypeFont.readTable(TrueTypeFont.java:356)
– ready to lock <0x00000002d218ca28> (a org.apache.fontbox.ttf.RAFDataStream)
at org.apache.fontbox.ttf.TrueTypeFont.getTable(TrueTypeFont.java:150)
– locked <0x00000002d216fec8> (a org.apache.fontbox.ttf.TrueTypeFont)
at org.apache.fontbox.ttf.TrueTypeFont.getCmap(TrueTypeFont.java:262)
at org.apache.fontbox.ttf.TrueTypeFont.getUnicodeCmapImpl(TrueTypeFont.java:556)
at org.apache.fontbox.ttf.TrueTypeFont.getUnicodeCmapLookup(TrueTypeFont.java:541)
at org.apache.fontbox.ttf.TrueTypeFont.nameToGID(TrueTypeFont.java:629)
at org.apache.fontbox.ttf.TrueTypeFont.hasGlyph(TrueTypeFont.java:698)
at org.apache.pdfbox.pdmodel.font.PDType1Font.getNameInFont(PDType1Font.java:601)
at org.apache.pdfbox.pdmodel.font.PDType1Font.hasGlyph(PDType1Font.java:645)
at org.apache.pdfbox.rendering.Type1Glyph2D.getPathForCharacterCode(Type1Glyph2D.java:59)
at org.apache.pdfbox.rendering.PageDrawer.drawGlyph2D(PageDrawer.java:495)
at org.apache.pdfbox.rendering.PageDrawer.showFontGlyph(PageDrawer.java:476)
at org.apache.pdfbox.Contentstream.PDFStreamEngine.showGlyph(PDFStreamEngine.java:787)
at org.apache.pdfbox.Contentstream.PDFStreamEngine.showGlyph(PDFStreamEngine.java:805)
at org.apache.pdfbox.Contentstream.PDFStreamEngine.showText(PDFStreamEngine.java:743)
at org.apache.pdfbox.Contentstream.PDFStreamEngine.showTextString(PDFStreamEngine.java:606)
at org.apache.pdfbox.Contentstream.operator.textual content.ShowText.course of(ShowText.java:56)
at org.apache.pdfbox.Contentstream.PDFStreamEngine.processOperator(PDFStreamEngine.java:933)
at org.apache.pdfbox.Contentstream.PDFStreamEngine.processStreamOperators(PDFStreamEngine.java:514)
at org.apache.pdfbox.Contentstream.PDFStreamEngine.processStream(PDFStreamEngine.java:492)
at org.apache.pdfbox.Contentstream.PDFStreamEngine.processPage(PDFStreamEngine.java:155)
at org.apache.pdfbox.rendering.PageDrawer.drawPage(PageDrawer.java:277)
at org.apache.pdfbox.rendering.PDFRenderer.renderImage(PDFRenderer.java:347)
at org.apache.pdfbox.rendering.PDFRenderer.renderImage(PDFRenderer.java:268)
at org.apache.pdfbox.rendering.PDFRenderer.renderImage(PDFRenderer.java:228)
at xxxxxxx.export.service.thumbnail.PDFSlideGeneratorServiceImpl$1.name(PDFSlideGeneratorServiceImpl.java:60)
at xxxxxxx.ops.executor.util.ParallelExecutorTask.doCall(ParallelExecutorTask.java:43)
at xxxxxxx.ops.executor.util.ParallelExecutor.executeTaskFromQueue(ParallelExecutor.java:154)
at xxxxxxx.ops.executor.util.ParallelExecutor.entry$100(ParallelExecutor.java:26)
at xxxxxxx.ops.executor.util.ParallelExecutor$WorkerTask.doCall(ParallelExecutor.java:164)
at xxxxxxx.ops.executor.util.UserContextAwareCallable.name(UserContextAwareCallable.java:89)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Employee.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
You may see the ‘APP_Thread_50_WorkerTask_pool-5-thread-6’ thread is in Impasse with ‘APP_Thread_50_WorkerTask_pool-5-thread-5’ thread. From the stacktrace you may observe following two issues:
1. ‘APP_Thread_50_WorkerTask_pool-5-thread-6’ has acquired the lock ‘0x00000002d218ca28’ of the ‘org.apache.fontbox.ttf.RAFDataStream’ object and ready to accumulate the lock ‘0x00000002d216fec8’ of the ‘org.apache.fontbox.ttf.TrueTypeFont’ object.
2. Then again, ‘APP_Thread_50_WorkerTask_pool-5-thread-5’ thread is attempting to do the precise reverse, it acquired the lock ‘0x00000002d216fec8’ of ‘org.apache.fontbox.ttf.TrueTypeFont’ object and ready to accumulate the lock ‘0x00000002d218ca28’ of the ‘org.apache.fontbox.ttf.RAFDataStream’ object.
Certainly, it’s a traditional Impasse situation.
Impasse in Apache PDFBox
In case you discover two objects that are inflicting Impasse are ‘org.apache.fontbox.ttf.TrueTypeFont’ and ‘org.apache.fontbox.ttf.RAFDataStream’. Each of those objects are originating from the open supply Apache PDFBox library.
Supply: javacodegeeks.com