Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.

Bug 325166

Summary: ConcurrentModificationException on Dump.dumpOnExit()
Product: [Tools] AspectJ Reporter: bdaici
Component: LTWeavingAssignee: aspectj inbox <aspectj-inbox>
Status: RESOLVED FIXED QA Contact:
Severity: major    
Priority: P3 CC: aclement, bdaici
Version: 1.6.8   
Target Milestone: 1.6.10   
Hardware: PC   
OS: Linux   
Whiteboard:
Attachments:
Description Flags
ajcore file
none
Another ajcore none

Description bdaici CLA 2010-09-13 16:56:22 EDT
Build Identifier: AspectJ Compiler 1.6.8 built on Friday Jan 8, 2010 at 21:53:37 GMT

This exception happens consistently while accessing JasperServer functionality woven by AspectJ LTW. It looks as though there is an interference between Groovy class definition logic and AspectJ. even though the error happens in dumpOnExit() I believe this might just be masking a different issue related to class definition and weaving.

Reproducible: Always

Steps to Reproduce:
1. start Tomcat running JasperServer
2. access reporting functionality
3. check catalina.out
Comment 1 bdaici CLA 2010-09-13 16:57:43 EDT
catalina.out excerpt:

Sep 13, 2010 4:44:38 PM org.apache.catalina.startup.Catalina start
INFO: Server startup in 18186 ms
Sep 13, 2010 4:45:45 PM org.aspectj.weaver.tools.Jdk14Trace info
INFO: Dumping to /home/bdaici/jasperserver-pro-3.7/apache-tomcat/bin/./ajcore.20100913.164545.308.txt
Sep 13, 2010 4:45:45 PM org.aspectj.weaver.tools.Jdk14Trace error
SEVERE: Script1
java.util.ConcurrentModificationException
	at java.util.WeakHashMap$HashIterator.nextEntry(WeakHashMap.java:762)
	at java.util.WeakHashMap$KeyIterator.next(WeakHashMap.java:795)
	at org.aspectj.weaver.Dump.dumpNodes(Dump.java:310)
	at org.aspectj.weaver.Dump.dumpDefault(Dump.java:290)
	at org.aspectj.weaver.Dump.dumpOnExit(Dump.java:148)
	at org.aspectj.weaver.loadtime.Aj.preProcess(Aj.java:97)
	at org.aspectj.weaver.loadtime.ClassPreProcessorAgentAdapter.transform(ClassPreProcessorAgentAdapter.java:55)
	at sun.instrument.TransformerManager.transform(TransformerManager.java:169)
	at sun.instrument.InstrumentationImpl.transform(InstrumentationImpl.java:365)
	at java.lang.ClassLoader.defineClass1(Native Method)
	at java.lang.ClassLoader.defineClassCond(ClassLoader.java:632)
	at java.lang.ClassLoader.defineClass(ClassLoader.java:616)
	at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)
	at groovy.lang.GroovyClassLoader.access$300(GroovyClassLoader.java:57)
	at groovy.lang.GroovyClassLoader$ClassCollector.createClass(GroovyClassLoader.java:445)
	at groovy.lang.GroovyClassLoader$ClassCollector.onClassNode(GroovyClassLoader.java:463)
	at groovy.lang.GroovyClassLoader$ClassCollector.call(GroovyClassLoader.java:467)
	at org.codehaus.groovy.control.CompilationUnit$10.call(CompilationUnit.java:701)
	at org.codehaus.groovy.control.CompilationUnit.applyToPrimaryClassNodes(CompilationUnit.java:885)
	at org.codehaus.groovy.control.CompilationUnit.compile(CompilationUnit.java:436)
	at groovy.lang.GroovyClassLoader.parseClass(GroovyClassLoader.java:277)
	at groovy.lang.GroovyShell.parseClass(GroovyShell.java:572)
	at groovy.lang.GroovyShell.parse(GroovyShell.java:584)
	at groovy.lang.GroovyShell.parse(GroovyShell.java:564)
	at groovy.lang.GroovyShell.evaluate(GroovyShell.java:542)
	at groovy.lang.GroovyShell.evaluate(GroovyShell.java:518)
	at com.jaspersoft.commons.groovy.GroovyRunner.evaluate(GroovyRunner.java:61)
	at com.jaspersoft.commons.groovy.GroovyRunnerFactory.evaluate(GroovyRunnerFactory.java:28)
	at com.jaspersoft.commons.groovy.GroovyRunnerFactory.evaluate(GroovyRunnerFactory.java:21)
	at com.jaspersoft.commons.semantic.datasource.impl.SemanticLayerSecurityResolverImpl.createRelevantResourceAccessGrantLists(SemanticLayerSecurityResolverImpl.java:527)
	at com.jaspersoft.commons.semantic.datasource.impl.SemanticLayerSecurityResolverImpl.getRelevantResourceAccessGrantLists(SemanticLayerSecurityResolverImpl.java:559)
	at com.jaspersoft.commons.semantic.impl.SchemaImpl.resolveDataSet(SchemaImpl.java:685)
	at com.jaspersoft.commons.semantic.datasource.SemanticLayerQueryExecuter.createDatasource(SemanticLayerQueryExecuter.java:159)
	at net.sf.jasperreports.engine.fill.JRFillDataset.createQueryDatasource(JRFillDataset.java:681)
	at net.sf.jasperreports.engine.fill.JRFillDataset.initDatasource(JRFillDataset.java:601)
	at net.sf.jasperreports.engine.fill.JRBaseFiller.setParameters(JRBaseFiller.java:1247)
	at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:877)
	at com.jaspersoft.ji.engine.ProEngineServiceImpl.fillReport(ProEngineServiceImpl.java:251)
	at com.jaspersoft.jasperserver.api.engine.jasperreports.service.impl.EngineServiceImpl.fillReport(EngineServiceImpl.java:727)
	at com.jaspersoft.jasperserver.api.engine.jasperreports.service.impl.EngineServiceImpl.fillReport(EngineServiceImpl.java:385)
	at com.jaspersoft.jasperserver.api.engine.jasperreports.service.impl.EngineServiceImpl.executeReport(EngineServiceImpl.java:872)
	at com.jaspersoft.jasperserver.api.engine.jasperreports.domain.impl.ReportUnitRequest.execute(ReportUnitRequest.java:57)
	at com.jaspersoft.jasperserver.api.engine.jasperreports.service.impl.EngineServiceImpl.execute(EngineServiceImpl.java:319)
	at com.jaspersoft.ji.engine.ProEngineServiceImpl.execute(ProEngineServiceImpl.java:132)
	at com.jaspersoft.jasperserver.war.action.ViewReportAction.executeReport(ViewReportAction.java:456)
	at com.jaspersoft.ji.report.options.actions.ReportOptionsViewAction.executeReport(ReportOptionsViewAction.java:96)
	at com.jaspersoft.jasperserver.war.action.ViewReportAction.executeReport(ViewReportAction.java:446)
	at com.jaspersoft.jasperserver.war.action.ViewReportAction.runReport(ViewReportAction.java:283)
	at sun.reflect.GeneratedMethodAccessor383.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at org.springframework.webflow.action.DispatchMethodInvoker.invoke(DispatchMethodInvoker.java:98)
	at org.springframework.webflow.action.MultiAction.doExecute(MultiAction.java:123)
	at org.springframework.webflow.action.AbstractAction.execute(AbstractAction.java:188)
	at org.springframework.webflow.execution.ActionExecutor.execute(ActionExecutor.java:51)
	at org.springframework.webflow.action.EvaluateAction.doExecute(EvaluateAction.java:79)
	at org.springframework.webflow.action.AbstractAction.execute(AbstractAction.java:188)
	at org.springframework.webflow.execution.AnnotatedAction.execute(AnnotatedAction.java:145)
	at org.springframework.webflow.execution.ActionExecutor.execute(ActionExecutor.java:51)
	at org.springframework.webflow.engine.ActionState.doEnter(ActionState.java:101)
	at org.springframework.webflow.engine.State.enter(State.java:194)
	at org.springframework.webflow.engine.Transition.execute(Transition.java:227)
	at org.springframework.webflow.engine.DecisionState.doEnter(DecisionState.java:51)
	at org.springframework.webflow.engine.State.enter(State.java:194)
	at org.springframework.webflow.engine.Transition.execute(Transition.java:227)
	at org.springframework.webflow.engine.impl.FlowExecutionImpl.execute(FlowExecutionImpl.java:391)
	at org.springframework.webflow.engine.impl.RequestControlContextImpl.execute(RequestControlContextImpl.java:214)
	at org.springframework.webflow.engine.TransitionableState.handleEvent(TransitionableState.java:119)
	at org.springframework.webflow.engine.Flow.handleEvent(Flow.java:555)
	at org.springframework.webflow.engine.impl.FlowExecutionImpl.handleEvent(FlowExecutionImpl.java:386)
	at org.springframework.webflow.engine.impl.RequestControlContextImpl.handleEvent(RequestControlContextImpl.java:210)
	at org.springframework.webflow.engine.ActionState.doEnter(ActionState.java:105)
	at org.springframework.webflow.engine.State.enter(State.java:194)
	at org.springframework.webflow.engine.Flow.start(Flow.java:535)
	at org.springframework.webflow.engine.impl.FlowExecutionImpl.start(FlowExecutionImpl.java:364)
	at org.springframework.webflow.engine.impl.FlowExecutionImpl.start(FlowExecutionImpl.java:222)
	at org.springframework.webflow.executor.FlowExecutorImpl.launchExecution(FlowExecutorImpl.java:140)
	at sun.reflect.GeneratedMethodAccessor370.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:307)
	at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:182)
	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:149)
	at org.springframework.security.intercept.method.aopalliance.MethodSecurityInterceptor.invoke(MethodSecurityInterceptor.java:66)
	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
	at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
	at $Proxy33.launchExecution(Unknown Source)
	at org.springframework.webflow.mvc.servlet.FlowHandlerAdapter.handle(FlowHandlerAdapter.java:193)
	at org.springframework.webflow.mvc.servlet.FlowController.handleRequest(FlowController.java:174)
	at org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:48)
	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:875)
	at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:807)
	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:571)
	at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:501)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
	at com.jaspersoft.jasperserver.war.common.UploadMultipartFilter.doFilter(UploadMultipartFilter.java:83)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
	at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:378)
	at com.jaspersoft.jasperserver.war.security.JSSwitchUserProcessingFilter.doFilterHttp(JSSwitchUserProcessingFilter.java:146)
	at org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53)
	at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:390)
	at org.springframework.security.intercept.web.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:109)
	at org.springframework.security.intercept.web.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:83)
	at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:390)
	at org.springframework.security.ui.ExceptionTranslationFilter.doFilterHttp(ExceptionTranslationFilter.java:101)
	at org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53)
	at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:390)
	at com.jaspersoft.ji.license.JILicenseFilter.doFilter(JILicenseFilter.java:92)
	at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:390)
	at org.springframework.security.providers.anonymous.AnonymousProcessingFilter.doFilterHttp(AnonymousProcessingFilter.java:105)
	at org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53)
	at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:390)
	at com.jaspersoft.jasperserver.api.metadata.user.service.impl.MetadataAuthenticationProcessingFilter.doFilter(MetadataAuthenticationProcessingFilter.java:139)
	at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:390)
	at com.jaspersoft.jasperserver.war.util.RequestParameterAuthenticationFilter.doFilter(RequestParameterAuthenticationFilter.java:97)
	at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:390)
	at com.jaspersoft.jasperserver.multipleTenancy.MTBasicProcessingFilter.doFilterHttp(MTBasicProcessingFilter.java:176)
	at org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53)
	at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:390)
	at com.solbright.arm.sso.UserFoldersFilter.doFilter(UserFoldersFilter.java:43)
	at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:390)
	at com.jaspersoft.jasperserver.war.UserPreferencesFilter.doFilter(UserPreferencesFilter.java:175)
	at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:390)
	at org.springframework.security.ui.AbstractProcessingFilter.doFilterHttp(AbstractProcessingFilter.java:277)
	at org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53)
	at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:390)
	at com.jaspersoft.jasperserver.war.UserPreferencesFilter.doFilter(UserPreferencesFilter.java:175)
	at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:390)
	at com.jaspersoft.jasperserver.api.logging.filter.BasicLoggingFilter.doFilter(BasicLoggingFilter.java:53)
	at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:390)
	at org.springframework.security.context.HttpSessionContextIntegrationFilter.doFilterHttp(HttpSessionContextIntegrationFilter.java:235)
	at org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53)
	at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:390)
	at org.springframework.security.util.FilterChainProxy.doFilter(FilterChainProxy.java:175)
	at org.springframework.security.util.FilterToBeanProxy.doFilter(FilterToBeanProxy.java:99)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
	at com.jaspersoft.jasperserver.war.util.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:67)
	at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:236)
	at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:167)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:524)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
	at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664)
	at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
	at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
	at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
	at java.lang.Thread.run(Thread.java:619)
Sep 13, 2010 4:45:45 PM org.aspectj.weaver.tools.Jdk14Trace info
INFO: Dumping to /home/bdaici/jasperserver-pro-3.7/apache-tomcat/bin/./ajcore.20100913.164545.381.txt
Comment 2 bdaici CLA 2010-09-13 16:58:37 EDT
Created attachment 178774 [details]
ajcore file

One of the ajcore files
Comment 3 bdaici CLA 2010-09-13 16:59:15 EDT
Created attachment 178775 [details]
Another ajcore
Comment 4 Andrew Clement CLA 2010-09-13 19:53:06 EDT
Hi, you should try a dev build of AspectJ. Under another bug (bug 319114) I removed the data structure that can give rise to this problem.
Dev builds are here: http://eclipse.org/aspectj/downloads.php
Comment 5 bdaici CLA 2010-09-13 21:59:57 EDT
Thanks, Andy, I'll give it a try tomorrow and let you know how it goes.

> Hi, you should try a dev build of AspectJ. Under another bug (bug 319114) I
> removed the data structure that can give rise to this problem.
> Dev builds are here: http://eclipse.org/aspectj/downloads.php
Comment 6 bdaici CLA 2010-09-16 13:04:00 EDT
Not able to test temporarily due to some configuration changes. Will update as soon as testing becomes possible.
Comment 7 Andrew Clement CLA 2010-10-25 12:22:34 EDT
Data structure that can lead to the problem no longer exists in 1.6.10