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
0

Should I create a youtrack bug report directly, is this a known issue ?

0

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

0

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

0

So, where does that 'icon' points? To *.exe? Can you try to start via idea.bat and check if that helps?

Denis

0

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

0

请先登录再写评论。