Thursday, May 2, 2024
HomeJavaTroubleshooting impasse in an Apache opensource library

Troubleshooting impasse in an Apache opensource library


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.

As soon as seeing this bug, we searched within the Apache PDFBox bug database to see whether or not this downside was already reported or not. We couldn’t see this downside reported earlier. Thus, we went forward and filed a brand new ticket within the Apache bug database with the main points. Right here is the ticket that we filed, on your reference. The Apache PDFBox growth staff was extremely responsive. They began appearing on it instantly and issued a repair inside 2 – 3 days. Nice job from the PDFBox staff. Actually loved the open supply group collaboration.

Supply: javacodegeeks.com

RELATED ARTICLES

LEAVE A REPLY

Please enter your comment!
Please enter your name here

Most Popular

Recent Comments