Bug 59110 - Classloader generates string index out of bound exception
Summary: Classloader generates string index out of bound exception
Status: RESOLVED DUPLICATE of bug 58999
Alias: None
Product: Tomcat 8
Classification: Unclassified
Component: Catalina (show other bugs)
Version: 8.0.32
Hardware: All All
: P2 normal (vote)
Target Milestone: ----
Assignee: Tomcat Developers Mailing List
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2016-03-03 14:07 UTC by tfilteau
Modified: 2016-03-03 15:08 UTC (History)
0 users



Attachments
File to reproduce the bug illustrated above (4.88 KB, application/xml)
2016-03-03 14:07 UTC, tfilteau
Details

Note You need to log in before you can comment on or make changes to this bug.
Description tfilteau 2016-03-03 14:07:48 UTC
Created attachment 33620 [details]
File to reproduce the bug illustrated above

I'm running BIRT reports using the BIRT webviewer and everything worked fine until I decided to upgrade from Tomcat 8.0.28 to Tomcat 8.0.32 where some of my reports failed with the error "String index out of bound exception". The reports were those that included the "importPackage" statement. Here's how to reproduce the bug:

1) Have Tomcat 8.0.32 properly installed and running
2) Download the latest BIRT runtime
3) Take the birt.war file inside what you just downloaded and put it in the webapps directory of Tomcat so that it'll get deployed.
4) The deployment should have created a "birt" folder inside the webapps directory. Go inside and replace the test.rptdesign with the one I attached to this bug report.
5) Navigate to localhost:8080/birt and click the "View example" at the bottom of the page which should trigger the bug.

Just to be sure, here is the stack trace that's displayed:

org.eclipse.birt.report.engine.api.EngineException: There are errors evaluating script "importPackage(Packages.org.eclipse.birt.report.item.crosstab.core.de);":
String index out of range: 3
   at org.eclipse.birt.report.engine.script.internal.ScriptExecutor.addException(ScriptExecutor.java:249)
   at org.eclipse.birt.report.engine.script.internal.ReportScriptExecutor.handleInitialize(ReportScriptExecutor.java:93)
   at org.eclipse.birt.report.engine.api.impl.EngineTask.loadDesign(EngineTask.java:1971)
   at org.eclipse.birt.report.engine.api.impl.RunTask.doRun(RunTask.java:219)
   at org.eclipse.birt.report.engine.api.impl.RunTask.run(RunTask.java:89)
   at org.eclipse.birt.report.service.ReportEngineService.runReport(ReportEngineService.java:1325)
   at org.eclipse.birt.report.service.BirtViewerReportService.runReport(BirtViewerReportService.java:159)
   at org.eclipse.birt.report.service.actionhandler.BirtRunReportActionHandler.__execute(BirtRunReportActionHandler.java:81)
   at org.eclipse.birt.report.service.actionhandler.BirtGetPageActionHandler.__checkDocumentExists(BirtGetPageActionHandler.java:58)
   at org.eclipse.birt.report.service.actionhandler.AbstractGetPageActionHandler.prepareParameters(AbstractGetPageActionHandler.java:118)
   at org.eclipse.birt.report.service.actionhandler.AbstractGetPageActionHandler.__execute(AbstractGetPageActionHandler.java:103)
   at org.eclipse.birt.report.service.actionhandler.AbstractBaseActionHandler.execute(AbstractBaseActionHandler.java:90)
   at org.eclipse.birt.report.soapengine.processor.AbstractBaseDocumentProcessor.__executeAction(AbstractBaseDocumentProcessor.java:47)
   at org.eclipse.birt.report.soapengine.processor.AbstractBaseComponentProcessor.executeAction(AbstractBaseComponentProcessor.java:143)
   at org.eclipse.birt.report.soapengine.processor.BirtDocumentProcessor.handleGetPage(BirtDocumentProcessor.java:87)
   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
   at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
   at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
   at java.lang.reflect.Method.invoke(Unknown Source)
   at org.eclipse.birt.report.soapengine.processor.AbstractBaseComponentProcessor.process(AbstractBaseComponentProcessor.java:112)
   at org.eclipse.birt.report.soapengine.endpoint.BirtSoapBindingImpl.getUpdatedObjects(BirtSoapBindingImpl.java:66)
   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
   at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
   at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
   at java.lang.reflect.Method.invoke(Unknown Source)
   at org.apache.axis.providers.java.RPCProvider.invokeMethod(RPCProvider.java:397)
   at org.apache.axis.providers.java.RPCProvider.processMessage(RPCProvider.java:186)
   at org.apache.axis.providers.java.JavaProvider.invoke(JavaProvider.java:323)
   at org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrategy.java:32)
   at org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:118)
   at org.apache.axis.SimpleChain.invoke(SimpleChain.java:83)
   at org.apache.axis.handlers.soap.SOAPService.invoke(SOAPService.java:454)
   at org.apache.axis.server.AxisServer.invoke(AxisServer.java:281)
   at org.apache.axis.transport.http.AxisServlet.doPost(AxisServlet.java:699)
   at org.eclipse.birt.report.servlet.BirtSoapMessageDispatcherServlet.doPost(BirtSoapMessageDispatcherServlet.java:265)
   at javax.servlet.http.HttpServlet.service(HttpServlet.java:648)
   at org.apache.axis.transport.http.AxisServletBase.service(AxisServletBase.java:327)
   at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
   at org.eclipse.birt.report.servlet.BirtSoapMessageDispatcherServlet.service(BirtSoapMessageDispatcherServlet.java:122)
   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:292)
   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
   at org.eclipse.birt.report.filter.ViewerFilter.doFilter(ViewerFilter.java:68)
   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)
   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
   at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)
   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
   at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:212)
   at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106)
   at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
   at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:141)
   at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
   at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616)
   at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)
   at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:522)
   at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1095)
   at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:672)
   at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.doRun(AprEndpoint.java:2500)
   at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:2489)
   at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
   at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
   at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
   at java.lang.Thread.run(Unknown Source)
Caused by: org.eclipse.birt.core.exception.CoreException: There are errors evaluating script "importPackage(Packages.org.eclipse.birt.report.item.crosstab.core.de);":
String index out of range: 3
   at org.eclipse.birt.report.engine.javascript.JavascriptEngine.evaluate(JavascriptEngine.java:295)
   at org.eclipse.birt.core.script.ScriptContext.evaluate(ScriptContext.java:159)
   at org.eclipse.birt.report.engine.executor.ExecutionContext.evaluate(ExecutionContext.java:789)
   at org.eclipse.birt.report.engine.executor.ExecutionContext.evaluate(ExecutionContext.java:718)
   at org.eclipse.birt.report.engine.script.internal.ScriptExecutor.handleScriptInternal(ScriptExecutor.java:118)
   at org.eclipse.birt.report.engine.script.internal.ScriptExecutor.handleScript(ScriptExecutor.java:105)
   at org.eclipse.birt.report.engine.script.internal.ReportScriptExecutor.handleInitialize(ReportScriptExecutor.java:84)
... 61 more
Caused by: java.lang.StringIndexOutOfBoundsException: String index out of range: 3
   at java.lang.String.charAt(Unknown Source)
   at org.apache.catalina.loader.WebappClassLoaderBase.filter(WebappClassLoaderBase.java:2780)
   at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1253)
   at java.lang.ClassLoader.loadClass(Unknown Source)
   at java.lang.ClassLoader.loadClass(Unknown Source)
   at java.lang.ClassLoader.loadClass(Unknown Source)
   at org.eclipse.birt.report.engine.executor.ApplicationClassLoader.loadClass(ApplicationClassLoader.java:89)
   at org.mozilla.javascript.Kit.classOrNull(Kit.java:60)
   at org.mozilla.javascript.NativeJavaPackage.getPkgProperty(NativeJavaPackage.java:127)
   at org.mozilla.javascript.NativeJavaPackage.get(NativeJavaPackage.java:82)
   at org.mozilla.javascript.NativeJavaTopPackage.init(NativeJavaTopPackage.java:96)
   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
   at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
   at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
   at java.lang.reflect.Method.invoke(Unknown Source)
   at org.mozilla.javascript.ScriptableObject.buildClassCtor(ScriptableObject.java:1225)
   at org.mozilla.javascript.LazilyLoadedCtor.buildValue0(LazilyLoadedCtor.java:105)
   at org.mozilla.javascript.LazilyLoadedCtor.buildValue(LazilyLoadedCtor.java:96)
   at org.mozilla.javascript.LazilyLoadedCtor.init(LazilyLoadedCtor.java:66)
   at org.mozilla.javascript.ScriptableObject$GetterSlot.getValue(ScriptableObject.java:307)
   at org.mozilla.javascript.ScriptableObject$RelinkedSlot.getValue(ScriptableObject.java:347)
   at org.mozilla.javascript.ScriptableObject.get(ScriptableObject.java:456)
   at org.mozilla.javascript.IdScriptableObject.get(IdScriptableObject.java:329)
   at org.mozilla.javascript.ImporterTopLevel.get(ImporterTopLevel.java:96)
   at org.mozilla.javascript.ScriptableObject.getProperty(ScriptableObject.java:2184)
   at org.mozilla.javascript.ScriptRuntime.topScopeName(ScriptRuntime.java:1824)
   at org.mozilla.javascript.ScriptRuntime.nameOrFunction(ScriptRuntime.java:1791)
   at org.mozilla.javascript.ScriptRuntime.name(ScriptRuntime.java:1733)
   at org.mozilla.javascript.gen._report_method__name__initialize___12._c_script_0(/report/method[@name="initialize"]:1)
   at org.mozilla.javascript.gen._report_method__name__initialize___12.call(/report/method[@name="initialize"])
   at org.mozilla.javascript.ContextFactory.doTopCall(ContextFactory.java:394)
   at org.mozilla.javascript.ScriptRuntime.doTopCall(ScriptRuntime.java:3091)
   at org.mozilla.javascript.gen._report_method__name__initialize___12.call(/report/method[@name="initialize"])
   at org.mozilla.javascript.gen._report_method__name__initialize___12.exec(/report/method[@name="initialize"])
   at org.eclipse.birt.report.engine.javascript.JavascriptEngine.evaluate(JavascriptEngine.java:290)
... 67 more
Comment 1 Violeta Georgieva 2016-03-03 15:08:14 UTC

*** This bug has been marked as a duplicate of bug 58999 ***