Jump to content
We've recently updated our Privacy Statement, available here ×

Malcolm McLean

Members
  • Posts

    1
  • Joined

  • Last visited

Malcolm McLean's Achievements

Newbie

Newbie (1/14)

  • Week One Done
  • One Month Later
  • One Year In
  • First Post Rare
  • Conversation Starter Rare

Recent Badges

0

Reputation

  1. We've recently seen a number of NPE's while generating reports, all of which occur in the TrueTypeFont class. After enabling font logging, the tmp +~JF file seems to be getting removed at some point and then causing the NPE the next time the font is used. There is nothing external that is removing the files, so it might be the GC that is cleaning up and removing them. What's concerning is that as soon as the temp files get deleted, nothing will generate further until we've restarted the JBoss instance JR is running in. Once the file has been deleted, the font is deregistered successfully, but then it tries to reopen the non-existent temp file and eventually fails. Here's a sample stack trace: 2014-04-09 11:40:46,162 ERROR [sTDERR] (GENERAL subreports #4) Apr 09, 2014 11:40:46 AM sun.font.TrueTypeFont open INFO: open TTF: /tmp/+~JF2800711352687459302.tmp 2014-04-09 11:40:46,167 ERROR [sTDERR] (GENERAL subreports #4) Apr 09, 2014 11:40:46 AM sun.font.TrueTypeFont readBlock SEVERE: While reading /tmp/+~JF2800711352687459302.tmp java.awt.FontFormatException: java.lang.NullPointerException at sun.font.TrueTypeFont.open(TrueTypeFont.java:310) at sun.font.TrueTypeFont.readBlock(TrueTypeFont.java:338) at sun.font.T2KFontScaler.initNativeScaler(Native Method) at sun.font.T2KFontScaler.<init>(T2KFontScaler.java:73) at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at java.lang.reflect.Constructor.newInstance(Constructor.java:526) at sun.font.FontScaler.getScaler(FontScaler.java:128) at sun.font.TrueTypeFont.getScaler(TrueTypeFont.java:1251) at sun.font.FileFontStrike.<init>(FileFontStrike.java:177) at sun.font.FileFont.createStrike(FileFont.java:95) at sun.font.Font2D.getStrike(Font2D.java:344) at sun.font.Font2D.getStrike(Font2D.java:253) at sun.font.Font2D.getFontMetrics(Font2D.java:399) at java.awt.Font.defaultLineMetrics(Font.java:2175) at java.awt.Font.getLineMetrics(Font.java:2245) at net.sf.jasperreports.engine.fill.SimpleTextLineWrapper.determineLeading(SimpleTextLineWrapper.java:391) at net.sf.jasperreports.engine.fill.SimpleTextLineWrapper.getGeneralFontInfo(SimpleTextLineWrapper.java:343) at net.sf.jasperreports.engine.fill.SimpleTextLineWrapper.createFontInfo(SimpleTextLineWrapper.java:279) at net.sf.jasperreports.engine.fill.SimpleTextLineWrapper.start(SimpleTextLineWrapper.java:241) at net.sf.jasperreports.engine.fill.TextMeasurer.measure(TextMeasurer.java:411) at net.sf.jasperreports.engine.fill.JRFillTextElement.chopTextElement(JRFillTextElement.java:623) at net.sf.jasperreports.engine.fill.JRFillTextField.prepare(JRFillTextField.java:685) at net.sf.jasperreports.engine.fill.JRFillElementContainer.prepareElements(JRFillElementContainer.java:331) at net.sf.jasperreports.engine.fill.JRFillBand.fill(JRFillBand.java:384) at net.sf.jasperreports.engine.fill.JRFillBand.fill(JRFillBand.java:358) at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillColumnBand(JRVerticalFiller.java:2059) at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillDetail(JRVerticalFiller.java:778) at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReportStart(JRVerticalFiller.java:288) at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReport(JRVerticalFiller.java:151) at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:939) at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:871) at net.sf.jasperreports.engine.fill.JRFillSubreport.fillSubreport(JRFillSubreport.java:656) at net.sf.jasperreports.engine.fill.JRSubreportRunnable.run(JRSubreportRunnable.java:59) at net.sf.jasperreports.engine.fill.AbstractThreadSubreportRunner.run(AbstractThreadSubreportRunner.java:203) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) at java.lang.Thread.run(Thread.java:744) 2014-04-09 11:40:46,168 ERROR [sTDERR] (GENERAL subreports #4) Apr 09, 2014 11:40:46 AM sun.font.SunFontManager deRegisterBadFont SEVERE: Deregister bad font: ** TrueType Font: Family=Frutiger LT 55 Roman Name=Frutiger LT 55 Roman style=0 fileName=/tmp/+~JF2800711352687459302.tmp 2014-04-09 11:40:46,170 ERROR [sTDERR] (GENERAL subreports #4) Apr 09, 2014 11:40:46 AM sun.font.TrueTypeFont open INFO: open TTF: /tmp/+~JF2800711352687459302.tmp And eventually JRFillSubreport fails: 2014-04-09 11:40:46,198 ERROR [net.sf.jasperreports.engine.fill.JRFillSubreport] (GENERAL subreports #1) Fill 2: exception java.lang.NullPointerException at sun.font.TrueTypeGlyphMapper.<init>(TrueTypeGlyphMapper.java:62) at sun.font.TrueTypeFont.getMapper(TrueTypeFont.java:1529) at sun.font.FileFontStrike.<init>(FileFontStrike.java:187) at sun.font.FileFont.createStrike(FileFont.java:95) at sun.font.Font2D.getStrike(Font2D.java:344) at sun.font.Font2D.getStrike(Font2D.java:253) at sun.font.Font2D.getFontMetrics(Font2D.java:399) at java.awt.Font.defaultLineMetrics(Font.java:2175) at java.awt.Font.getLineMetrics(Font.java:2245) ... We were running JR 4.0.1 and have just upgraded to 5.5.1, yet that didn't help. We were also running JDK 6u45 and tried upgrading to JDK 7u51, but that caused the same problems and they seemed to have far sooner. Any input will be appreciated as we're currently having to restart our system each morning and resubmit the reports that failed because of the font problem. Malcolm
×
×
  • Create New...