Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.
Bug 30993 - Install/Update hangs
Summary: Install/Update hangs
Status: RESOLVED DUPLICATE of bug 18598
Alias: None
Product: Platform
Classification: Eclipse Project
Component: Update (deprecated - use Eclipse>Equinox>p2) (show other bugs)
Version: 2.1   Edit
Hardware: PC Windows 2000
: P3 major (vote)
Target Milestone: ---   Edit
Assignee: Platform-Update-Inbox CLA
QA Contact:
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2003-02-05 12:55 EST by Erich Gamma CLA
Modified: 2003-02-13 13:07 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 Erich Gamma CLA 2003-02-05 12:55:03 EST
I had my firewall enabled
1) switch to the install/update perspective
2) add a site bookmark for the eclipse update site
3) expand Eclipse SDK 2.0.2 
4) turned off the firewall 
the progress got stuck and there is no way to cancel the operation.
The thread dump is attached below. I had to kill eclipse.

I suggest to use a ProgressMonitorDialog with forked=true this will allow you
to cancel the operation. It will not be as nice as the status line.


D:\eclipse\20030205\eclipse>d:\jdk1.4.1\bin\java -ms30M -mx300M -verify -cp star
tup.jar org.eclipse.core.launcher.Main -consolelog -application org.eclipse.ui.w
orkbench -data d:\eclipse\ws0321\plugins
Full thread dump Java HotSpot(TM) Client VM (1.4.1-beta-b14 mixed mode):

"ModalContext" prio=5 tid=0x19F98500 nid=0x774 runnable [1ae2f000..1ae2fd88]
        at java.net.PlainSocketImpl.socketConnect(Native Method)
        at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:305)
        - locked <029DC6F8> (a java.net.PlainSocketImpl)
        at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:171)
        at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:158)
        at java.net.Socket.connect(Socket.java:426)
        at java.net.Socket.connect(Socket.java:376)
        at sun.net.NetworkClient.doConnect(NetworkClient.java:139)
        at sun.net.www.http.HttpClient.openServer(HttpClient.java:386)
        at sun.net.www.http.HttpClient.openServer(HttpClient.java:602)
        - locked <029DC3D8> (a sun.net.www.http.HttpClient)
        at sun.net.www.http.HttpClient.<init>(HttpClient.java:303)
        at sun.net.www.http.HttpClient.<init>(HttpClient.java:264)
        at sun.net.www.http.HttpClient.New(HttpClient.java:336)
        at sun.net.www.http.HttpClient.New(HttpClient.java:317)
        at sun.net.www.http.HttpClient.New(HttpClient.java:312)
        at sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConne
ction.java:474)
        at sun.net.www.protocol.http.HttpURLConnection.connect(HttpURLConnection
.java:465)
        at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLCon
nection.java:567)
        - locked <029DC180> (a sun.net.www.protocol.http.HttpURLConnection)
        at org.eclipse.update.internal.core.Response.getInputStream(Response.jav
a:42)
        at org.eclipse.update.core.ContentReference.getInputStream(ContentRefere
nce.java:129)
        at org.eclipse.update.core.FeatureContentProvider.asLocalReference(Featu
reContentProvider.java:181)
        - locked <0520E950> (a java.lang.Object)
        at org.eclipse.update.internal.core.FeaturePackagedContentProvider.getFe
atureEntryArchiveReferences(FeaturePackagedContentProvider.java:139)
        at org.eclipse.update.internal.core.FeaturePackagedContentProvider.getFe
atureManifestReference(FeaturePackagedContentProvider.java:62)
        at org.eclipse.update.internal.core.FeaturePackagedFactory.createFeature
(FeaturePackagedFactory.java:33)
        at org.eclipse.update.core.Site.createFeature(Site.java:507)
        at org.eclipse.update.core.FeatureReference.createFeature(FeatureReferen
ce.java:108)
        at org.eclipse.update.core.FeatureReference.getFeature(FeatureReference.
java:96)
        at org.eclipse.update.core.FeatureReference.getFeature(FeatureReference.
java:83)
        at org.eclipse.update.internal.ui.model.FeatureReferenceAdapter.getFeatu
re(FeatureReferenceAdapter.java:25)
        at org.eclipse.update.internal.ui.model.SiteCategory$2.run(SiteCategory.
java:121)
        at org.eclipse.jface.operation.ModalContext$ModalContextThread.run(Modal
Context.java:95)

"org.eclipse.pde.internal.ui.editor.manifest.NotifyingReconciler" daemon prio=2
tid=0x19CC3008 nid=0x770 in Object.wait() [1a72f000..1a72fd88]
        at java.lang.Object.wait(Native Method)
        - waiting on <0516F870> (a org.eclipse.jface.text.reconciler.DirtyRegion
Queue)
        at org.eclipse.jface.text.reconciler.AbstractReconciler$BackgroundThread
.run(AbstractReconciler.java:161)
        - locked <0516F870> (a org.eclipse.jface.text.reconciler.DirtyRegionQueu
e)

"Java indexing" daemon prio=4 tid=0x198D6918 nid=0x508 waiting on condition [1a6
9f000..1a69fd88]
        at java.lang.Thread.sleep(Native Method)
        at org.eclipse.jdt.internal.core.search.processing.JobManager.run(JobMan
ager.java:334)
        at java.lang.Thread.run(Thread.java:536)

"Signal Dispatcher" daemon prio=10 tid=0x0023EDD0 nid=0x720 waiting on condition
 [0..0]

"Finalizer" daemon prio=9 tid=0x00883C10 nid=0x6c0 in Object.wait() [197af000..1
97afd88]
        at java.lang.Object.wait(Native Method)
        - waiting on <0409B788> (a java.lang.ref.ReferenceQueue$Lock)
        at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:111)
        - locked <0409B788> (a java.lang.ref.ReferenceQueue$Lock)
        at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:127)
        at java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:159)

"Reference Handler" daemon prio=10 tid=0x0085DE40 nid=0x76c in Object.wait() [19
76f000..1976fd88]
        at java.lang.Object.wait(Native Method)
        - waiting on <0409B7F0> (a java.lang.ref.Reference$Lock)
        at java.lang.Object.wait(Object.java:426)
        at java.lang.ref.Reference$ReferenceHandler.run(Reference.java:113)
        - locked <0409B7F0> (a java.lang.ref.Reference$Lock)

"main" prio=5 tid=0x00234B40 nid=0x5d4 runnable [6e000..6fc3c]
        at org.eclipse.swt.internal.win32.OS.WaitMessage(Native Method)
        at org.eclipse.swt.widgets.Display.sleep(Display.java:1981)
        at org.eclipse.jface.operation.ModalContext$ModalContextThread.block(Mod
alContext.java:131)
        at org.eclipse.jface.operation.ModalContext.run(ModalContext.java:255)
        at org.eclipse.jface.window.ApplicationWindow$1.run(ApplicationWindow.ja
va:433)
        at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:65)

        at org.eclipse.jface.window.ApplicationWindow.run(ApplicationWindow.java
:430)
        at org.eclipse.ui.internal.WorkbenchWindow.run(WorkbenchWindow.java:1283
)
        at org.eclipse.update.internal.ui.model.SiteCategory.touchFeatures(SiteC
ategory.java:135)
        at org.eclipse.update.internal.ui.views.UpdatesView$SiteProvider.getChil
dren(UpdatesView.java:205)
        at org.eclipse.jface.viewers.AbstractTreeViewer.getRawChildren(AbstractT
reeViewer.java:637)
        at org.eclipse.jface.viewers.StructuredViewer.getFilteredChildren(Struct
uredViewer.java:454)
        at org.eclipse.jface.viewers.StructuredViewer.getSortedChildren(Structur
edViewer.java:555)
        at org.eclipse.jface.viewers.AbstractTreeViewer$1.run(AbstractTreeViewer
.java:280)
        at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:65)

        at org.eclipse.jface.viewers.AbstractTreeViewer.createChildren(AbstractT
reeViewer.java:268)
        at org.eclipse.jface.viewers.AbstractTreeViewer.handleTreeExpand(Abstrac
tTreeViewer.java:680)
        at org.eclipse.jface.viewers.AbstractTreeViewer$4.treeExpanded(AbstractT
reeViewer.java:692)
        at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:
173)
        at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:77)
        at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:836)
        at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:861)
        at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:845)
        at org.eclipse.swt.widgets.Tree.wmNotifyChild(Tree.java:1837)
        at org.eclipse.swt.widgets.Control.WM_NOTIFY(Control.java:3767)
        at org.eclipse.swt.widgets.Composite.WM_NOTIFY(Composite.java:638)
        at org.eclipse.swt.widgets.Control.windowProc(Control.java:2803)
        at org.eclipse.swt.widgets.Display.windowProc(Display.java:2198)
        at org.eclipse.swt.internal.win32.OS.CallWindowProcW(Native Method)
        at org.eclipse.swt.internal.win32.OS.CallWindowProc(OS.java:1225)
        at org.eclipse.swt.widgets.Tree.callWindowProc(Tree.java:152)
        at org.eclipse.swt.widgets.Tree.WM_LBUTTONDOWN(Tree.java:1466)
        at org.eclipse.swt.widgets.Control.windowProc(Control.java:2786)
        at org.eclipse.swt.widgets.Display.windowProc(Display.java:2198)
        at org.eclipse.swt.internal.win32.OS.DispatchMessageW(Native Method)
        at org.eclipse.swt.internal.win32.OS.DispatchMessage(OS.java:1292)
        at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:1408)
        at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:1289)
        at org.eclipse.ui.internal.Workbench.run(Workbench.java:1272)
        at org.eclipse.core.internal.boot.InternalBootLoader.run(InternalBootLoa
der.java:845)
        at org.eclipse.core.boot.BootLoader.run(BootLoader.java:461)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
sorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:324)
        at org.eclipse.core.launcher.Main.basicRun(Main.java:247)
        at org.eclipse.core.launcher.Main.run(Main.java:703)
        at org.eclipse.core.launcher.Main.main(Main.java:539)

"VM Thread" prio=5 tid=0x0023FEE8 nid=0x344 runnable
Comment 1 Dejan Glozic CLA 2003-02-05 13:04:24 EST
I don't think we can use Cancel as-is because when the connection hangs, we 
block. For example, if you call 'getConnection().getInputStream()', you will 
block if there is a connection problem. You need to have another thread that 
sleeps for a while and then calls 'disconnect' on the HTTPURLConnection but I 
don't know if this is clean and/or if it works on non-windows platforms.
Comment 2 Erich Gamma CLA 2003-02-05 13:25:13 EST
I haven't looked at your code but if you call ProgressMonitorDialog.run with 
forked == true then your operation is run in a separate thread. So you could 
either have a polling thread that periodically checks for cancelled or you work 
with socket timeouts and check for the cancelled flag.

BTW, I even had to restart my machine after this hang.
Comment 3 Dejan Glozic CLA 2003-02-05 13:33:05 EST
I know, it is a nasty problem. We do not have enough control in java.net 
package to address it properly. I have noticed that applications that want to 
provide anything more sophisticated in the networking domain often go one layer 
lower (directly to sockets).
Comment 4 Dejan Glozic CLA 2003-02-13 13:07:08 EST

*** This bug has been marked as a duplicate of 18598 ***