Bug 59110

Summary: Classloader generates string index out of bound exception
Product: Tomcat 8 Reporter: tfilteau
Component: CatalinaAssignee: Tomcat Developers Mailing List <dev>
Status: RESOLVED DUPLICATE    
Severity: normal    
Priority: P2    
Version: 8.0.32   
Target Milestone: ----   
Hardware: All   
OS: All   
Attachments: File to reproduce the bug illustrated above

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 ***