IDEA 10.5.2 : severe bug : application classpath "leaking into IDEA classpath"
For some unknown reason, some of the classpath of my current project "leaks" into IDEA classpath.
THis has the effect of breaking the logging subsystem (my project classpath has an incompatible, home brewed version of log4j), and thus completely kills IDEA which starts spewing hundreds of MB of logs (I had to change the log.xml to be able to trace the issue to its root cause).
The first encountered exception is
2011-10-04 11:41:24,572 [1076432] ERROR - m.intellij.concurrency.JobUtil - Could not initialize class com.intellij.psi.impl.source.jsp.jspJava.JspxImportListAttribute
java.lang.NoClassDefFoundError: Could not initialize class com.intellij.psi.impl.source.jsp.jspJava.JspxImportListAttribute
at com.intellij.psi.impl.source.jsp.jspJava.JspxImportListImpl.computeAttributes(JspxImportListImpl.java:64)
at com.intellij.psi.impl.source.jsp.jspJava.JspxImportListImpl.access$000(JspxImportListImpl.java:36)
at com.intellij.psi.impl.source.jsp.jspJava.JspxImportListImpl$1.compute(JspxImportListImpl.java:49)
at com.intellij.psi.impl.PsiCachedValueImpl.doCompute(PsiCachedValueImpl.java:45)
at com.intellij.util.CachedValueBase.getValueWithLock(CachedValueBase.java:187)
at com.intellij.psi.impl.PsiCachedValueImpl.getValue(PsiCachedValueImpl.java:36)
at com.intellij.psi.impl.source.jsp.jspJava.JspxImportListImpl.getImportAttributes(JspxImportListImpl.java:110)
at com.intellij.psi.impl.source.jsp.jspJava.JspxImportListImpl.getImportStaticStatements(JspxImportListImpl.java:116)
at com.intellij.psi.impl.source.PsiJavaFileBaseImpl.a(PsiJavaFileBaseImpl.java:314)
at com.intellij.psi.impl.source.PsiJavaFileBaseImpl.processDeclarations(PsiJavaFileBaseImpl.java:252)
at com.intellij.psi.impl.source.jsp.JspJavaFileImpl.processDeclarations(JspJavaFileImpl.java:49)
at com.intellij.psi.scope.util.PsiScopesUtil.treeWalkUp(PsiScopesUtil.java:68)
at com.intellij.psi.scope.util.PsiScopesUtil.treeWalkUp(PsiScopesUtil.java:53)
at com.intellij.psi.scope.util.PsiScopesUtil.resolveAndWalk(PsiScopesUtil.java:208)
at com.intellij.psi.scope.util.PsiScopesUtil.resolveAndWalk(PsiScopesUtil.java:142)
at com.intellij.psi.impl.source.tree.java.PsiReferenceExpressionImpl.d(PsiReferenceExpressionImpl.java:245)
at com.intellij.psi.impl.source.tree.java.PsiReferenceExpressionImpl.a(PsiReferenceExpressionImpl.java:191)
at com.intellij.psi.impl.source.tree.java.PsiReferenceExpressionImpl.access$000(PsiReferenceExpressionImpl.java:60)
at com.intellij.psi.impl.source.tree.java.PsiReferenceExpressionImpl$OurGenericsResolver.a(PsiReferenceExpressionImpl.java:162)
at com.intellij.psi.impl.source.tree.java.PsiReferenceExpressionImpl$OurGenericsResolver.resolve(PsiReferenceExpressionImpl.java:171)
at com.intellij.psi.impl.source.tree.java.PsiReferenceExpressionImpl$OurGenericsResolver.resolve(PsiReferenceExpressionImpl.java:156)
at com.intellij.psi.impl.source.resolve.ResolveCache$1.compute(ResolveCache.java:118)
at com.intellij.openapi.util.RecursionManager$5.doPreventingRecursion(RecursionManager.java:97)
at com.intellij.psi.impl.source.resolve.ResolveCache.a(ResolveCache.java:123)
at com.intellij.psi.impl.source.resolve.ResolveCache.resolveWithCaching(ResolveCache.java:134)
at com.intellij.psi.impl.source.tree.java.PsiReferenceExpressionImpl.multiResolve(PsiReferenceExpressionImpl.java:256)
at com.intellij.psi.impl.source.tree.java.PsiReferenceExpressionImpl.advancedResolve(PsiReferenceExpressionImpl.java:420)
at com.intellij.psi.impl.source.tree.java.PsiReferenceExpressionImpl$TypeEvaluator.fun(PsiReferenceExpressionImpl.java:287)
at com.intellij.psi.impl.source.tree.java.PsiReferenceExpressionImpl$TypeEvaluator.fun(PsiReferenceExpressionImpl.java:285)
at com.intellij.psi.impl.source.resolve.JavaResolveCache.getType(JavaResolveCache.java:94)
at com.intellij.psi.impl.source.tree.java.PsiReferenceExpressionImpl.getType(PsiReferenceExpressionImpl.java:337)
at com.intellij.psi.util.PsiUtil.getAccessObjectClass(PsiUtil.java:94)
at com.intellij.psi.impl.source.resolve.VariableResolverProcessor.<init>(VariableResolverProcessor.java:52)
at com.intellij.psi.impl.source.tree.java.PsiReferenceExpressionImpl.d(PsiReferenceExpressionImpl.java:244)
at com.intellij.psi.impl.source.tree.java.PsiReferenceExpressionImpl.a(PsiReferenceExpressionImpl.java:191)
at com.intellij.psi.impl.source.tree.java.PsiReferenceExpressionImpl.access$000(PsiReferenceExpressionImpl.java:60)
at com.intellij.psi.impl.source.tree.java.PsiReferenceExpressionImpl$OurGenericsResolver.a(PsiReferenceExpressionImpl.java:162)
at com.intellij.psi.impl.source.tree.java.PsiReferenceExpressionImpl$OurGenericsResolver.resolve(PsiReferenceExpressionImpl.java:171)
at com.intellij.psi.impl.source.tree.java.PsiReferenceExpressionImpl$OurGenericsResolver.resolve(PsiReferenceExpressionImpl.java:156)
at com.intellij.psi.impl.source.resolve.ResolveCache$1.compute(ResolveCache.java:118)
at com.intellij.openapi.util.RecursionManager$5.doPreventingRecursion(RecursionManager.java:97)
at com.intellij.psi.impl.source.resolve.ResolveCache.a(ResolveCache.java:123)
at com.intellij.psi.impl.source.resolve.ResolveCache.resolveWithCaching(ResolveCache.java:134)
at com.intellij.psi.impl.source.tree.java.PsiReferenceExpressionImpl.multiResolve(PsiReferenceExpressionImpl.java:256)
at com.intellij.psi.impl.source.tree.java.PsiReferenceExpressionImpl.advancedResolve(PsiReferenceExpressionImpl.java:420)
at com.intellij.psi.impl.source.tree.java.PsiReferenceExpressionImpl$TypeEvaluator.fun(PsiReferenceExpressionImpl.java:287)
at com.intellij.psi.impl.source.tree.java.PsiReferenceExpressionImpl$TypeEvaluator.fun(PsiReferenceExpressionImpl.java:285)
at com.intellij.psi.impl.source.resolve.JavaResolveCache.getType(JavaResolveCache.java:94)
at com.intellij.psi.impl.source.tree.java.PsiReferenceExpressionImpl.getType(PsiReferenceExpressionImpl.java:337)
at com.intellij.psi.util.PsiUtil.getAccessObjectClass(PsiUtil.java:94)
at com.intellij.psi.impl.source.resolve.VariableResolverProcessor.<init>(VariableResolverProcessor.java:52)
at com.intellij.psi.impl.source.tree.java.PsiReferenceExpressionImpl.d(PsiReferenceExpressionImpl.java:244)
at com.intellij.psi.impl.source.tree.java.PsiReferenceExpressionImpl.a(PsiReferenceExpressionImpl.java:191)
at com.intellij.psi.impl.source.tree.java.PsiReferenceExpressionImpl.access$000(PsiReferenceExpressionImpl.java:60)
at com.intellij.psi.impl.source.tree.java.PsiReferenceExpressionImpl$OurGenericsResolver.a(PsiReferenceExpressionImpl.java:162)
at com.intellij.psi.impl.source.tree.java.PsiReferenceExpressionImpl$OurGenericsResolver.resolve(PsiReferenceExpressionImpl.java:171)
at com.intellij.psi.impl.source.tree.java.PsiReferenceExpressionImpl$OurGenericsResolver.resolve(PsiReferenceExpressionImpl.java:156)
at com.intellij.psi.impl.source.resolve.ResolveCache$1.compute(ResolveCache.java:118)
at com.intellij.openapi.util.RecursionManager$5.doPreventingRecursion(RecursionManager.java:97)
at com.intellij.psi.impl.source.resolve.ResolveCache.a(ResolveCache.java:123)
at com.intellij.psi.impl.source.resolve.ResolveCache.resolveWithCaching(ResolveCache.java:134)
at com.intellij.psi.impl.source.tree.java.PsiReferenceExpressionImpl.multiResolve(PsiReferenceExpressionImpl.java:256)
at com.intellij.psi.impl.source.tree.java.PsiReferenceExpressionImpl.advancedResolve(PsiReferenceExpressionImpl.java:420)
at com.intellij.psi.impl.source.tree.java.PsiReferenceExpressionImpl$TypeEvaluator.fun(PsiReferenceExpressionImpl.java:287)
at com.intellij.psi.impl.source.tree.java.PsiReferenceExpressionImpl$TypeEvaluator.fun(PsiReferenceExpressionImpl.java:285)
at com.intellij.psi.impl.source.resolve.JavaResolveCache.getType(JavaResolveCache.java:94)
at com.intellij.psi.impl.source.tree.java.PsiReferenceExpressionImpl.getType(PsiReferenceExpressionImpl.java:337)
at com.intellij.psi.util.PsiUtil.getAccessObjectClass(PsiUtil.java:94)
at com.intellij.psi.impl.source.resolve.VariableResolverProcessor.<init>(VariableResolverProcessor.java:52)
at com.intellij.psi.impl.source.tree.java.PsiReferenceExpressionImpl.d(PsiReferenceExpressionImpl.java:244)
at com.intellij.psi.impl.source.tree.java.PsiReferenceExpressionImpl.a(PsiReferenceExpressionImpl.java:191)
at com.intellij.psi.impl.source.tree.java.PsiReferenceExpressionImpl.access$000(PsiReferenceExpressionImpl.java:60)
at com.intellij.psi.impl.source.tree.java.PsiReferenceExpressionImpl$OurGenericsResolver.a(PsiReferenceExpressionImpl.java:162)
at com.intellij.psi.impl.source.tree.java.PsiReferenceExpressionImpl$OurGenericsResolver.resolve(PsiReferenceExpressionImpl.java:171)
at com.intellij.psi.impl.source.tree.java.PsiReferenceExpressionImpl$OurGenericsResolver.resolve(PsiReferenceExpressionImpl.java:156)
at com.intellij.psi.impl.source.resolve.ResolveCache$1.compute(ResolveCache.java:118)
at com.intellij.openapi.util.RecursionManager$5.doPreventingRecursion(RecursionManager.java:97)
at com.intellij.psi.impl.source.resolve.ResolveCache.a(ResolveCache.java:123)
at com.intellij.psi.impl.source.resolve.ResolveCache.resolveWithCaching(ResolveCache.java:134)
at com.intellij.psi.impl.source.tree.java.PsiReferenceExpressionImpl.multiResolve(PsiReferenceExpressionImpl.java:256)
at com.intellij.psi.impl.source.tree.java.PsiReferenceExpressionImpl.advancedResolve(PsiReferenceExpressionImpl.java:420)
at com.intellij.psi.impl.source.tree.java.PsiReferenceExpressionImpl$TypeEvaluator.fun(PsiReferenceExpressionImpl.java:287)
at com.intellij.psi.impl.source.tree.java.PsiReferenceExpressionImpl$TypeEvaluator.fun(PsiReferenceExpressionImpl.java:285)
at com.intellij.psi.impl.source.resolve.JavaResolveCache.getType(JavaResolveCache.java:94)
at com.intellij.psi.impl.source.tree.java.PsiReferenceExpressionImpl.getType(PsiReferenceExpressionImpl.java:337)
at com.intellij.psi.util.PsiUtil.getAccessObjectClass(PsiUtil.java:94)
at com.intellij.psi.impl.source.resolve.VariableResolverProcessor.<init>(VariableResolverProcessor.java:52)
at com.intellij.psi.impl.source.tree.java.PsiReferenceExpressionImpl.d(PsiReferenceExpressionImpl.java:244)
at com.intellij.psi.impl.source.tree.java.PsiReferenceExpressionImpl.a(PsiReferenceExpressionImpl.java:191)
at com.intellij.psi.impl.source.tree.java.PsiReferenceExpressionImpl.access$000(PsiReferenceExpressionImpl.java:60)
at com.intellij.psi.impl.source.tree.java.PsiReferenceExpressionImpl$OurGenericsResolver.a(PsiReferenceExpressionImpl.java:162)
at com.intellij.psi.impl.source.tree.java.PsiReferenceExpressionImpl$OurGenericsResolver.resolve(PsiReferenceExpressionImpl.java:171)
at com.intellij.psi.impl.source.tree.java.PsiReferenceExpressionImpl$OurGenericsResolver.resolve(PsiReferenceExpressionImpl.java:156)
at com.intellij.psi.impl.source.resolve.ResolveCache$1.compute(ResolveCache.java:118)
at com.intellij.openapi.util.RecursionManager$5.doPreventingRecursion(RecursionManager.java:97)
at com.intellij.psi.impl.source.resolve.ResolveCache.a(ResolveCache.java:123)
at com.intellij.psi.impl.source.resolve.ResolveCache.resolveWithCaching(ResolveCache.java:134)
at com.intellij.psi.impl.source.tree.java.PsiReferenceExpressionImpl.multiResolve(PsiReferenceExpressionImpl.java:256)
at com.intellij.psi.impl.source.tree.java.PsiReferenceExpressionImpl.advancedResolve(PsiReferenceExpressionImpl.java:420)
at com.intellij.psi.impl.source.tree.java.PsiReferenceExpressionImpl$TypeEvaluator.fun(PsiReferenceExpressionImpl.java:287)
at com.intellij.psi.impl.source.tree.java.PsiReferenceExpressionImpl$TypeEvaluator.fun(PsiReferenceExpressionImpl.java:285)
at com.intellij.psi.impl.source.resolve.JavaResolveCache.getType(JavaResolveCache.java:94)
at com.intellij.psi.impl.source.tree.java.PsiReferenceExpressionImpl.getType(PsiReferenceExpressionImpl.java:337)
at com.intellij.psi.util.PsiUtil.getAccessObjectClass(PsiUtil.java:94)
at com.intellij.psi.impl.source.resolve.VariableResolverProcessor.<init>(VariableResolverProcessor.java:52)
at com.intellij.psi.impl.source.tree.java.PsiReferenceExpressionImpl.d(PsiReferenceExpressionImpl.java:244)
at com.intellij.psi.impl.source.tree.java.PsiReferenceExpressionImpl.a(PsiReferenceExpressionImpl.java:191)
at com.intellij.psi.impl.source.tree.java.PsiReferenceExpressionImpl.access$000(PsiReferenceExpressionImpl.java:60)
at com.intellij.psi.impl.source.tree.java.PsiReferenceExpressionImpl$OurGenericsResolver.a(PsiReferenceExpressionImpl.java:162)
at com.intellij.psi.impl.source.tree.java.PsiReferenceExpressionImpl$OurGenericsResolver.resolve(PsiReferenceExpressionImpl.java:171)
at com.intellij.psi.impl.source.tree.java.PsiReferenceExpressionImpl$OurGenericsResolver.resolve(PsiReferenceExpressionImpl.java:156)
at com.intellij.psi.impl.source.resolve.ResolveCache$1.compute(ResolveCache.java:118)
at com.intellij.openapi.util.RecursionManager$5.doPreventingRecursion(RecursionManager.java:97)
at com.intellij.psi.impl.source.resolve.ResolveCache.a(ResolveCache.java:123)
at com.intellij.psi.impl.source.resolve.ResolveCache.resolveWithCaching(ResolveCache.java:134)
at com.intellij.psi.impl.source.tree.java.PsiReferenceExpressionImpl.multiResolve(PsiReferenceExpressionImpl.java:256)
at com.intellij.psi.impl.source.tree.java.PsiReferenceExpressionImpl.advancedResolve(PsiReferenceExpressionImpl.java:420)
at com.intellij.psi.impl.source.tree.java.PsiReferenceExpressionImpl.resolve(PsiReferenceExpressionImpl.java:147)
at com.intellij.psi.impl.source.tree.java.PsiReferenceExpressionImpl.isReferenceTo(PsiReferenceExpressionImpl.java:361)
at com.intellij.psi.search.SingleTargetRequestResultProcessor.processTextOccurrence(SingleTargetRequestResultProcessor.java:29)
at com.intellij.psi.impl.search.PsiSearchHelperImpl$14.execute(PsiSearchHelperImpl.java:626)
at com.intellij.psi.impl.search.LowLevelSearchUtil.a(LowLevelSearchUtil.java:116)
at com.intellij.psi.impl.search.LowLevelSearchUtil.processElementsContainingWordInElement(LowLevelSearchUtil.java:162)
at com.intellij.psi.impl.search.PsiSearchHelperImpl$5.process(PsiSearchHelperImpl.java:232)
at com.intellij.psi.impl.search.PsiSearchHelperImpl$5.process(PsiSearchHelperImpl.java:230)
at com.intellij.psi.impl.search.PsiSearchHelperImpl$6$2.run(PsiSearchHelperImpl.java:270)
at com.intellij.openapi.application.impl.ApplicationImpl.runReadAction(ApplicationImpl.java:790)
at com.intellij.psi.impl.search.PsiSearchHelperImpl$6.process(PsiSearchHelperImpl.java:262)
at com.intellij.psi.impl.search.PsiSearchHelperImpl$6.process(PsiSearchHelperImpl.java:253)
at com.intellij.concurrency.JobUtil$2$1.run(JobUtil.java:116)
at com.intellij.openapi.progress.impl.ProgressManagerImpl.executeProcessUnderProgress(ProgressManagerImpl.java:202)
at com.intellij.concurrency.JobUtil$2.process(JobUtil.java:114)
at com.intellij.concurrency.JobUtil$1.run(JobUtil.java:57)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
at java.util.concurrent.FutureTask.run(FutureTask.java:138)
at com.intellij.concurrency.PrioritizedFutureTask.access$101(PrioritizedFutureTask.java:31)
at com.intellij.concurrency.PrioritizedFutureTask$1.run(PrioritizedFutureTask.java:70)
at com.intellij.concurrency.PrioritizedFutureTask.run(PrioritizedFutureTask.java:113)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:662)
and immediately after
2011-10-04 11:41:24,587 [1076447] ERROR - m.intellij.concurrency.JobUtil - IntelliJ IDEA 10.5.2 Build #IU-107.587
2011-10-04 11:41:24,587 [1076447] ERROR - m.intellij.concurrency.JobUtil - JDK: 1.6.0_22
2011-10-04 11:41:24,587 [1076447] ERROR - m.intellij.concurrency.JobUtil - VM: Java HotSpot(TM) Client VM
2011-10-04 11:41:24,587 [1076447] ERROR - m.intellij.concurrency.JobUtil - Vendor: Sun Microsystems Inc.
2011-10-04 11:41:24,587 [1076447] ERROR - m.intellij.concurrency.JobUtil - OS: Windows XP
2011-10-04 11:41:24,587 [1076447] ERROR - m.intellij.concurrency.JobUtil - Last Action: FindUsages
2011-10-04 11:41:24,618 [1076478] ERROR - com.intellij.ide.IdeEventQueue - Error during dispatching of java.awt.event.InvocationEvent[INVOCATION_DEFAULT,runnable=com.intellij.diagnostic.DialogAppender$1@140cdbf,notifier=null,catchExceptions=false,when=1317721284587] on sun.awt.windows.WToolkit@1ace3f9
java.lang.IllegalAccessError: tried to access field org.apache.log4j.Category.aai from class org.apache.log4j.ESHierarchy
at org.apache.log4j.ESHierarchy.<init>(ESHierarchy.java:45)
at com.<custom>.es.logging.def.impl.log4j.ContextRepositorySelector.getLoggerRepository(ContextRepositorySelector.java:73)
at org.apache.log4j.LogManager.getLogger(LogManager.java:211)
at org.apache.log4j.Logger.getLogger(Logger.java:85)
at com.intellij.idea.LoggerFactory.getLoggerInstance(LoggerFactory.java:58)
at com.intellij.openapi.diagnostic.Logger.getInstance(Logger.java:38)
at com.intellij.diagnostic.IdeErrorsDialog.<clinit>(IdeErrorsDialog.java:74)
at com.intellij.diagnostic.DefaultIdeaErrorLogger.canHandle(DefaultIdeaErrorLogger.java:46)
at com.intellij.diagnostic.DialogAppender.appendToLoggers(DialogAppender.java:74)
at com.intellij.diagnostic.DialogAppender$1.run(DialogAppender.java:54)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:597)
at com.intellij.ide.IdeEventQueue.e(IdeEventQueue.java:662)
at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.java:515)
at com.intellij.ide.IdeEventQueue.b(IdeEventQueue.java:411)
at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:369)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
the top two classes on the stack are supplied by my Project's classpath, and I have no idea how they end up in IDEA's classpath ?
I have no idea if there can be any relation, but I have opened this proejct with current IDEA 11 EAP too, and it seems to behave the same way
请先登录再写评论。
Should I create a youtrack bug report directly, is this a known issue ?
Hi Thibaut,
What is your OS? How do you start IJ?
Can you check content of CLASSPATH env var on the moment of IJ startup?
Denis
this is using XP, I'm starting IDEA using the icons created during the install process, so nothing special here.
THe problem does go away when I remove the offending jar from my PROJECT (just to be clear, i do not touch IDEA's classpath) classpath
OS Global CLASSPATH does not have a reference to the custom log4j jar either
So, where does that 'icon' points? To *.exe? Can you try to start via idea.bat and check if that helps?
Denis
Unfortunately I've not been able to reproduce this last week.
I'll update this post (and submit a youtrack issue) if it happens again and in a reproducible manner