Bug 7294 - StackOverflowException during IType.getFields()
Summary: StackOverflowException during IType.getFields()
Status: RESOLVED WORKSFORME
Alias: None
Product: JDT
Classification: Eclipse Project
Component: Core (show other bugs)
Version: 2.0   Edit
Hardware: PC Windows 2000
: P3 normal (vote)
Target Milestone: 3.0 M2   Edit
Assignee: Philipe Mulet CLA
QA Contact:
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2002-01-06 02:57 EST by Kirill Frolov CLA
Modified: 2003-06-12 06:38 EDT (History)
0 users

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Kirill Frolov CLA 2002-01-06 02:57:39 EST
I got a smallplugin that parses all the members of all known classes.
I got a StackOberflowException when I parse some particular class (I found out 
that it was sun.misc.ProxyGenerator$ProxyMethod class on which I got this)

Actually my method 
org.eclipse.jdt.javadoc.internal.index.impl.Indexer.indexType is called for 
every source and binary types found in all the package fragments of the 
particular Java project.
My method in turn calls IType.getFields, IType.getMethods and IType.getSubTypes
(). Here is the stacktrace.

Actually there are some exceptions (like the first one) when I have no 
particular idea why they arise.

The stacktrace is peovided below (partially of course :-)) )

The .log file contents:

Log: Sun Jan 06 10:50:38 MSK 2002
4 org.eclipse.jdt.javadoc 0 MuxingAttributeNameEnumeration does not exist.
Java Model Exception: Java Model Status [MuxingAttributeNameEnumeration does 
not exist.]
	at org.eclipse.jdt.internal.core.JavaElement.newNotPresentException
(JavaElement.java:448)
	at org.eclipse.jdt.internal.core.BinaryType.getChildren
(BinaryType.java:95)
	at org.eclipse.jdt.internal.core.JavaElement.getChildrenOfType
(JavaElement.java:233)
	at org.eclipse.jdt.internal.core.BinaryType.getFields
(BinaryType.java:130)
	at org.eclipse.jdt.javadoc.internal.index.impl.Indexer.indexType
(Indexer.java:79)
	at org.eclipse.jdt.javadoc.internal.index.impl.Indexer.indexClass
(Indexer.java:170)
	at org.eclipse.jdt.javadoc.internal.index.impl.Indexer.indexClass
(Indexer.java:53)
	at test.Test.main(Test.java:30)
	at 
org.eclipse.jdt.javadoc.internal.views.ClassesSearchView$1.widgetSelected
(ClassesSearchView.java:51)
	at org.eclipse.swt.widgets.TypedListener.handleEvent
(TypedListener.java:85)
	at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:74)
	at org.eclipse.swt.widgets.Widget.notifyListeners(Widget.java:635)
	at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:1408)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:1200)
	at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:815)
	at org.eclipse.ui.internal.Workbench.run(Workbench.java:798)
	at org.eclipse.core.internal.boot.InternalBootLoader.run
(InternalBootLoader.java:821)
	at org.eclipse.core.boot.BootLoader.run(BootLoader.java:285)
	at java.lang.reflect.Method.invoke(Native Method)
	at org.eclipse.core.launcher.Main.basicRun(Main.java:151)
	at org.eclipse.core.launcher.Main.run(Main.java:502)
	at org.eclipse.core.launcher.UIMain.main(UIMain.java:52)
	4 org.eclipse.jdt.core 969 MuxingAttributeNameEnumeration does not 
exist.
Log: Sun Jan 06 10:50:38 MSK 2002
4 org.eclipse.jdt.javadoc 0 MuxingAttributeNameEnumeration does not exist.
Java Model Exception: Java Model Status [MuxingAttributeNameEnumeration does 
not exist.]
	at org.eclipse.jdt.internal.core.JavaElement.newNotPresentException
(JavaElement.java:448)
	at org.eclipse.jdt.internal.core.BinaryType.getChildren
(BinaryType.java:95)
	at org.eclipse.jdt.internal.core.JavaElement.getChildrenOfType
(JavaElement.java:233)
	at org.eclipse.jdt.internal.core.BinaryType.getMethods
(BinaryType.java:179)
	at org.eclipse.jdt.javadoc.internal.index.impl.Indexer.indexType
(Indexer.java:101)
	at org.eclipse.jdt.javadoc.internal.index.impl.Indexer.indexClass
(Indexer.java:170)
	at org.eclipse.jdt.javadoc.internal.index.impl.Indexer.indexClass
(Indexer.java:53)
	at test.Test.main(Test.java:30)
	at 
org.eclipse.jdt.javadoc.internal.views.ClassesSearchView$1.widgetSelected
(ClassesSearchView.java:51)
	at org.eclipse.swt.widgets.TypedListener.handleEvent
(TypedListener.java:85)
	at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:74)
	at org.eclipse.swt.widgets.Widget.notifyListeners(Widget.java:635)
	at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:1408)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:1200)
	at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:815)
	at org.eclipse.ui.internal.Workbench.run(Workbench.java:798)
	at org.eclipse.core.internal.boot.InternalBootLoader.run
(InternalBootLoader.java:821)
	at org.eclipse.core.boot.BootLoader.run(BootLoader.java:285)
	at java.lang.reflect.Method.invoke(Native Method)
	at org.eclipse.core.launcher.Main.basicRun(Main.java:151)
	at org.eclipse.core.launcher.Main.run(Main.java:502)
	at org.eclipse.core.launcher.UIMain.main(UIMain.java:52)
	4 org.eclipse.jdt.core 969 MuxingAttributeNameEnumeration does not 
exist.
Log: Sun Jan 06 10:50:38 MSK 2002
4 org.eclipse.jdt.javadoc 0 MuxingAttributeNameEnumeration does not exist.
Java Model Exception: Java Model Status [MuxingAttributeNameEnumeration does 
not exist.]
	at org.eclipse.jdt.internal.core.JavaElement.newNotPresentException
(JavaElement.java:448)
	at org.eclipse.jdt.internal.core.BinaryType.getChildren
(BinaryType.java:95)
	at org.eclipse.jdt.internal.core.JavaElement.getChildrenOfType
(JavaElement.java:233)
	at org.eclipse.jdt.internal.core.BinaryType.getTypes
(BinaryType.java:262)
	at org.eclipse.jdt.javadoc.internal.index.impl.Indexer.indexType
(Indexer.java:120)
	at org.eclipse.jdt.javadoc.internal.index.impl.Indexer.indexClass
(Indexer.java:170)
	at org.eclipse.jdt.javadoc.internal.index.impl.Indexer.indexClass
(Indexer.java:53)
	at test.Test.main(Test.java:30)
	at 
org.eclipse.jdt.javadoc.internal.views.ClassesSearchView$1.widgetSelected
(ClassesSearchView.java:51)
	at org.eclipse.swt.widgets.TypedListener.handleEvent
(TypedListener.java:85)
	at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:74)
	at org.eclipse.swt.widgets.Widget.notifyListeners(Widget.java:635)
	at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:1408)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:1200)
	at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:815)
	at org.eclipse.ui.internal.Workbench.run(Workbench.java:798)
	at org.eclipse.core.internal.boot.InternalBootLoader.run
(InternalBootLoader.java:821)
	at org.eclipse.core.boot.BootLoader.run(BootLoader.java:285)
	at java.lang.reflect.Method.invoke(Native Method)
	at org.eclipse.core.launcher.Main.basicRun(Main.java:151)
	at org.eclipse.core.launcher.Main.run(Main.java:502)
	at org.eclipse.core.launcher.UIMain.main(UIMain.java:52)
	4 org.eclipse.jdt.core 969 MuxingAttributeNameEnumeration does not 
exist.
Log: Sun Jan 06 10:50:38 MSK 2002
4 org.eclipse.jdt.javadoc 0 ResolvedStyle does not exist.
Java Model Exception: Java Model Status [ResolvedStyle does not exist.]
	at org.eclipse.jdt.internal.core.JavaElement.newNotPresentException
(JavaElement.java:448)
	at org.eclipse.jdt.internal.core.BinaryType.getChildren
(BinaryType.java:95)
	at org.eclipse.jdt.internal.core.JavaElement.getChildrenOfType
(JavaElement.java:233)
	at org.eclipse.jdt.internal.core.BinaryType.getFields
(BinaryType.java:130)
	at org.eclipse.jdt.javadoc.internal.index.impl.Indexer.indexClass
(Indexer.java:135)
	at org.eclipse.jdt.javadoc.internal.index.impl.Indexer.indexClass
(Indexer.java:53)
	at test.Test.main(Test.java:30)
	at 
org.eclipse.jdt.javadoc.internal.views.ClassesSearchView$1.widgetSelected
(ClassesSearchView.java:51)
	at org.eclipse.swt.widgets.TypedListener.handleEvent
(TypedListener.java:85)
	at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:74)
	at org.eclipse.swt.widgets.Widget.notifyListeners(Widget.java:635)
	at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:1408)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:1200)
	at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:815)
	at org.eclipse.ui.internal.Workbench.run(Workbench.java:798)
	at org.eclipse.core.internal.boot.InternalBootLoader.run
(InternalBootLoader.java:821)
	at org.eclipse.core.boot.BootLoader.run(BootLoader.java:285)
	at java.lang.reflect.Method.invoke(Native Method)
	at org.eclipse.core.launcher.Main.basicRun(Main.java:151)
	at org.eclipse.core.launcher.Main.run(Main.java:502)
	at org.eclipse.core.launcher.UIMain.main(UIMain.java:52)
	4 org.eclipse.jdt.core 969 ResolvedStyle does not exist.
Log: Sun Jan 06 10:50:38 MSK 2002
4 org.eclipse.jdt.javadoc 0 ResolvedStyle does not exist.
Java Model Exception: Java Model Status [ResolvedStyle does not exist.]
	at org.eclipse.jdt.internal.core.JavaElement.newNotPresentException
(JavaElement.java:448)
	at org.eclipse.jdt.internal.core.BinaryType.getChildren
(BinaryType.java:95)
	at org.eclipse.jdt.internal.core.JavaElement.getChildrenOfType
(JavaElement.java:233)
	at org.eclipse.jdt.internal.core.BinaryType.getMethods
(BinaryType.java:179)
	at org.eclipse.jdt.javadoc.internal.index.impl.Indexer.indexClass
(Indexer.java:152)
	at org.eclipse.jdt.javadoc.internal.index.impl.Indexer.indexClass
(Indexer.java:53)
	at test.Test.main(Test.java:30)
	at 
org.eclipse.jdt.javadoc.internal.views.ClassesSearchView$1.widgetSelected
(ClassesSearchView.java:51)
	at org.eclipse.swt.widgets.TypedListener.handleEvent
(TypedListener.java:85)
	at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:74)
	at org.eclipse.swt.widgets.Widget.notifyListeners(Widget.java:635)
	at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:1408)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:1200)
	at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:815)
	at org.eclipse.ui.internal.Workbench.run(Workbench.java:798)
	at org.eclipse.core.internal.boot.InternalBootLoader.run
(InternalBootLoader.java:821)
	at org.eclipse.core.boot.BootLoader.run(BootLoader.java:285)
	at java.lang.reflect.Method.invoke(Native Method)
	at org.eclipse.core.launcher.Main.basicRun(Main.java:151)
	at org.eclipse.core.launcher.Main.run(Main.java:502)
	at org.eclipse.core.launcher.UIMain.main(UIMain.java:52)
	4 org.eclipse.jdt.core 969 ResolvedStyle does not exist.
Log: Sun Jan 06 10:50:38 MSK 2002
4 org.eclipse.jdt.javadoc 0 ResolvedStyle does not exist.
Java Model Exception: Java Model Status [ResolvedStyle does not exist.]
	at org.eclipse.jdt.internal.core.JavaElement.newNotPresentException
(JavaElement.java:448)
	at org.eclipse.jdt.internal.core.BinaryType.getChildren
(BinaryType.java:95)
	at org.eclipse.jdt.internal.core.JavaElement.getChildrenOfType
(JavaElement.java:233)
	at org.eclipse.jdt.internal.core.BinaryType.getTypes
(BinaryType.java:262)
	at org.eclipse.jdt.javadoc.internal.index.impl.Indexer.indexClass
(Indexer.java:166)
	at org.eclipse.jdt.javadoc.internal.index.impl.Indexer.indexClass
(Indexer.java:53)
	at test.Test.main(Test.java:30)
	at 
org.eclipse.jdt.javadoc.internal.views.ClassesSearchView$1.widgetSelected
(ClassesSearchView.java:51)
	at org.eclipse.swt.widgets.TypedListener.handleEvent
(TypedListener.java:85)
	at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:74)
	at org.eclipse.swt.widgets.Widget.notifyListeners(Widget.java:635)
	at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:1408)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:1200)
	at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:815)
	at org.eclipse.ui.internal.Workbench.run(Workbench.java:798)
	at org.eclipse.core.internal.boot.InternalBootLoader.run
(InternalBootLoader.java:821)
	at org.eclipse.core.boot.BootLoader.run(BootLoader.java:285)
	at java.lang.reflect.Method.invoke(Native Method)
	at org.eclipse.core.launcher.Main.basicRun(Main.java:151)
	at org.eclipse.core.launcher.Main.run(Main.java:502)
	at org.eclipse.core.launcher.UIMain.main(UIMain.java:52)
	4 org.eclipse.jdt.core 969 ResolvedStyle does not exist.
Log: Sun Jan 06 10:50:39 MSK 2002
4 org.eclipse.jdt.javadoc 0 ResolvedStyle does not exist.
Java Model Exception: Java Model Status [ResolvedStyle does not exist.]
	at org.eclipse.jdt.internal.core.JavaElement.newNotPresentException
(JavaElement.java:448)
	at org.eclipse.jdt.internal.core.BinaryType.getChildren
(BinaryType.java:95)
	at org.eclipse.jdt.internal.core.JavaElement.getChildrenOfType
(JavaElement.java:233)
	at org.eclipse.jdt.internal.core.BinaryType.getFields
(BinaryType.java:130)
	at org.eclipse.jdt.javadoc.internal.index.impl.Indexer.indexType
(Indexer.java:79)
	at org.eclipse.jdt.javadoc.internal.index.impl.Indexer.indexClass
(Indexer.java:170)
	at org.eclipse.jdt.javadoc.internal.index.impl.Indexer.indexClass
(Indexer.java:53)
	at test.Test.main(Test.java:30)
	at 
org.eclipse.jdt.javadoc.internal.views.ClassesSearchView$1.widgetSelected
(ClassesSearchView.java:51)
	at org.eclipse.swt.widgets.TypedListener.handleEvent
(TypedListener.java:85)
	at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:74)
	at org.eclipse.swt.widgets.Widget.notifyListeners(Widget.java:635)
	at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:1408)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:1200)
	at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:815)
	at org.eclipse.ui.internal.Workbench.run(Workbench.java:798)
	at org.eclipse.core.internal.boot.InternalBootLoader.run
(InternalBootLoader.java:821)
	at org.eclipse.core.boot.BootLoader.run(BootLoader.java:285)
	at java.lang.reflect.Method.invoke(Native Method)
	at org.eclipse.core.launcher.Main.basicRun(Main.java:151)
	at org.eclipse.core.launcher.Main.run(Main.java:502)
	at org.eclipse.core.launcher.UIMain.main(UIMain.java:52)
	4 org.eclipse.jdt.core 969 ResolvedStyle does not exist.
Log: Sun Jan 06 10:50:39 MSK 2002
4 org.eclipse.jdt.javadoc 0 ResolvedStyle does not exist.
Java Model Exception: Java Model Status [ResolvedStyle does not exist.]
	at org.eclipse.jdt.internal.core.JavaElement.newNotPresentException
(JavaElement.java:448)
	at org.eclipse.jdt.internal.core.BinaryType.getChildren
(BinaryType.java:95)
	at org.eclipse.jdt.internal.core.JavaElement.getChildrenOfType
(JavaElement.java:233)
	at org.eclipse.jdt.internal.core.BinaryType.getMethods
(BinaryType.java:179)
	at org.eclipse.jdt.javadoc.internal.index.impl.Indexer.indexType
(Indexer.java:101)
	at org.eclipse.jdt.javadoc.internal.index.impl.Indexer.indexClass
(Indexer.java:170)
	at org.eclipse.jdt.javadoc.internal.index.impl.Indexer.indexClass
(Indexer.java:53)
	at test.Test.main(Test.java:30)
	at 
org.eclipse.jdt.javadoc.internal.views.ClassesSearchView$1.widgetSelected
(ClassesSearchView.java:51)
	at org.eclipse.swt.widgets.TypedListener.handleEvent
(TypedListener.java:85)
	at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:74)
	at org.eclipse.swt.widgets.Widget.notifyListeners(Widget.java:635)
	at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:1408)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:1200)
	at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:815)
	at org.eclipse.ui.internal.Workbench.run(Workbench.java:798)
	at org.eclipse.core.internal.boot.InternalBootLoader.run
(InternalBootLoader.java:821)
	at org.eclipse.core.boot.BootLoader.run(BootLoader.java:285)
	at java.lang.reflect.Method.invoke(Native Method)
	at org.eclipse.core.launcher.Main.basicRun(Main.java:151)
	at org.eclipse.core.launcher.Main.run(Main.java:502)
	at org.eclipse.core.launcher.UIMain.main(UIMain.java:52)
	4 org.eclipse.jdt.core 969 ResolvedStyle does not exist.
Log: Sun Jan 06 10:50:39 MSK 2002
4 org.eclipse.jdt.javadoc 0 ResolvedStyle does not exist.
Java Model Exception: Java Model Status [ResolvedStyle does not exist.]
	at org.eclipse.jdt.internal.core.JavaElement.newNotPresentException
(JavaElement.java:448)
	at org.eclipse.jdt.internal.core.BinaryType.getChildren
(BinaryType.java:95)
	at org.eclipse.jdt.internal.core.JavaElement.getChildrenOfType
(JavaElement.java:233)
	at org.eclipse.jdt.internal.core.BinaryType.getTypes
(BinaryType.java:262)
	at org.eclipse.jdt.javadoc.internal.index.impl.Indexer.indexType
(Indexer.java:120)
	at org.eclipse.jdt.javadoc.internal.index.impl.Indexer.indexClass
(Indexer.java:170)
	at org.eclipse.jdt.javadoc.internal.index.impl.Indexer.indexClass
(Indexer.java:53)
	at test.Test.main(Test.java:30)
	at 
org.eclipse.jdt.javadoc.internal.views.ClassesSearchView$1.widgetSelected
(ClassesSearchView.java:51)
	at org.eclipse.swt.widgets.TypedListener.handleEvent
(TypedListener.java:85)
	at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:74)
	at org.eclipse.swt.widgets.Widget.notifyListeners(Widget.java:635)
	at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:1408)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:1200)
	at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:815)
	at org.eclipse.ui.internal.Workbench.run(Workbench.java:798)
	at org.eclipse.core.internal.boot.InternalBootLoader.run
(InternalBootLoader.java:821)
	at org.eclipse.core.boot.BootLoader.run(BootLoader.java:285)
	at java.lang.reflect.Method.invoke(Native Method)
	at org.eclipse.core.launcher.Main.basicRun(Main.java:151)
	at org.eclipse.core.launcher.Main.run(Main.java:502)
	at org.eclipse.core.launcher.UIMain.main(UIMain.java:52)
	4 org.eclipse.jdt.core 969 ResolvedStyle does not exist.
Log: Sun Jan 06 10:51:24 MSK 2002
4 org.eclipse.jdt.javadoc 0 ---
java.lang.StackOverflowError
	at java.lang.Class.newInstance(Class.java:237)
	at sun.io.Converters.newConverter(Converters.java:120)
	at sun.io.Converters.newDefaultConverter(Converters.java:215)
	at sun.io.CharToByteConverter.getDefault(CharToByteConverter.java:55)
	at java.lang.String.getBytes(String.java:685)
	at java.util.zip.ZipFile.open(Native Method)
	at java.util.zip.ZipFile.<init>(ZipFile.java:110)
	at java.util.zip.ZipFile.<init>(ZipFile.java:75)
	at org.eclipse.jdt.internal.core.JavaModelManager.getZipFile
(JavaModelManager.java:847)
	at org.eclipse.jdt.internal.core.JarPackageFragmentRoot.getJar
(JarPackageFragmentRoot.java:427)
	at org.eclipse.jdt.internal.core.ClassFile.getBinaryTypeInfo
(ClassFile.java:142)
	at org.eclipse.jdt.internal.core.ClassFile.generateInfos
(ClassFile.java:108)
	at org.eclipse.jdt.internal.core.Openable.buildStructure
(Openable.java:62)
	at org.eclipse.jdt.internal.core.Openable.openWhenClosed
(Openable.java:370)
	at org.eclipse.jdt.internal.core.JavaElement.openHierarchy
(JavaElement.java:469)
	at org.eclipse.jdt.internal.core.JavaElement.getElementInfo
(JavaElement.java:267)
	at org.eclipse.jdt.internal.core.BinaryType.getClassFileInfo
(BinaryType.java:103)
	at org.eclipse.jdt.internal.core.BinaryType.close(BinaryType.java:39)
	at org.eclipse.jdt.internal.core.BinaryType.close(BinaryType.java:45)
	at org.eclipse.jdt.internal.core.JavaElement.close(JavaElement.java:99)
	at org.eclipse.jdt.internal.core.ElementCache.close
(ElementCache.java:49)
	at org.eclipse.jdt.internal.core.OverflowingLRUCache.privateRemoveEntry
(OverflowingLRUCache.java:282)
	at org.eclipse.jdt.internal.core.OverflowingLRUCache.makeSpace
(OverflowingLRUCache.java:168)
	at org.eclipse.jdt.internal.core.OverflowingLRUCache.shrink
(OverflowingLRUCache.java:390)
	at org.eclipse.jdt.internal.core.OverflowingLRUCache.put
(OverflowingLRUCache.java:315)
	at org.eclipse.jdt.internal.core.JavaModelManager.putInfo
(JavaModelManager.java:934)
	at org.eclipse.jdt.internal.core.Openable.buildStructure
(Openable.java:72)
	at org.eclipse.jdt.internal.core.Openable.openWhenClosed
(Openable.java:370)
	at org.eclipse.jdt.internal.core.JavaElement.openHierarchy
(JavaElement.java:469)
	at org.eclipse.jdt.internal.core.JavaElement.getElementInfo
(JavaElement.java:267)
	at org.eclipse.jdt.internal.core.BinaryType.getClassFileInfo
(BinaryType.java:103)
	at org.eclipse.jdt.internal.core.BinaryType.close(BinaryType.java:39)
	at org.eclipse.jdt.internal.core.BinaryType.close(BinaryType.java:45)
	at org.eclipse.jdt.internal.core.JavaElement.close(JavaElement.java:99)
	at org.eclipse.jdt.internal.core.ElementCache.close
(ElementCache.java:49)
	at org.eclipse.jdt.internal.core.OverflowingLRUCache.privateRemoveEntry
(OverflowingLRUCache.java:282)
	at org.eclipse.jdt.internal.core.OverflowingLRUCache.makeSpace
(OverflowingLRUCache.java:168)
	at org.eclipse.jdt.internal.core.OverflowingLRUCache.shrink
(OverflowingLRUCache.java:390)
	at org.eclipse.jdt.internal.core.OverflowingLRUCache.put
(OverflowingLRUCache.java:315)
	at org.eclipse.jdt.internal.core.JavaModelManager.putInfo
(JavaModelManager.java:934)
	at org.eclipse.jdt.internal.core.Openable.buildStructure
(Openable.java:72)
	at org.eclipse.jdt.internal.core.Openable.openWhenClosed
(Openable.java:370)
	at org.eclipse.jdt.internal.core.JavaElement.openHierarchy
(JavaElement.java:469)
	at org.eclipse.jdt.internal.core.JavaElement.getElementInfo
(JavaElement.java:267)
	at org.eclipse.jdt.internal.core.BinaryType.getClassFileInfo
(BinaryType.java:103)
	at org.eclipse.jdt.internal.core.BinaryType.close(BinaryType.java:39)
	at org.eclipse.jdt.internal.core.BinaryType.close(BinaryType.java:45)
	at org.eclipse.jdt.internal.core.JavaElement.close(JavaElement.java:99)
	at org.eclipse.jdt.internal.core.ElementCache.close
(ElementCache.java:49)
	at org.eclipse.jdt.internal.core.OverflowingLRUCache.privateRemoveEntry
(OverflowingLRUCache.java:282)
	at org.eclipse.jdt.internal.core.OverflowingLRUCache.makeSpace
(OverflowingLRUCache.java:168)
	at org.eclipse.jdt.internal.core.OverflowingLRUCache.shrink
(OverflowingLRUCache.java:390)
	at org.eclipse.jdt.internal.core.OverflowingLRUCache.put
(OverflowingLRUCache.java:315)
	at org.eclipse.jdt.internal.core.JavaModelManager.putInfo
(JavaModelManager.java:934)
	at org.eclipse.jdt.internal.core.Openable.buildStructure
(Openable.java:72)
	at org.eclipse.jdt.internal.core.Openable.openWhenClosed
(Openable.java:370)
	at org.eclipse.jdt.internal.core.JavaElement.openHierarchy
(JavaElement.java:469)

and so on
and so on
and so on

	at org.eclipse.jdt.internal.core.BinaryType.close(BinaryType.java:39)
	at org.eclipse.jdt.internal.core.BinaryType.close(BinaryType.java:45)
	at org.eclipse.jdt.internal.core.JavaElement.close(JavaElement.java:99)
	at org.eclipse.jdt.internal.core.ElementCache.close
(ElementCache.java:49)
	at org.eclipse.jdt.internal.core.OverflowingLRUCache.privateRemoveEntry
(OverflowingLRUCache.java:282)
	at org.eclipse.jdt.internal.core.OverflowingLRUCache.makeSpace
(OverflowingLRUCache.java:168)
	at org.eclipse.jdt.internal.core.OverflowingLRUCache.shrink
(OverflowingLRUCache.java:390)
	at org.eclipse.jdt.internal.core.OverflowingLRUCache.put
(OverflowingLRUCache.java:315)
	at org.eclipse.jdt.internal.core.JavaModelManager.putInfo
(JavaModelManager.java:934)
	at org.eclipse.jdt.internal.core.Openable.buildStructure
(Openable.java:72)
	at org.eclipse.jdt.internal.core.Openable.openWhenClosed
(Openable.java:370)
	at org.eclipse.jdt.internal.core.JavaElement.openHierarchy
(JavaElement.java:469)
	at org.eclipse.jdt.internal.core.JavaElement.getElementInfo
(JavaElement.java:267)

and the same exception once again
Comment 1 Philipe Mulet CLA 2002-01-07 06:38:26 EST
Stack overflow does not mean circularity, it simply means that the execution 
stack is too deep (too many nested method calls).

Some of the operation performed by the JavaModel, like hierarchy creations can 
be somewhat expensive, and should be used reasonabily.

As for the Java model exceptions you are seing, those are described in the API, 
e.g.:

public interface IParent {
/**
 * Returns the immediate children of this element.
 * Unless otherwise specified by the implementing element,
 * the children are in no particular order.
 *
 * @exception JavaModelException if this element does not exist or if an
 *      exception occurs while accessing its corresponding resource
 */
IJavaElement[] getChildren() throws JavaModelException;

So in brief, this bug does not necessarily indicate anything wrong in our 
implementation, but probably indicates your plugin is too intensive on CPU (you 
might want to play with the runtime stack size - setting on the VM side), or 
change your algorithm to be more lightweight.

Is it ok to close ? Or do you have more specific information available that 
would clearly expose a bug in our code ?
Comment 2 Kirill Frolov CLA 2002-01-10 03:31:26 EST
Well, actually, bug reproduces even when java.exe runtime parameters include -
Xss2M (2 megabyte of stack space per thread). I do think that this situation is 
abnormal.
Comment 3 Kirill Frolov CLA 2002-01-10 03:44:16 EST
Besides it seems that the pair of classe BinaryType and OverflowingLRUCache 
form some form of circular algorithm without an exit. Here is the circle element

at org.eclipse.jdt.internal.core.BinaryType.getClassFileInfo
(BinaryType.java:103)
	at org.eclipse.jdt.internal.core.BinaryType.close(BinaryType.java:39)
	at org.eclipse.jdt.internal.core.BinaryType.close(BinaryType.java:45)
	at org.eclipse.jdt.internal.core.JavaElement.close(JavaElement.java:99)
	at org.eclipse.jdt.internal.core.ElementCache.close
(ElementCache.java:49)
	at org.eclipse.jdt.internal.core.OverflowingLRUCache.privateRemoveEntry
(OverflowingLRUCache.java:282)
	at org.eclipse.jdt.internal.core.OverflowingLRUCache.makeSpace
(OverflowingLRUCache.java:168)
	at org.eclipse.jdt.internal.core.OverflowingLRUCache.shrink
(OverflowingLRUCache.java:390)
	at org.eclipse.jdt.internal.core.OverflowingLRUCache.put
(OverflowingLRUCache.java:315)
	at org.eclipse.jdt.internal.core.JavaModelManager.putInfo
(JavaModelManager.java:934)
	at org.eclipse.jdt.internal.core.Openable.buildStructure
(Openable.java:72)
	at org.eclipse.jdt.internal.core.Openable.openWhenClosed
(Openable.java:370)
	at org.eclipse.jdt.internal.core.JavaElement.openHierarchy
(JavaElement.java:469)
	at org.eclipse.jdt.internal.core.JavaElement.getElementInfo
(JavaElement.java:267)

I cannot find any reason for this functions to enter the infinite iterative 
loop thus overflowing the stack. There should be no case for this functions to 
call themselves infinely. And this IS an error.
Comment 4 Philipe Mulet CLA 2002-01-29 18:39:19 EST
Sounds nasty, need to investigate.

What are the classfiles you are trying to open ? The content of the ouput 
location of a project ? These would pretend not to exist (since not on the 
classpath). But this doesn't explain why flushing the cache would cause an 
infinite loop.
Comment 5 Kirill Frolov CLA 2002-02-01 08:01:44 EST
First, the classfile is
sun.misc.ProxyGenerator$ProxyMethod

Second, the project's name is "Eclipse" and it has the default output location 
<Eclipse>/Workspace/Eclipse/bin

Actually the problem may arise because of the VERY special nature of the class. 
And when you simply try to load this very class and find out its methods and 
attributes it works fine. The exception is only occures when you load class by 
class all Project classes and all JDK classes. I can supply the exact piece of 
code that reproduces the problem.
Comment 6 Philipe Mulet CLA 2002-02-01 13:20:27 EST
This would be very nice of you. A reproduceable scenario is exactly what we 
need. 
Comment 7 Philipe Mulet CLA 2002-02-11 07:12:01 EST
Waiting for a test case. Please reopen when it becomes available
Comment 8 Philipe Mulet CLA 2003-06-12 06:37:54 EDT
Waiting for information
Comment 9 Philipe Mulet CLA 2003-06-12 06:38:31 EDT
Closing as never reproduced in a long time.