You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@pdfbox.apache.org by "Tilman Hausherr (Jira)" <ji...@apache.org> on 2022/07/06 17:19:00 UTC

[jira] [Resolved] (PDFBOX-5460) Deadlock in TrueTypeFont and RAFDataStream

     [ https://issues.apache.org/jira/browse/PDFBOX-5460?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Tilman Hausherr resolved PDFBOX-5460.
-------------------------------------
    Resolution: Fixed

Thank you [~lehmi] !

> Deadlock in TrueTypeFont and RAFDataStream
> ------------------------------------------
>
>                 Key: PDFBOX-5460
>                 URL: https://issues.apache.org/jira/browse/PDFBOX-5460
>             Project: PDFBox
>          Issue Type: Bug
>          Components: FontBox
>    Affects Versions: 2.0.26
>            Reporter: Ram Lakshmanan
>            Priority: Major
>              Labels: deadlock
>             Fix For: 2.0.27, 3.0.0 PDFBox
>
>
> Deadlock is happening between *org.apache.fontbox.ttf.RAFDataStream* and *org.apache.fontbox.ttf.TrueTypeFont* objects. Below is the stack trace of the two threads which are in deadlock. If you want to see the complete thread dump you can [refer it here|https://fastthread.io/my-thread-report.jsp?p=c2hhcmVkLzIwMjIvMDYvMTUvLS1wZGYtYm94LWRlYWRsb2NrLnppcC0tMjItMjQtNTc=&s=t].
>  
> {code:java}
> APP_Thread_50408_759_100162222_WorkerTask_1652842343227_P_Th_SPR-APP-pool-5-thread-6
> PRIORITY : 5
> THREAD ID : 0X00007F894C406000
> NATIVE ID : 0X44D1
> NATIVE ID (DECIMAL) : 17617
> STATE : BLOCKED
> stackTrace:
> java.lang.Thread.State: BLOCKED (on object monitor)
> at org.apache.fontbox.ttf.TrueTypeFont.getTable(TrueTypeFont.java:147)
> - waiting 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.text.ShowText.process(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.call(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.access$100(ParallelExecutor.java:26)
> at xxxxxxx.ops.executor.util.ParallelExecutor$WorkerTask.doCall(ParallelExecutor.java:164)
> at xxxxxxx.ops.executor.util.UserContextAwareCallable.call(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$Worker.run(ThreadPoolExecutor.java:624)
> at java.lang.Thread.run(Thread.java:748)
> APP_Thread_50408_759_100162222_WorkerTask_1652842343227_P_Th_SPR-APP-pool-5-thread-5
> PRIORITY : 5
> THREAD ID : 0X00007F894C404800
> NATIVE ID : 0X44D0
> NATIVE ID (DECIMAL) : 17616
> STATE : BLOCKED
> stackTrace:
> java.lang.Thread.State: BLOCKED (on object monitor)
> at org.apache.fontbox.ttf.TrueTypeFont.readTable(TrueTypeFont.java:356)
> - waiting 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.text.ShowText.process(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.call(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.access$100(ParallelExecutor.java:26)
> at xxxxxxx.ops.executor.util.ParallelExecutor$WorkerTask.doCall(ParallelExecutor.java:164)
> at xxxxxxx.ops.executor.util.UserContextAwareCallable.call(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$Worker.run(ThreadPoolExecutor.java:624)
> at java.lang.Thread.run(Thread.java:748) {code}
>  
>  



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@pdfbox.apache.org
For additional commands, e-mail: dev-help@pdfbox.apache.org