Bug 45862 - StackOverflow problem when using FOP in multi threaded environment
Summary: StackOverflow problem when using FOP in multi threaded environment
Status: CLOSED FIXED
Alias: None
Product: Fop - Now in Jira
Classification: Unclassified
Component: fo tree (show other bugs)
Version: 0.95
Hardware: PC Linux
: P2 blocker
Target Milestone: ---
Assignee: fop-dev
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2008-09-23 03:15 UTC by Lucio Asnaghi
Modified: 2012-04-01 06:41 UTC (History)
0 users



Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Lucio Asnaghi 2008-09-23 03:15:38 UTC
while executing a simple pdf generation from a servlet context, there is a problem of Stack oveflow, but if i do call the same transformation commands (the same as FOP site examples, but using saxon fo having xslt2 features) a standalone application it doesn't crash:


Starting Helma in directory /home/kraken/REPOSITORY
Starting HTTP server on port 8090
Starting AJP13 listener on port 8009
Adding to classpath: /home/kraken/REPOSITORY/lib/ext/saxon9sa.jar
Adding to classpath: /home/kraken/REPOSITORY/lib/ext/xmlgraphics-commons.jar
Adding to classpath: /home/kraken/REPOSITORY/lib/ext/fop.jar
Adding to classpath: /home/kraken/REPOSITORY/lib/ext/avalon-framework.jar
Starting Helma 1.6.2 (September 23 2008) on Java 1.5.0_13
[2008/09/23 11:12:28] [INFO] Starting Helma 1.6.2 (September 23 2008) on Java 1.5.0_13
[2008/09/23 11:12:28] [INFO] Setting Helma Home to /home/kororaa/REPOSITORY
[2008/09/23 11:12:28] [INFO] Starting AJP13-Listener on port 0.0.0.0:8009
[2008/09/23 11:12:28] [INFO] Version Jetty/5.1.14
...
[2008/09/23 12:03:11] [DEBUG] Dynamically adding maker for Renderer: org.apache.fop.render.pdf.PDFRendererMaker
[2008/09/23 12:03:11] [DEBUG] Dynamically adding maker for Renderer: org.apache.fop.render.ps.PSRendererMaker
[2008/09/23 12:03:11] [DEBUG] Dynamically adding maker for Renderer: org.apache.fop.render.txt.TXTRendererMaker
[2008/09/23 12:03:11] [DEBUG] Dynamically adding maker for Renderer: org.apache.fop.render.bitmap.PNGRendererMaker
[2008/09/23 12:03:11] [DEBUG] Dynamically adding maker for Renderer: org.apache.fop.render.bitmap.TIFFRendererMaker
[2008/09/23 12:03:11] [DEBUG] Dynamically adding maker for Renderer: org.apache.fop.render.xml.XMLRendererMaker
[2008/09/23 12:03:11] [DEBUG] Dynamically adding maker for Renderer: org.apache.fop.render.awt.AWTRendererMaker
[2008/09/23 12:03:11] [DEBUG] Dynamically adding maker for Renderer: org.apache.fop.render.print.PrintRendererMaker
[2008/09/23 12:03:11] [DEBUG] Dynamically adding maker for Renderer: org.apache.fop.render.afp.AFPRendererMaker
[2008/09/23 12:03:11] [DEBUG] Dynamically adding maker for Renderer: org.apache.fop.render.pcl.PCLRendererMaker
[2008/09/23 12:03:11] [DEBUG] Dynamically adding maker for FOEventHandler: org.apache.fop.render.rtf.RTFFOEventHandlerMaker
[2008/09/23 12:03:11] [DEBUG] target-resolution set to: 72.0dpi (px2mm=0.35277778)
[2008/09/23 12:03:11] [DEBUG] Dynamically adding PDFImageHandler: org.apache.fop.render.pdf.PDFImageHandlerRawJPEG
[2008/09/23 12:03:11] [DEBUG] Dynamically adding PDFImageHandler: org.apache.fop.render.pdf.PDFImageHandlerRawCCITTFax
[2008/09/23 12:03:11] [DEBUG] Dynamically adding PDFImageHandler: org.apache.fop.render.pdf.PDFImageHandlerGraphics2D
[2008/09/23 12:03:11] [DEBUG] Dynamically adding PDFImageHandler: org.apache.fop.render.pdf.PDFImageHandlerRenderedImage
[2008/09/23 12:03:11] [DEBUG] Dynamically adding PDFImageHandler: org.apache.fop.render.pdf.PDFImageHandlerXML
[2008/09/23 12:03:11] [DEBUG] userconfig is null
[2008/09/23 12:03:11] [DEBUG] Registering: any,normal,400 under F5
[2008/09/23 12:03:11] [DEBUG] Registering: any,italic,400 under F6
[2008/09/23 12:03:11] [DEBUG] Registering: any,oblique,400 under F6
[2008/09/23 12:03:11] [DEBUG] Registering: any,normal,700 under F7
[2008/09/23 12:03:11] [DEBUG] Registering: any,italic,700 under F8
[2008/09/23 12:03:11] [DEBUG] Registering: any,oblique,700 under F8
[2008/09/23 12:03:11] [DEBUG] Registering: sans-serif,normal,400 under F1
[2008/09/23 12:03:11] [DEBUG] Registering: sans-serif,oblique,400 under F2
[2008/09/23 12:03:11] [DEBUG] Registering: sans-serif,italic,400 under F2
[2008/09/23 12:03:11] [DEBUG] Registering: sans-serif,normal,700 under F3
[2008/09/23 12:03:11] [DEBUG] Registering: sans-serif,oblique,700 under F4
[2008/09/23 12:03:11] [DEBUG] Registering: sans-serif,italic,700 under F4
[2008/09/23 12:03:11] [DEBUG] Registering: SansSerif,normal,400 under F1
[2008/09/23 12:03:11] [DEBUG] Registering: SansSerif,oblique,400 under F2
[2008/09/23 12:03:11] [DEBUG] Registering: SansSerif,italic,400 under F2
[2008/09/23 12:03:11] [DEBUG] Registering: SansSerif,normal,700 under F3
[2008/09/23 12:03:11] [DEBUG] Registering: SansSerif,oblique,700 under F4
[2008/09/23 12:03:11] [DEBUG] Registering: SansSerif,italic,700 under F4
[2008/09/23 12:03:11] [DEBUG] Registering: serif,normal,400 under F5
[2008/09/23 12:03:11] [DEBUG] Registering: serif,oblique,400 under F6
[2008/09/23 12:03:11] [DEBUG] Registering: serif,italic,400 under F6
[2008/09/23 12:03:11] [DEBUG] Registering: serif,normal,700 under F7
[2008/09/23 12:03:11] [DEBUG] Registering: serif,oblique,700 under F8
[2008/09/23 12:03:11] [DEBUG] Registering: serif,italic,700 under F8
[2008/09/23 12:03:11] [DEBUG] Registering: monospace,normal,400 under F9
[2008/09/23 12:03:11] [DEBUG] Registering: monospace,oblique,400 under F10
[2008/09/23 12:03:11] [DEBUG] Registering: monospace,italic,400 under F10
[2008/09/23 12:03:11] [DEBUG] Registering: monospace,normal,700 under F11
[2008/09/23 12:03:11] [DEBUG] Registering: monospace,oblique,700 under F12
[2008/09/23 12:03:11] [DEBUG] Registering: monospace,italic,700 under F12
[2008/09/23 12:03:11] [DEBUG] Registering: Monospaced,normal,400 under F9
[2008/09/23 12:03:11] [DEBUG] Registering: Monospaced,oblique,400 under F10
[2008/09/23 12:03:11] [DEBUG] Registering: Monospaced,italic,400 under F10
[2008/09/23 12:03:11] [DEBUG] Registering: Monospaced,normal,700 under F11
[2008/09/23 12:03:11] [DEBUG] Registering: Monospaced,oblique,700 under F12
[2008/09/23 12:03:11] [DEBUG] Registering: Monospaced,italic,700 under F12
[2008/09/23 12:03:11] [DEBUG] Registering: Helvetica,normal,400 under F1
[2008/09/23 12:03:11] [DEBUG] Registering: Helvetica,oblique,400 under F2
[2008/09/23 12:03:11] [DEBUG] Registering: Helvetica,italic,400 under F2
[2008/09/23 12:03:11] [DEBUG] Registering: Helvetica,normal,700 under F3
[2008/09/23 12:03:11] [DEBUG] Registering: Helvetica,oblique,700 under F4
[2008/09/23 12:03:11] [DEBUG] Registering: Helvetica,italic,700 under F4
[2008/09/23 12:03:11] [DEBUG] Registering: Times,normal,400 under F5
[2008/09/23 12:03:11] [DEBUG] Registering: Times,oblique,400 under F6
[2008/09/23 12:03:11] [DEBUG] Registering: Times,italic,400 under F6
[2008/09/23 12:03:11] [DEBUG] Registering: Times,normal,700 under F7
[2008/09/23 12:03:11] [DEBUG] Registering: Times,oblique,700 under F8
[2008/09/23 12:03:11] [DEBUG] Registering: Times,italic,700 under F8
[2008/09/23 12:03:11] [DEBUG] Registering: Courier,normal,400 under F9
[2008/09/23 12:03:11] [DEBUG] Registering: Courier,oblique,400 under F10
[2008/09/23 12:03:11] [DEBUG] Registering: Courier,italic,400 under F10
[2008/09/23 12:03:11] [DEBUG] Registering: Courier,normal,700 under F11
[2008/09/23 12:03:11] [DEBUG] Registering: Courier,oblique,700 under F12
[2008/09/23 12:03:11] [DEBUG] Registering: Courier,italic,700 under F12
[2008/09/23 12:03:11] [DEBUG] Registering: Symbol,normal,400 under F13
[2008/09/23 12:03:11] [DEBUG] Registering: ZapfDingbats,normal,400 under F14
[2008/09/23 12:03:11] [DEBUG] Registering: Times-Roman,normal,400 under F5
[2008/09/23 12:03:11] [DEBUG] Registering: Times-Roman,oblique,400 under F6
[2008/09/23 12:03:11] [DEBUG] Registering: Times-Roman,italic,400 under F6
[2008/09/23 12:03:11] [DEBUG] Registering: Times-Roman,normal,700 under F7
[2008/09/23 12:03:11] [DEBUG] Registering: Times-Roman,oblique,700 under F8
[2008/09/23 12:03:11] [DEBUG] Registering: Times-Roman,italic,700 under F8
[2008/09/23 12:03:11] [DEBUG] Registering: Times Roman,normal,400 under F5
[2008/09/23 12:03:11] [DEBUG] Registering: Times Roman,oblique,400 under F6
[2008/09/23 12:03:11] [DEBUG] Registering: Times Roman,italic,400 under F6
[2008/09/23 12:03:11] [DEBUG] Registering: Times Roman,normal,700 under F7
[2008/09/23 12:03:11] [DEBUG] Registering: Times Roman,oblique,700 under F8
[2008/09/23 12:03:11] [DEBUG] Registering: Times Roman,italic,700 under F8
[2008/09/23 12:03:11] [DEBUG] Registering: Computer-Modern-Typewriter,normal,400 under F9
[2008/09/23 12:03:11] [DEBUG] Building formatting object tree
[2008/09/23 12:03:11] [DEBUG] Current heap size: 7229KB
[2008/09/23 12:03:11] [DEBUG] Starting layout
[2008/09/23 12:03:11] [DEBUG] [1]
[2008/09/23 12:03:11] [DEBUG] PLM> flow BPD =792870
[2008/09/23 12:03:11] [DEBUG] start of the next element list is: page=1 col=0
[2008/09/23 12:03:11] [ERROR] null: java.lang.StackOverflowError
java.lang.StackOverflowError
	at java.lang.ThreadLocal.get(ThreadLocal.java:125)
	at sun.misc.FloatingDecimal.developLongDigits(FloatingDecimal.java:312)
	at sun.misc.FloatingDecimal.dtoa(FloatingDecimal.java:549)
	at sun.misc.FloatingDecimal.(FloatingDecimal.java:442)
	at java.lang.StringBuffer.append(StringBuffer.java:365)
	at org.apache.fop.fo.properties.PercentLength.toString(PercentLength.java:121)
	at java.lang.String.valueOf(String.java:2615)
	at java.lang.StringBuffer.append(StringBuffer.java:220)
	at org.apache.fop.fo.flow.table.TableColumn.toString(TableColumn.java:233)
	at java.lang.String.valueOf(String.java:2615)
	at java.lang.StringBuffer.append(StringBuffer.java:220)
	at org.apache.fop.datatypes.LengthBase.toString(LengthBase.java:135)
	at java.lang.String.valueOf(String.java:2615)
	at java.lang.StringBuffer.append(StringBuffer.java:220)
	at org.apache.fop.fo.properties.PercentLength.toString(PercentLength.java:121)
	at java.lang.String.valueOf(String.java:2615)
	at java.lang.StringBuffer.append(StringBuffer.java:220)
	at org.apache.fop.fo.flow.table.TableColumn.toString(TableColumn.java:233)
	at java.lang.String.valueOf(String.java:2615)
	at java.lang.StringBuffer.append(StringBuffer.java:220)
	at org.apache.fop.datatypes.LengthBase.toString(LengthBase.java:135)
	at java.lang.String.valueOf(String.java:2615)
	at java.lang.StringBuffer.append(StringBuffer.java:220)
	at org.apache.fop.fo.properties.PercentLength.toString(PercentLength.java:121)
	at java.lang.String.valueOf(String.java:2615)
	at java.lang.StringBuffer.append(StringBuffer.java:220)
	at org.apache.fop.fo.flow.table.TableColumn.toString(TableColumn.java:233)
	at java.lang.String.valueOf(String.java:2615)
	at java.lang.StringBuffer.append(StringBuffer.java:220)
	at org.apache.fop.datatypes.LengthBase.toString(LengthBase.java:135)
	at java.lang.String.valueOf(String.java:2615)
	at java.lang.StringBuffer.append(StringBuffer.java:220)
	at org.apache.fop.fo.properties.PercentLength.toString(PercentLength.java:121)
	at java.lang.String.valueOf(String.java:2615)
	at java.lang.StringBuffer.append(StringBuffer.java:220)
	at org.apache.fop.fo.flow.table.TableColumn.toString(TableColumn.java:233)
	at java.lang.String.valueOf(String.java:2615)
	at java.lang.StringBuffer.append(StringBuffer.java:220)
	at org.apache.fop.datatypes.LengthBase.toString(LengthBase.java:135)
	at java.lang.String.valueOf(String.java:2615)
	at java.lang.StringBuffer.append(StringBuffer.java:220)
	at org.apache.fop.fo.properties.PercentLength.toString(PercentLength.java:121)
	at java.lang.String.valueOf(String.java:2615)
	...


It seems a problem in the FOP library, or maybe a clash of some java classe in path.
Comment 1 Andreas L. Delmelle 2008-09-27 10:04:59 UTC
FWIW: This issue has already been fixed in FOP Trunk, see: 
http://svn.apache.org/viewvc?rev=670335&view=rev

The workaround in your case is to disable FOP's debug output, which will lead to TableColumn.toString() never being called (and is not meant to be set active in a production environment anyway)
Comment 2 Lucio Asnaghi 2008-09-28 04:12:07 UTC
how can i disable FOP debug output only without affecting the other libraries or the containers (for which i need the debug output) ?

and anyway, disabling debug is sure meant in a production environment, but i usually work in development environment...
Comment 3 Andreas L. Delmelle 2008-09-28 04:47:37 UTC
(In reply to comment #2)
> how can i disable FOP debug output only without affecting the other libraries
> or the containers (for which i need the debug output) ?
> 

Depends on what the concrete logging framework is that is used in your environment. FOP uses Jakarta Commons Logging, which by default uses standard JDK Logging (where you can definitely set the log-level on a per-package basis, i.e. level = INFO for everything in org.apache.fop and descendants)

see: http://xmlgraphics.apache.org/fop/0.95/embedding.html#basic-logging
Comment 4 Glenn Adams 2012-04-01 06:41:53 UTC
batch transition pre-FOP1.0 resolved+fixed bugs to closed+fixed