Bug 137218 - Eclipse hanging on startup, during build
Summary: Eclipse hanging on startup, during build
Status: RESOLVED WORKSFORME
Alias: None
Product: JDT
Classification: Eclipse Project
Component: Core (show other bugs)
Version: 3.2   Edit
Hardware: PC Windows XP
: P3 normal (vote)
Target Milestone: ---   Edit
Assignee: Jerome Lanneluc CLA
QA Contact:
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2006-04-18 10:33 EDT by Joachim Heck CLA
Modified: 2006-04-19 08:30 EDT (History)
2 users (show)

See Also:


Attachments
Readable thread dump (16.35 KB, text/plain)
2006-04-19 06:59 EDT, Jerome Lanneluc CLA
no flags Details

Note You need to log in before you can comment on or make changes to this bug.
Description Joachim Heck CLA 2006-04-18 10:33:46 EDT
Eclipse is hanging on startup, while it tries to build my workspace.  I start Eclipse and the Progress tab appears with two items: Building Workspace and Initializing Java Tooling (Checking consistency of type history).  Neither task makes any progress and although the menus and toolbar buttons still work, any task I start with them gets stuck behind those two.  Cancelling the two tasks has no effect except to mark them cancelled.  I've included a stack trace, which hopefully can help shed some light on this strange (and sudden) behavior.

  Since I can't get it to boot, I'm not certain what the build date is, but the install executable is labelled SDK-3.2M5a, and the newest jar in it is dated 2006-02-17.


C:\Program Files\eclipse>java -jar startup.jar
Full thread dump Java HotSpot(TM) Client VM (1.5.0_06-b05 mixed mode):

"Worker-6" prio=6 tid=0x0acb08d8 nid=0x5b0 in Object.wait() [0x0c36f000..0x0c36fd68]
        at java.lang.Object.wait(Native Method)
        - waiting on <0x03033900> (a org.eclipse.core.internal.jobs.WorkerPool)
        at org.eclipse.core.internal.jobs.WorkerPool.sleep(WorkerPool.java:173)
        - locked <0x03033900> (a org.eclipse.core.internal.jobs.WorkerPool)
        at org.eclipse.core.internal.jobs.WorkerPool.startJob(WorkerPool.java:205)
        at org.eclipse.core.internal.jobs.Worker.run(Worker.java:51)

"Worker-5" prio=6 tid=0x0ae57f38 nid=0xbd0 waiting on condition [0x0c32f000..0x0c32f9e8]
        at java.lang.Thread.sleep(Native Method)
        at org.eclipse.jdt.internal.core.search.processing.JobManager$1$ProgressJob.run(JobManager.java:323)
        at org.eclipse.core.internal.jobs.Worker.run(Worker.java:58)

"Text Viewer Hover Presenter" daemon prio=2 tid=0x0b276c30 nid=0x1dc in Object.wait() [0x0c2ef000..0x0c2efa68]
        at java.lang.Object.wait(Native Method)
        - waiting on <0x03385478> (a java.lang.Object)
        at java.lang.Object.wait(Unknown Source)
        at org.eclipse.jdt.internal.ui.javaeditor.ASTProvider.getAST(ASTProvider.java:488)
        - locked <0x03385478> (a java.lang.Object)
        at org.eclipse.jdt.internal.ui.text.java.hover.NLSStringHover.getHoverInfo(NLSStringHover.java:84)
        at org.eclipse.jdt.internal.ui.text.java.hover.BestMatchHover.getHoverInfo(BestMatchHover.java:102)
        at org.eclipse.jdt.internal.ui.text.java.hover.JavaEditorTextHoverProxy.getHoverInfo(JavaEditorTextHoverProxy.java:69)
        at org.eclipse.jface.text.TextViewerHoverManager$4.run(TextViewerHoverManager.java:160)

"Worker-4" prio=6 tid=0x0b25a920 nid=0xe34 runnable [0x0c2af000..0x0c2afae8]
        at java.util.zip.ZipFile.getNextEntry(Native Method)
        at java.util.zip.ZipFile.access$700(Unknown Source)
        at java.util.zip.ZipFile$3.nextElement(Unknown Source)
        - locked <0x03904488> (a java.util.zip.ZipFile)
        at java.util.zip.ZipFile$3.nextElement(Unknown Source)
        at org.eclipse.jdt.internal.core.builder.ClasspathJar.findPackageSet(ClasspathJar.java:61)
        at org.eclipse.jdt.internal.core.builder.ClasspathJar.isPackage(ClasspathJar.java:172)
        at org.eclipse.jdt.internal.core.builder.ClasspathJar.findClass(ClasspathJar.java:140)
        at org.eclipse.jdt.internal.core.builder.NameEnvironment.findClass(NameEnvironment.java:302)

        at org.eclipse.jdt.internal.core.builder.NameEnvironment.findType(NameEnvironment.java:328)
        at org.eclipse.jdt.internal.compiler.lookup.LookupEnvironment.createPackage(LookupEnvironment.java:549)
        at org.eclipse.jdt.internal.compiler.lookup.CompilationUnitScope.buildTypeBindings(CompilationUnitScope.java:85)
        at org.eclipse.jdt.internal.compiler.lookup.LookupEnvironment.buildTypeBindings(LookupEnvironment.java:144)
        at org.eclipse.jdt.internal.compiler.Compiler.beginToCompile(Compiler.java:411)
        at org.eclipse.jdt.internal.compiler.Compiler.compile(Compiler.java:434)
        at org.eclipse.jdt.internal.core.builder.AbstractImageBuilder.compile(AbstractImageBuilder.java:287)
        at org.eclipse.jdt.internal.core.builder.AbstractImageBuilder.compile(AbstractImageBuilder.java:229)
        at org.eclipse.jdt.internal.core.builder.BatchImageBuilder.build(BatchImageBuilder.java:50)
        at org.eclipse.jdt.internal.core.builder.JavaBuilder.buildAll(JavaBuilder.java:214)
        at org.eclipse.jdt.internal.core.builder.JavaBuilder.build(JavaBuilder.java:137)
        at org.eclipse.core.internal.events.BuildManager$2.run(BuildManager.java:593)
        at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37)
        at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:168)
        at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:202)
        at org.eclipse.core.internal.events.BuildManager$1.run(BuildManager.java:231)
        at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37)
        at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:234)
        at org.eclipse.core.internal.events.BuildManager.basicBuildLoop(BuildManager.java:253)
        at org.eclipse.core.internal.events.BuildManager.build(BuildManager.java:282)
        at org.eclipse.core.internal.events.AutoBuildJob.doBuild(AutoBuildJob.java:143)
        at org.eclipse.core.internal.events.AutoBuildJob.run(AutoBuildJob.java:204)
        at org.eclipse.core.internal.jobs.Worker.run(Worker.java:58)

"Worker-3" prio=6 tid=0x0af26bc0 nid=0xbd4 runnable [0x0c26f000..0x0c26fb68]
        at java.util.zip.ZipFile.freeEntry(Native Method)
        at java.util.zip.ZipFile.access$1100(Unknown Source)
        at java.util.zip.ZipFile$3.nextElement(Unknown Source)
        - locked <0x03904778> (a java.util.zip.ZipFile)
        at java.util.zip.ZipFile$3.nextElement(Unknown Source)
        at org.eclipse.jdt.internal.core.JarPackageFragmentRoot.computeChildren(JarPackageFragmentRoot.java:86)
        at org.eclipse.jdt.internal.core.PackageFragmentRoot.buildStructure(PackageFragmentRoot.java:170)
        at org.eclipse.jdt.internal.core.Openable.generateInfos(Openable.java:229)
        at org.eclipse.jdt.internal.core.JarPackageFragment.generateInfos(JarPackageFragment.java:113)
        at org.eclipse.jdt.internal.core.JavaElement.openWhenClosed(JavaElement.java:503)
        at org.eclipse.jdt.internal.core.JavaElement.getElementInfo(JavaElement.java:247)
        at org.eclipse.jdt.internal.core.JavaElement.getElementInfo(JavaElement.java:233)
        at org.eclipse.jdt.internal.core.JavaElement.exists(JavaElement.java:151)
        at org.eclipse.jdt.internal.core.Openable.exists(Openable.java:184)
        at org.eclipse.jdt.internal.core.Openable.parentExists(Openable.java:432)
        at org.eclipse.jdt.internal.core.Openable.exists(Openable.java:178)
        at org.eclipse.jdt.internal.core.ClassFile.exists(ClassFile.java:175)
        at org.eclipse.jdt.internal.corext.util.JarFileEntryTypeInfo.findElementInRoot(JarFileEntryTypeInfo.java:113)
        at org.eclipse.jdt.internal.corext.util.JarFileEntryTypeInfo.getContainer(JarFileEntryTypeInfo.java:82)
        at org.eclipse.jdt.internal.corext.util.TypeInfo.resolveType(TypeInfo.java:246)
        at org.eclipse.jdt.internal.corext.util.OpenTypeHistory.internalCheckConsistency(OpenTypeHistory.java:297)
        - locked <0x039048a8> (a org.eclipse.jdt.internal.corext.util.OpenTypeHistory)
        at org.eclipse.jdt.internal.corext.util.OpenTypeHistory.checkConsistency(OpenTypeHistory.java:244)
        - locked <0x039048a8> (a org.eclipse.jdt.internal.corext.util.OpenTypeHistory)
        at org.eclipse.jdt.internal.ui.JavaPlugin.initializeAfterLoad(JavaPlugin.java:348)
        at org.eclipse.jdt.internal.ui.InitializeAfterLoadJob$RealJob.run(InitializeAfterLoadJob.java:36)
        at org.eclipse.core.internal.jobs.Worker.run(Worker.java:58)

"Worker-2" prio=6 tid=0x0b239838 nid=0x250 in Object.wait() [0x0c22f000..0x0c22fbe8]
        at java.lang.Object.wait(Native Method)
        - waiting on <0x03033900> (a org.eclipse.core.internal.jobs.WorkerPool)
        at org.eclipse.core.internal.jobs.WorkerPool.sleep(WorkerPool.java:173)
        - locked <0x03033900> (a org.eclipse.core.internal.jobs.WorkerPool)
        at org.eclipse.core.internal.jobs.WorkerPool.startJob(WorkerPool.java:205)
        at org.eclipse.core.internal.jobs.Worker.run(Worker.java:51)

"org.eclipse.jdt.internal.ui.text.JavaReconciler" daemon prio=2 tid=0x0ae2ebf8 nid=0xb24 runnable [0x0c07f000..0x0c07fc68]
        at java.util.zip.ZipFile.getNextEntry(Native Method)
        at java.util.zip.ZipFile.access$700(Unknown Source)
        at java.util.zip.ZipFile$3.nextElement(Unknown Source)
        - locked <0x03606888> (a java.util.zip.ZipFile)
        at java.util.zip.ZipFile$3.nextElement(Unknown Source)
        at org.eclipse.jdt.internal.core.JarPackageFragmentRoot.computeChildren(JarPackageFragmentRoot.java:86)
        at org.eclipse.jdt.internal.core.JavaProjectElementInfo.getProjectCache(JavaProjectElementInfo.java:215)
        at org.eclipse.jdt.internal.core.JavaProjectElementInfo.newNameLookup(JavaProjectElementInfo.java:286)
        at org.eclipse.jdt.internal.core.JavaProject.newNameLookup(JavaProject.java:2543)
        at org.eclipse.jdt.internal.core.SearchableEnvironment.<init>(SearchableEnvironment.java:53)

        at org.eclipse.jdt.internal.core.SearchableEnvironment.<init>(SearchableEnvironment.java:67)

        at org.eclipse.jdt.internal.core.CancelableNameEnvironment.<init>(CancelableNameEnvironment.java:26)
        at org.eclipse.jdt.internal.core.CompilationUnitProblemFinder.process(CompilationUnitProblemFinder.java:156)
        at org.eclipse.jdt.internal.core.CompilationUnitProblemFinder.process(CompilationUnitProblemFinder.java:247)
        at org.eclipse.jdt.internal.core.ReconcileWorkingCopyOperation.makeConsistent(ReconcileWorkingCopyOperation.java:152)
        at org.eclipse.jdt.internal.core.ReconcileWorkingCopyOperation.executeOperation(ReconcileWorkingCopyOperation.java:71)
        at org.eclipse.jdt.internal.core.JavaModelOperation.run(JavaModelOperation.java:720)
        at org.eclipse.jdt.internal.core.JavaModelOperation.runOperation(JavaModelOperation.java:779)
        at org.eclipse.jdt.internal.core.CompilationUnit.reconcile(CompilationUnit.java:1102)
        at org.eclipse.jdt.internal.ui.text.java.JavaReconcilingStrategy$1.run(JavaReconcilingStrategy.java:97)
        at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37)
        at org.eclipse.jdt.internal.ui.text.java.JavaReconcilingStrategy.reconcile(JavaReconcilingStrategy.java:82)
        at org.eclipse.jdt.internal.ui.text.java.JavaReconcilingStrategy.initialReconcile(JavaReconcilingStrategy.java:172)
        at org.eclipse.jdt.internal.ui.text.CompositeReconcilingStrategy.initialReconcile(CompositeReconcilingStrategy.java:114)
        at org.eclipse.jdt.internal.ui.text.JavaCompositeReconcilingStrategy.initialReconcile(JavaCompositeReconcilingStrategy.java:120)
        at org.eclipse.jface.text.reconciler.MonoReconciler.initialProcess(MonoReconciler.java:103)
        at org.eclipse.jdt.internal.ui.text.JavaReconciler.initialProcess(JavaReconciler.java:328)
        - locked <0x0339d628> (a java.lang.Object)
        at org.eclipse.jface.text.reconciler.AbstractReconciler$BackgroundThread.run(AbstractReconciler.java:170)

"Java indexing" daemon prio=4 tid=0x0ad26a58 nid=0x97c runnable [0x0b82f000..0x0b82fd68]
        at java.util.zip.ZipFile.getNextEntry(Native Method)
        at java.util.zip.ZipFile.access$700(Unknown Source)
        at java.util.zip.ZipFile$3.nextElement(Unknown Source)
        - locked <0x038d7688> (a java.util.zip.ZipFile)
        at java.util.zip.ZipFile$3.nextElement(Unknown Source)
        at org.eclipse.jdt.internal.core.search.indexing.AddJarFileToIndex.execute(AddJarFileToIndex.java:150)
        at org.eclipse.jdt.internal.core.search.processing.JobManager.run(JobManager.java:372)
        at java.lang.Thread.run(Unknown Source)

"Worker-1" prio=6 tid=0x0b133800 nid=0x608 in Object.wait() [0x0b6cf000..0x0b6cf9e8]
        at java.lang.Object.wait(Native Method)
        - waiting on <0x03385478> (a java.lang.Object)
        at java.lang.Object.wait(Unknown Source)
        at org.eclipse.jdt.internal.ui.javaeditor.ASTProvider.getAST(ASTProvider.java:488)
        - locked <0x03385478> (a java.lang.Object)
        at org.eclipse.jdt.internal.ui.viewsupport.SelectionListenerWithASTManager$PartListenerGroup.calculateASTandInform(SelectionListenerWithASTManager.java:155)
        at org.eclipse.jdt.internal.ui.viewsupport.SelectionListenerWithASTManager$3.run(SelectionListenerWithASTManager.java:140)
        - locked <0x0352ada0> (a java.lang.Object)
        at org.eclipse.core.internal.jobs.Worker.run(Worker.java:58)

"Worker-0" prio=6 tid=0x0b0b7400 nid=0xa38 in Object.wait() [0x0b68f000..0x0b68fa68]
        at java.lang.Object.wait(Native Method)
        - waiting on <0x0370c488> (a org.eclipse.core.internal.jobs.ThreadJob)
        at org.eclipse.core.internal.jobs.ThreadJob.joinRun(ThreadJob.java:182)
        - locked <0x0370c488> (a org.eclipse.core.internal.jobs.ThreadJob)
        at org.eclipse.core.internal.jobs.ImplicitJobs.begin(ImplicitJobs.java:87)
        at org.eclipse.core.internal.jobs.JobManager.beginRule(JobManager.java:218)
        at org.eclipse.core.internal.utils.StringPoolJob.run(StringPoolJob.java:99)
        at org.eclipse.core.internal.jobs.Worker.run(Worker.java:58)

"Start Level Event Dispatcher" daemon prio=6 tid=0x0acea380 nid=0x784 in Object.wait() [0x0b34f000..0x0b34fae8]
        at java.lang.Object.wait(Native Method)
        - waiting on <0x0301bd28> (a org.eclipse.osgi.framework.eventmgr.EventManager$EventThread)
        at java.lang.Object.wait(Unknown Source)
        at org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.getNextEvent(EventManager.java:349)
        - locked <0x0301bd28> (a org.eclipse.osgi.framework.eventmgr.EventManager$EventThread)
        at org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.run(EventManager.java:287)

"Framework Event Dispatcher" daemon prio=6 tid=0x0af92ac8 nid=0xfc8 in Object.wait() [0x0b30f000..0x0b30fb68]
        at java.lang.Object.wait(Native Method)
        - waiting on <0x03010498> (a org.eclipse.osgi.framework.eventmgr.EventManager$EventThread)
        at java.lang.Object.wait(Unknown Source)
        at org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.getNextEvent(EventManager.java:349)
        - locked <0x03010498> (a org.eclipse.osgi.framework.eventmgr.EventManager$EventThread)
        at org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.run(EventManager.java:287)

"State Data Manager" daemon prio=6 tid=0x0acf5be8 nid=0xb8c waiting on condition [0x0b2cf000..0x0b2cfbe8]
        at java.lang.Thread.sleep(Native Method)
        at org.eclipse.osgi.internal.baseadaptor.StateManager.run(StateManager.java:297)
        at java.lang.Thread.run(Unknown Source)

"Low Memory Detector" daemon prio=6 tid=0x00a91ab8 nid=0xa74 runnable [0x00000000..0x00000000]

"CompilerThread0" daemon prio=10 tid=0x00a90548 nid=0xe8c waiting on condition [0x00000000..0x0ac0f74c]

"Signal Dispatcher" daemon prio=10 tid=0x00a8f8c8 nid=0xc70 waiting on condition [0x00000000..0x00000000]

"Finalizer" daemon prio=8 tid=0x00a86b00 nid=0xb84 in Object.wait() [0x0ab8f000..0x0ab8f9e8]
        at java.lang.Object.wait(Native Method)
        - waiting on <0x02fc1f60> (a java.lang.ref.ReferenceQueue$Lock)
        at java.lang.ref.ReferenceQueue.remove(Unknown Source)
        - locked <0x02fc1f60> (a java.lang.ref.ReferenceQueue$Lock)
        at java.lang.ref.ReferenceQueue.remove(Unknown Source)
        at java.lang.ref.Finalizer$FinalizerThread.run(Unknown Source)

"Reference Handler" daemon prio=10 tid=0x00a85668 nid=0xe48 in Object.wait() [0x0ab4f000..0x0ab4fae8]
        at java.lang.Object.wait(Native Method)
        - waiting on <0x02fc1fe0> (a java.lang.ref.Reference$Lock)
        at java.lang.Object.wait(Unknown Source)
        at java.lang.ref.Reference$ReferenceHandler.run(Unknown Source)
        - locked <0x02fc1fe0> (a java.lang.ref.Reference$Lock)

"main" prio=6 tid=0x00036160 nid=0xae8 runnable [0x0007f000..0x0007fc44]
        at org.eclipse.swt.internal.win32.OS.WaitMessage(Native Method)
        at org.eclipse.swt.widgets.Display.sleep(Display.java:3675)
        at org.eclipse.ui.application.WorkbenchAdvisor.eventLoopIdle(WorkbenchAdvisor.java:333)
        at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:1900)
        at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:1863)
        at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:417)
        at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:143)
        at org.eclipse.ui.internal.ide.IDEApplication.run(IDEApplication.java:106)
        at org.eclipse.core.internal.runtime.PlatformActivator$1.run(PlatformActivator.java:99)
        at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:92)
        at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:68)
        at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:374)
        at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:169)
        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.core.launcher.Main.invokeFramework(Main.java:338)
        at org.eclipse.core.launcher.Main.basicRun(Main.java:282)
        at org.eclipse.core.launcher.Main.run(Main.java:977)
        at org.eclipse.core.launcher.Main.main(Main.java:952)

"VM Thread" prio=10 tid=0x00a814c8 nid=0x998 runnable

"VM Periodic Task Thread" prio=10 tid=0x00a92c98 nid=0xf54 waiting on condition
Comment 1 Joachim Heck CLA 2006-04-18 10:41:23 EDT
Of course I always forget to try the standard Windows bug solution: rebooting.  Mysteriously, this problem vanished after a reboot.  So my problem is fixed and you should feel free do do what you will with this, but hopefully there is actually some kind of interesting insight in this for you guys.
Comment 2 Karice McIntyre CLA 2006-04-18 17:42:29 EDT
Can you try using M6? From the stack trace below this looks like a dup of bug 131562.
Comment 3 Martin Aeschlimann CLA 2006-04-19 05:46:13 EDT
Moving to JDT/Core. I'm not sure if this really is a deadlock, but for sure 4 jobs are looking inside JAR's at the same time.

Comment 4 Jerome Lanneluc CLA 2006-04-19 06:59:09 EDT
Created attachment 38917 [details]
Readable thread dump
Comment 5 Jerome Lanneluc CLA 2006-04-19 07:09:40 EDT
The 4 jobs that are looking at JARs are:
1. Java builder
2. JavaPlugin.initializeAfterLoad (checking type consistency)
3. Reconciler
4. Indexer

There is nothing wrong with these jobs running are the same time.

According to the thread dump, they are all active (unless java.util.zip.ZipFile$3.nextElement never returns but this would be a bug in Sun's library).

Without more information, there is nothing much I can do.

Closing
Comment 6 Martin Aeschlimann CLA 2006-04-19 07:16:55 EDT
Is it guaranteed that these are accesses to different JAR's? Otherwise it would probably be better to synchronize the accesses.
Comment 7 Jerome Lanneluc CLA 2006-04-19 07:47:44 EDT
From the thread dump, it is impossible to say if there are different JARs or not.
Why would it be better to synchronize the accesses ?
ZipFile.entries().nextElement() is already synchronized.
Comment 8 Martin Aeschlimann CLA 2006-04-19 08:30:51 EDT
I thought you probably cache the information of a JAR, so a second access could profit from the cache.
And I also guess that reading 4 big files at once is slower than reading them in sequence. But this is only a guess, I didn't measure that.