Hi Ingo,
Many thanks for reporting this problem. My guess is that the static (and unsynchronized)
createFontKey() method in org.apache.fop.fonts.FontInfo may be causing the problem...
I will commit a fix shortly and then will ask you to update your FOP trunk and
re-test.
Adrian.
Ingo Maas wrote:
Hi,
I’m in serious trouble running 20 threads in parallel for PDF and
Postscript rendering. Each thread uses an own FOUserAgent created by a
singleton FopFactory. I’m using FOP trunk compiled at 2008-06-03.
Below you can see a typical stacktrace. One of the LayoutManager-s tries
to retrieve a Font instance from a FontInfo object. The returned
instance is null and so a NullPointerException will be thrown at the
first access to the Font reference. Usually the first PDF/PS files will
be produced fine but at some point some (not all!) of the remaining
tasks fail.
Any help on this is very appreciated.
Regards, Ingo
Stacktrace: java.lang.NullPointerException
at org.apache.fop.fonts.Font.getAscender(Font.java:105)
at
org.apache.fop.layoutmgr.inline.AlignmentContext.<init>(AlignmentContext.java:127)
at
org.apache.fop.layoutmgr.inline.InlineLayoutManager.getNextKnuthElements(InlineLayoutManager.java:254)
at
org.apache.fop.layoutmgr.inline.LineLayoutManager.collectInlineKnuthElements(LineLayoutManager.java:658)
at
org.apache.fop.layoutmgr.inline.LineLayoutManager.getNextKnuthElements(LineLayoutManager.java:594)
at
org.apache.fop.layoutmgr.BlockStackingLayoutManager.getNextKnuthElements(BlockStackingLayoutManager.java:298)
at
org.apache.fop.layoutmgr.BlockLayoutManager.getNextKnuthElements(BlockLayoutManager.java:118)
at
org.apache.fop.layoutmgr.BlockContainerLayoutManager.getNextKnuthElements(BlockContainerLayoutManager.java:287)
at
org.apache.fop.layoutmgr.table.TableCellLayoutManager.getNextKnuthElements(TableCellLayoutManager.java:150)
at
org.apache.fop.layoutmgr.table.RowGroupLayoutManager.createElementsForRowGroup(RowGroupLayoutManager.java:119)
at
org.apache.fop.layoutmgr.table.RowGroupLayoutManager.getNextKnuthElements(RowGroupLayoutManager.java:61)
at
org.apache.fop.layoutmgr.table.TableContentLayoutManager.getKnuthElementsForRowIterator(TableContentLayoutManager.java:234)
at
org.apache.fop.layoutmgr.table.TableContentLayoutManager.getNextKnuthElements(TableContentLayoutManager.java:173)
at
org.apache.fop.layoutmgr.table.TableLayoutManager.getNextKnuthElements(TableLayoutManager.java:249)
at
org.apache.fop.layoutmgr.BlockStackingLayoutManager.getNextKnuthElements(BlockStackingLayoutManager.java:298)
at
org.apache.fop.layoutmgr.BlockLayoutManager.getNextKnuthElements(BlockLayoutManager.java:118)
at
org.apache.fop.layoutmgr.table.TableCellLayoutManager.getNextKnuthElements(TableCellLayoutManager.java:150)
at
org.apache.fop.layoutmgr.table.RowGroupLayoutManager.createElementsForRowGroup(RowGroupLayoutManager.java:119)
at
org.apache.fop.layoutmgr.table.RowGroupLayoutManager.getNextKnuthElements(RowGroupLayoutManager.java:61)
at
org.apache.fop.layoutmgr.table.TableContentLayoutManager.getKnuthElementsForRowIterator(TableContentLayoutManager.java:220)
at
org.apache.fop.layoutmgr.table.TableContentLayoutManager.getNextKnuthElements(TableContentLayoutManager.java:173)
at
org.apache.fop.layoutmgr.table.TableLayoutManager.getNextKnuthElements(TableLayoutManager.java:249)
at
org.apache.fop.layoutmgr.BlockStackingLayoutManager.getNextKnuthElements(BlockStackingLayoutManager.java:298)
at
org.apache.fop.layoutmgr.BlockLayoutManager.getNextKnuthElements(BlockLayoutManager.java:118)
at
org.apache.fop.layoutmgr.BlockStackingLayoutManager.getNextKnuthElements(BlockStackingLayoutManager.java:298)
at
org.apache.fop.layoutmgr.BlockLayoutManager.getNextKnuthElements(BlockLayoutManager.java:118)
at
org.apache.fop.layoutmgr.FlowLayoutManager.getNextKnuthElements(FlowLayoutManager.java:109)
at
org.apache.fop.layoutmgr.PageBreaker.getNextKnuthElements(PageBreaker.java:142)
at
org.apache.fop.layoutmgr.AbstractBreaker.getNextBlockList(AbstractBreaker.java:552)
at
org.apache.fop.layoutmgr.PageBreaker.getNextBlockList(PageBreaker.java:134)
at
org.apache.fop.layoutmgr.AbstractBreaker.doLayout(AbstractBreaker.java:302)
at
org.apache.fop.layoutmgr.AbstractBreaker.doLayout(AbstractBreaker.java:264)
at
org.apache.fop.layoutmgr.PageSequenceLayoutManager.activateLayout(PageSequenceLayoutManager.java:106)
at
org.apache.fop.area.AreaTreeHandler.endPageSequence(AreaTreeHandler.java:234)
at
org.apache.fop.fo.pagination.PageSequence.endOfNode(PageSequence.java:120)
at
org.apache.fop.fo.FOTreeBuilder$MainFOHandler.endElement(FOTreeBuilder.java:332)
at
org.apache.fop.fo.FOTreeBuilder.endElement(FOTreeBuilder.java:174)
at
net.sf.saxon.event.ContentHandlerProxy.endElement(ContentHandlerProxy.java:372)
at
net.sf.saxon.event.ProxyReceiver.endElement(ProxyReceiver.java:171)
at
net.sf.saxon.event.NamespaceReducer.endElement(NamespaceReducer.java:192)
at
net.sf.saxon.event.ComplexContentOutputter.endElement(ComplexContentOutputter.java:396)
at
net.sf.saxon.instruct.ElementCreator.processLeavingTail(ElementCreator.java:243)
at
net.sf.saxon.instruct.Instruction.process(Instruction.java:91)
at
net.sf.saxon.expr.LetExpression.process(LetExpression.java:268)
at
net.sf.saxon.instruct.ForEach.processLeavingTail(ForEach.java:243)
at
net.sf.saxon.expr.LetExpression.processLeavingTail(LetExpression.java:405)
at net.sf.saxon.instruct.Template.expand(Template.java:112)
at
net.sf.saxon.instruct.CallTemplate.process(CallTemplate.java:212)
at
net.sf.saxon.instruct.CallTemplate.processLeavingTail(CallTemplate.java:237)
at
net.sf.saxon.instruct.Block.processLeavingTail(Block.java:365)
at
net.sf.saxon.instruct.Instruction.process(Instruction.java:91)
at
net.sf.saxon.instruct.ElementCreator.processLeavingTail(ElementCreator.java:240)
at
net.sf.saxon.instruct.Template.applyLeavingTail(Template.java:98)
at
net.sf.saxon.instruct.ApplyTemplates.applyTemplates(ApplyTemplates.java:317)
at
net.sf.saxon.instruct.ApplyTemplates.defaultAction(ApplyTemplates.java:349)
at
net.sf.saxon.instruct.ApplyTemplates.applyTemplates(ApplyTemplates.java:310)
at
net.sf.saxon.Controller.transformDocument(Controller.java:1706)
at net.sf.saxon.Controller.transform(Controller.java:1513)
at
de.dwd.omedes.server.executables.FopExecutor.execute(FopExecutor.java:106)
at
de.dwd.omedes.server.engine.EngineImpl.executeTaskSync(EngineImpl.java:724)
at
de.dwd.omedes.server.executables.FsProduce.execute(FsProduce.java:154)
at
de.dwd.omedes.server.executables.EpmExecute.execute(EpmExecute.java:41)
at de.dwd.omedes.server.engine.ExecTask$1.call(ExecTask.java:44)
at de.dwd.omedes.server.engine.ExecTask$1.call(ExecTask.java:43)
at
java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:269)
at java.util.concurrent.FutureTask.run(FutureTask.java:123)
at
java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:417)
at
java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:269)
at java.util.concurrent.FutureTask.run(FutureTask.java:123)
at
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:650)
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:675)
at java.lang.Thread.run(Thread.java:595)
at
de.dwd.omedes.server.engine.ExecThread.run(ExecThread.java:65)
--
Ernst Basler + Partner GmbH
Ingo Maas
Tuchmacherstraße 47
DE-14482 Potsdam
+49 331 74 75 9 0 (Zentrale)
+49 331 74 75 9 78 (Direkt)
+49 331 74 75 9 90 (Fax)
Geschäftsführer: Dr. Ludger Paus
Amtsgericht Potsdam - HRB 6362 P
USt-Id Nr. 152768391
mailto:[EMAIL PROTECTED]
http://www.ebp.de
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]