Bug 12033 - CVS causing hang
Summary: CVS causing hang
Status: RESOLVED INVALID
Alias: None
Product: Platform
Classification: Eclipse Project
Component: Team (show other bugs)
Version: 2.0   Edit
Hardware: PC Windows 2000
: P3 major (vote)
Target Milestone: ---   Edit
Assignee: Kevin McGuire CLA
QA Contact:
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2002-03-21 11:10 EST by Howard Lewis Ship CLA
Modified: 2002-03-21 11:59 EST (History)
0 users

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Howard Lewis Ship CLA 2002-03-21 11:10:35 EST
I've using 20020214 with Team 2.0 enabled.

Eclipse no longer starts.  I modified my startup to use java.exe, but absoltely 
nothing is echoed out.

I hit ctrl-break and got the following listing:

Full thread dump:

"CVS" prio=5 tid=0x153f0560 nid=0xd54 waiting on monitor [0x1582f000..0x1582fdbc
]
        at java.lang.Object.wait(Native Method)
        at java.lang.Object.wait(Object.java:420)
        at org.eclipse.team.internal.ccvs.ui.CVSDecorator.next(CVSDecorator.java
:130)
        at org.eclipse.team.internal.ccvs.ui.CVSDecorationRunnable.run(CVSDecora
tionRunnable.java:86)
        at java.lang.Thread.run(Thread.java:484)

"Java indexing" daemon prio=5 tid=0x14bb8ff8 nid=0xe38 waiting on monitor [0x153
ef000..0x153efdbc]
        at java.lang.Thread.sleep(Native Method)
        at org.eclipse.jdt.internal.core.search.processing.JobManager.run(JobMan
ager.java:276)
        at java.lang.Thread.run(Thread.java:484)

"Signal Dispatcher" daemon prio=10 tid=0x812668 nid=0xb64 waiting on monitor [0.
.0]

"Finalizer" daemon prio=9 tid=0x80e830 nid=0x9f8 waiting on monitor [0x14d0f000.
.0x14d0fdbc]
        at java.lang.Object.wait(Native Method)
        at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:108)
        at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:123)
        at java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:162)

"Reference Handler" daemon prio=10 tid=0x14a50368 nid=0x8f0 waiting on monitor [
0x14ccf000..0x14ccfdbc]
        at java.lang.Object.wait(Native Method)
        at java.lang.Object.wait(Object.java:420)
        at java.lang.ref.Reference$ReferenceHandler.run(Reference.java:110)

"main" prio=5 tid=0x234668 nid=0xd6c runnable [0x6e000..0x6fc34]
        at java.io.FileInputStream.open(Native Method)
        at java.io.FileInputStream.<init>(FileInputStream.java:64)
        at java.io.FileInputStream.<init>(FileInputStream.java:95)
        at org.eclipse.jdt.internal.compiler.util.Util.getFileCharContent(Util.j
ava:146)
        at org.eclipse.jdt.internal.core.BasicCompilationUnit.getContents(BasicC
ompilationUnit.java:44)
        at org.eclipse.jdt.internal.compiler.parser.Parser.parse(Parser.java:693
6)
        at org.eclipse.jdt.internal.compiler.parser.Parser.dietParse(Parser.java
:4644)
        at org.eclipse.jdt.internal.core.hierarchy.HierarchyResolver.resolve(Hie
rarchyResolver.java:409)
        at org.eclipse.jdt.internal.core.hierarchy.IndexBasedHierarchyBuilder.bu
ildForProject(IndexBasedHierarchyBuilder.java:208)
        at org.eclipse.jdt.internal.core.hierarchy.IndexBasedHierarchyBuilder.bu
ildFromPotentialSubtypes(IndexBasedHierarchyBuilder.java:287)
        at org.eclipse.jdt.internal.core.hierarchy.IndexBasedHierarchyBuilder.bu
ild(IndexBasedHierarchyBuilder.java:158)
        at org.eclipse.jdt.internal.core.hierarchy.TypeHierarchy.compute(TypeHie
rarchy.java:249)
        at org.eclipse.jdt.internal.core.hierarchy.TypeHierarchy.refresh(TypeHie
rarchy.java:1094)
        at org.eclipse.jdt.internal.core.CreateTypeHierarchyOperation.executeOpe
ration(CreateTypeHierarchyOperation.java:52)
        at org.eclipse.jdt.internal.core.JavaModelOperation.execute(JavaModelOpe
ration.java:268)
        at org.eclipse.jdt.internal.core.JavaModelOperation.run(JavaModelOperati
on.java:476)
        at org.eclipse.jdt.internal.core.JavaModelManager.runOperation(JavaModel
Manager.java:992)
        at org.eclipse.jdt.internal.core.JavaElement.runOperation(JavaElement.ja
va:526)
        at org.eclipse.jdt.internal.core.BinaryType.newTypeHierarchy(BinaryType.
java:304)
        at org.eclipse.jdt.internal.ui.typehierarchy.TypeHierarchyLifeCycle.doHi
erarchyRefresh(TypeHierarchyLifeCycle.java:144)
        at org.eclipse.jdt.internal.ui.typehierarchy.TypeHierarchyLifeCycle.acce
ss$0(TypeHierarchyLifeCycle.java:129)
        at org.eclipse.jdt.internal.ui.typehierarchy.TypeHierarchyLifeCycle$1.ru
n(TypeHierarchyLifeCycle.java:105)
        at org.eclipse.jdt.internal.ui.util.BusyIndicatorRunnableContext$BusyRun
nable.internalRun(BusyIndicatorRunnableContext.java:107)
        at org.eclipse.jdt.internal.ui.util.BusyIndicatorRunnableContext$BusyRun
nable.run(BusyIndicatorRunnableContext.java:74)
        at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:56)

        at org.eclipse.jdt.internal.ui.util.BusyIndicatorRunnableContext.run(Bus
yIndicatorRunnableContext.java:120)
        at org.eclipse.jdt.internal.ui.typehierarchy.TypeHierarchyLifeCycle.ensu
reRefreshedTypeHierarchy(TypeHierarchyLifeCycle.java:113)
        at org.eclipse.jdt.internal.ui.typehierarchy.TypeHierarchyViewPart.updat
eInput(TypeHierarchyViewPart.java:377)
        at org.eclipse.jdt.internal.ui.typehierarchy.TypeHierarchyViewPart.setIn
putElement(TypeHierarchyViewPart.java:363)
        at org.eclipse.jdt.internal.ui.typehierarchy.TypeHierarchyViewPart.resto
reState(TypeHierarchyViewPart.java:1192)
        at org.eclipse.jdt.internal.ui.typehierarchy.TypeHierarchyViewPart.creat
ePartControl(TypeHierarchyViewPart.java:641)
        at org.eclipse.ui.internal.PartPane$2.run(PartPane.java:58)
        at org.eclipse.core.internal.runtime.InternalPlatform.run(InternalPlatfo
rm.java:817)
        at org.eclipse.core.runtime.Platform.run(Platform.java:395)
        at org.eclipse.ui.internal.PartPane.createChildControl(PartPane.java:56)

        at org.eclipse.ui.internal.PartPane.createControl(PartPane.java:98)
        at org.eclipse.ui.internal.ViewPane.createControl(ViewPane.java:174)
        at org.eclipse.ui.internal.PartTabFolder.createPartTab(PartTabFolder.jav
a:237)
        at org.eclipse.ui.internal.PartTabFolder.createControl(PartTabFolder.jav
a:209)
        at org.eclipse.ui.internal.PartSashContainer.createControl(PartSashConta
iner.java:174)
        at org.eclipse.ui.internal.PerspectivePresentation.activate(PerspectiveP
resentation.java:88)
        at org.eclipse.ui.internal.Perspective.onActivate(Perspective.java:552)
        at org.eclipse.ui.internal.WorkbenchPage.onActivate(WorkbenchPage.java:1
069)
        at org.eclipse.ui.internal.WorkbenchWindow$5.run(WorkbenchWindow.java:91
9)
        at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:56)

        at org.eclipse.ui.internal.WorkbenchWindow.setActivePage(WorkbenchWindow
.java:907)
        at org.eclipse.ui.internal.WorkbenchWindow.restoreState(WorkbenchWindow.
java:820)
        at org.eclipse.ui.internal.Workbench.restoreState(Workbench.java:746)
        at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:504)
        at org.eclipse.core.internal.runtime.InternalPlatform.run(InternalPlatfo
rm.java:817)
        at org.eclipse.core.runtime.Platform.run(Platform.java:395)
        at org.eclipse.ui.internal.Workbench.openPreviousWorkbenchState(Workbenc
h.java:489)
        at org.eclipse.ui.internal.Workbench.openWindows(Workbench.java:539)
        at org.eclipse.ui.internal.Workbench.init(Workbench.java:389)
        at org.eclipse.ui.internal.Workbench.run(Workbench.java:768)
        at org.eclipse.core.internal.boot.InternalBootLoader.run(InternalBootLoa
der.java:777)
        at org.eclipse.core.boot.BootLoader.run(BootLoader.java:319)
        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.Main.main(Main.java:362)

"VM Thread" prio=5 tid=0x14abe1c0 nid=0x9d0 runnable

"VM Periodic Task Thread" prio=10 tid=0x811340 nid=0x454 waiting on monitor
"Suspend Checker Thread" prio=10 tid=0x811cb8 nid=0x8a8 runnable



Looks like Eclipse is having a problem with CVS.

How do I work around this?

Why doesn't Eclipse bring up the UI before dealing with these issues?  I'd 
prefer to see a progress panel with a cancel button and some hint as to what's 
gone wrong.
Comment 1 Howard Lewis Ship CLA 2002-03-21 11:19:29 EST
What's extra vexxing is that none of my open projects uses CVS.

My non-open CVS projects reference CVS servers at sourceforge.net ... they're a 
bit low on the reliability front.  It could be that Eclipse was calling out to 
a CVS server that wasn't there ... but why?

Again, whatever its doing should be scheduled after the GUI comes up, so that 
we can get some visual feedback of what its doing.
Comment 2 Kevin McGuire CLA 2002-03-21 11:59:33 EST
I believe it would've come up eventually, its no hung, just doing more work 
than it should.

CVS decorators are not contacting the server.  However, they are doing more 
work in that build then they should be.  Its not clear though that this is the 
slow down - we just happened to get caught at the top of the stack trace.  
Nonethelss you should take either 0319 or the milestone build that'll be out 
tomorrow or Friday, since there have been considerable CVS decorator 
improvements.

We may be doing more decorator work on closed projects than we should be.
Entering http://dev.eclipse.org/bugs/show_bug.cgi?id=12041, adding reporter to 
CC.

The point is valid that the UI should become alive first before decorators or 
other work occurs.  However, the CVS decorators are actually computed in a 
background thread, then we notify the UI that they are ready, so we are trying 
to be good citizens here.   This is the CVS decorator thread you saw.

Also:
- JDT is doing a lot of work on startup and I believe in the UI thread.  Can it 
build the hierarchy (or whatever its doing) in a background thread?
Entered http://dev.eclipse.org/bugs/show_bug.cgi?id=12043 with reporter on CC.

Closing this PR as invalid since the only issue for us is closed projects which 
I entered another PR for.