Bug 129168 - [content assist] UI hangs in Code assist while showing additional info
Summary: [content assist] UI hangs in Code assist while showing additional info
Status: VERIFIED FIXED
Alias: None
Product: Platform
Classification: Eclipse Project
Component: Text (show other bugs)
Version: 3.2   Edit
Hardware: PC All
: P1 major (vote)
Target Milestone: 3.2 RC2   Edit
Assignee: Tom Hofmann CLA
QA Contact:
URL:
Whiteboard:
Keywords:
: 133348 137192 138569 (view as bug list)
Depends on: 129175 136648
Blocks:
  Show dependency tree
 
Reported: 2006-02-23 10:29 EST by Dirk Baeumer CLA
Modified: 2007-02-19 09:29 EST (History)
5 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Dirk Baeumer CLA 2006-02-23 10:29:47 EST
M5

Steps to reproduce:

- create a project with a 5.0 JDK
- create a CU
- enter a method 
  void foo() {
     c<code assist>
  }

observe code assist pops up and hangs in the UI thread for some amount of time. The stack trace is as follows:

"main" prio=7 tid=0x00037350 nid=0x64c runnable [0x0007e000..0x0007fc40]
        at java.net.PlainSocketImpl.socketConnect(Native Method)
        at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333)
        - locked <0x106ac2b8> (a java.net.PlainSocketImpl)
        at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195)
        at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182)
        at java.net.Socket.connect(Socket.java:507)
        at java.net.Socket.connect(Socket.java:457)
        at sun.net.NetworkClient.doConnect(NetworkClient.java:157)
        at sun.net.www.http.HttpClient.openServer(HttpClient.java:365)
        at sun.net.www.http.HttpClient.openServer(HttpClient.java:477)
        - locked <0x106ac218> (a sun.net.www.http.HttpClient)
        at sun.net.www.http.HttpClient.<init>(HttpClient.java:214)
        at sun.net.www.http.HttpClient.New(HttpClient.java:287)
        at sun.net.www.http.HttpClient.New(HttpClient.java:299)
        at sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(HttpURLConnection.java:792)
        at sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:744)
        at sun.net.www.protocol.http.HttpURLConnection.connect(HttpURLConnection.java:669)
        at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:913)
        - locked <0x106ab848> (a sun.net.www.protocol.http.HttpURLConnection)
        at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:717)
        at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1063)
        at org.eclipse.jdt.internal.core.BinaryType.getAttachedJavadoc(BinaryType.java:990)
        at org.eclipse.jdt.ui.JavadocContentAccess.getHTMLContentReader(JavadocContentAccess.java:121)
        at org.eclipse.jdt.internal.ui.text.java.MemberProposalInfo.extractJavadoc(MemberProposalInfo.java:102)
        at org.eclipse.jdt.internal.ui.text.java.MemberProposalInfo.computeInfo(MemberProposalInfo.java:81)
        at org.eclipse.jdt.internal.ui.text.java.MemberProposalInfo.getInfo(MemberProposalInfo.java:68)
        at org.eclipse.jdt.internal.ui.text.java.LazyJavaCompletionProposal.getAdditionalProposalInfo(LazyJavaCompletionProposal
.java:180)
        at org.eclipse.jface.text.contentassist.AdditionalInfoController.computeInformation(AdditionalInfoController.java:221)
        at org.eclipse.jface.text.AbstractInformationControlManager.doShowInformation(AbstractInformationControlManager.java:820
)
        at org.eclipse.jface.text.AbstractInformationControlManager.showInformation(AbstractInformationControlManager.java:810)
        at org.eclipse.jface.text.contentassist.AdditionalInfoController$1.run(AdditionalInfoController.java:173)
        at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35)
        at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:123)
        - locked <0x106bca28> (a org.eclipse.swt.widgets.RunnableLock)
        at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:3262)
        at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:2908)
        at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:1762)
        at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:1726)
        at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:397)
        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:109)
        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:379)
        at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:177)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:585)
        at org.eclipse.core.launcher.Main.invokeFramework(Main.java:338)
        at org.eclipse.core.launcher.Main.basicRun(Main.java:282)
Comment 1 Dirk Baeumer CLA 2006-02-23 10:42:01 EST
The UI hangs sometime between 1 - 2 secs. Its definitelly longer than the timeout specified in the preferences.

Tom requested to file the bug first against JDT/Text ;-).
Comment 2 Dani Megert CLA 2006-02-23 11:02:24 EST
Really 2 bugs here
1) we compute the additional info in the UI thread (bad)
2) the JAR contains a Javadoc URL even though there is no Javadoc for that JAR
   ==> filed bug 129175.

Note that the timeout does not apply here: it is solely for getting the parameter names and not for getting the Javadoc.
Comment 3 Tom Hofmann CLA 2006-02-24 02:31:57 EST
We have to be careful when fixing this - ICompletionProposal::getAdditionalProposalInfo does not spec that it may be called from a non-UI thread and never was so far.

If pushing the computation into a another thread is not possible, we may have to add a new API that specs the concurrent access...
Comment 4 Tom Hofmann CLA 2006-04-13 11:49:15 EDT
Fixed > 20060413 by pushing computation into the background for ICompletionProposalExtension5 implementations. See bub 136648 for the added API.
Comment 5 Tom Hofmann CLA 2006-04-18 09:49:41 EDT
*** Bug 137192 has been marked as a duplicate of this bug. ***
Comment 6 Dani Megert CLA 2006-04-26 04:11:37 EDT
*** Bug 138569 has been marked as a duplicate of this bug. ***
Comment 7 Benno Baumgartner CLA 2006-04-26 10:33:07 EDT
verified in 20060426
Comment 8 Olivier Thomann CLA 2007-02-19 09:29:49 EST
*** Bug 133348 has been marked as a duplicate of this bug. ***