Bug 384319 - CPU utilization to 100% when this is appended to new object definition
Summary: CPU utilization to 100% when this is appended to new object definition
Status: RESOLVED FIXED
Alias: None
Product: JSDT
Classification: WebTools
Component: General (show other bugs)
Version: unspecified   Edit
Hardware: PC Linux
: P3 critical (vote)
Target Milestone: 3.6   Edit
Assignee: Chris Jaun CLA
QA Contact: Chris Jaun CLA
URL:
Whiteboard:
Keywords: needinfo
: 412908 (view as bug list)
Depends on:
Blocks:
 
Reported: 2012-07-04 23:13 EDT by Missing name CLA
Modified: 2013-11-12 14:00 EST (History)
4 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Missing name CLA 2012-07-04 23:13:58 EDT
Build Identifier: Version: 3.7.2 Build id: I20110613-1736

When entering code into my script the eclipse application will fails will freeze when the following line is entered:

"new this.sometext"

At this time, eclipse CPU utilization goes up to 100% and the eclipse application freezes.  Only way to stop it is to kill Eclipse application.

Reproducible: Always

Steps to Reproduce:
1.create new javascript source file.
2. Enter the following text: "new this.sometext"
Comment 1 Nitin Dahyabhai CLA 2012-10-18 14:10:29 EDT
Is there any information you can share about this problem?  The heap size setting, what else may be installed, stack traces while it's hung?

http://wiki.eclipse.org/How_to_report_a_deadlock
Comment 2 George Bochenek CLA 2013-01-03 10:19:15 EST
I've also experienced this issue when editing javascript files. 

The GUI freezes up as soon as the period is entered after "new this"


Version: Juno Release
Build id: 20120614-1722
java version "1.6.0_27"
Comment 3 Zsolt Sandor CLA 2013-02-06 11:08:57 EST
Reproduced on latest juno.

Testcase:

Start typing "new this."

after you typed '.', press ctrl+space 

The whole gui freezes, the only way to exit is to kill the application.
Comment 4 Michael Rennie CLA 2013-05-07 12:02:33 EDT
Reproduced using  Mac OS 10.8.2

Steps:

1. create non-javascript project
2. add test .js file 
3. enter 'new this.'
4. hit Ctrl+space

In my case I get the spinning beach ball of death, and which time I have to force-quit eclipse and restart
Comment 5 Michael Rennie CLA 2013-05-07 12:03:28 EDT
The thread dump (from YourKit):

main <--- Frozen for at least 51s
org.eclipse.wst.jsdt.internal.codeassist.complete.CompletionParser.createAssistTypeForAllocation(AllocationExpression)
org.eclipse.wst.jsdt.internal.codeassist.impl.AssistParser.classInstanceCreation(boolean, boolean)
org.eclipse.wst.jsdt.internal.codeassist.complete.CompletionParser.classInstanceCreation(boolean, boolean)
org.eclipse.wst.jsdt.internal.compiler.parser.Parser.consumeNewExpression()
org.eclipse.wst.jsdt.internal.compiler.parser.Parser.consumeRule(int)
org.eclipse.wst.jsdt.internal.compiler.parser.Parser.parse()
org.eclipse.wst.jsdt.internal.compiler.parser.Parser.parse(ICompilationUnit, CompilationResult, int, int)
org.eclipse.wst.jsdt.internal.compiler.parser.Parser.parse(ICompilationUnit, CompilationResult)
org.eclipse.wst.jsdt.internal.compiler.parser.Parser.dietParse(ICompilationUnit, CompilationResult)
org.eclipse.wst.jsdt.internal.codeassist.complete.CompletionParser.dietParse(ICompilationUnit, CompilationResult, int)
org.eclipse.wst.jsdt.internal.codeassist.CompletionEngine.complete(ICompilationUnit, int, int)
org.eclipse.wst.jsdt.internal.core.Openable.codeComplete(ICompilationUnit, ICompilationUnit, int, CompletionRequestor, WorkingCopyOwner)
org.eclipse.wst.jsdt.internal.core.CompilationUnit.codeComplete(int, CompletionRequestor, WorkingCopyOwner)
org.eclipse.wst.jsdt.internal.core.CompilationUnit.codeComplete(int, CompletionRequestor)
org.eclipse.wst.jsdt.internal.ui.text.java.JavaCompletionProposalComputer.internalComputeCompletionProposals(int, JavaContentAssistInvocationContext, IProgressMonitor)
org.eclipse.wst.jsdt.internal.ui.text.java.JavaCompletionProposalComputer.computeCompletionProposals(ContentAssistInvocationContext, IProgressMonitor)
org.eclipse.wst.jsdt.internal.ui.text.java.CompletionProposalComputerDescriptor.computeCompletionProposals(ContentAssistInvocationContext, IProgressMonitor)
org.eclipse.wst.jsdt.internal.ui.text.java.CompletionProposalCategory.computeCompletionProposals(ContentAssistInvocationContext, String, SubProgressMonitor)
org.eclipse.wst.jsdt.internal.ui.text.java.ContentAssistProcessor.collectProposals(ITextViewer, int, IProgressMonitor, ContentAssistInvocationContext)
org.eclipse.wst.jsdt.internal.ui.text.java.ContentAssistProcessor.computeCompletionProposals(ITextViewer, int)
org.eclipse.jface.text.contentassist.ContentAssistant.computeCompletionProposals(ITextViewer, int)
org.eclipse.jface.text.contentassist.CompletionProposalPopup.computeProposals(int)
org.eclipse.jface.text.contentassist.CompletionProposalPopup.access$16(CompletionProposalPopup, int)
org.eclipse.jface.text.contentassist.CompletionProposalPopup$2.run()
org.eclipse.swt.custom.BusyIndicator.showWhile(Display, Runnable)
org.eclipse.jface.text.contentassist.CompletionProposalPopup.showProposals(boolean)
org.eclipse.jface.text.contentassist.ContentAssistant.showPossibleCompletions()
org.eclipse.wst.jsdt.internal.ui.javaeditor.CompilationUnitEditor$AdaptedSourceViewer.doOperation(int)
org.eclipse.ui.texteditor.ContentAssistAction$1.run()
org.eclipse.swt.custom.BusyIndicator.showWhile(Display, Runnable)
org.eclipse.ui.texteditor.ContentAssistAction.run()
org.eclipse.jface.action.Action.runWithEvent(Event)
org.eclipse.jface.commands.ActionHandler.execute(ExecutionEvent)
org.eclipse.ui.internal.handlers.E4HandlerProxy.execute(IEclipseContext, Map, Event, IEvaluationContext)
sun.reflect.NativeMethodAccessorImpl.invoke0(Method, Object, Object[])
sun.reflect.NativeMethodAccessorImpl.invoke(Object, Object[])
sun.reflect.DelegatingMethodAccessorImpl.invoke(Object, Object[])
java.lang.reflect.Method.invoke(Object, Object[])
org.eclipse.e4.core.internal.di.MethodRequestor.execute()
org.eclipse.e4.core.internal.di.InjectorImpl.invokeUsingClass(Object, Class, Class, Object, PrimaryObjectSupplier, PrimaryObjectSupplier, boolean)
org.eclipse.e4.core.internal.di.InjectorImpl.invoke(Object, Class, Object, PrimaryObjectSupplier, PrimaryObjectSupplier)
org.eclipse.e4.core.contexts.ContextInjectionFactory.invoke(Object, Class, IEclipseContext, IEclipseContext, Object)
org.eclipse.e4.core.commands.internal.HandlerServiceHandler.execute(ExecutionEvent)
org.eclipse.core.commands.Command.executeWithChecks(ExecutionEvent)
org.eclipse.core.commands.ParameterizedCommand.executeWithChecks(Object, Object)
org.eclipse.e4.core.commands.internal.HandlerServiceImpl.executeHandler(ParameterizedCommand, IEclipseContext)
org.eclipse.e4.ui.bindings.keys.KeyBindingDispatcher.executeCommand(ParameterizedCommand, Event)
org.eclipse.e4.ui.bindings.keys.KeyBindingDispatcher.press(List, Event)
org.eclipse.e4.ui.bindings.keys.KeyBindingDispatcher.processKeyEvent(List, Event)
org.eclipse.e4.ui.bindings.keys.KeyBindingDispatcher.filterKeySequenceBindings(Event)
org.eclipse.e4.ui.bindings.keys.KeyBindingDispatcher.access$0(KeyBindingDispatcher, Event)
org.eclipse.e4.ui.bindings.keys.KeyBindingDispatcher$KeyDownFilter.handleEvent(Event)
org.eclipse.swt.widgets.EventTable.sendEvent(Event)
org.eclipse.swt.widgets.Display.filterEvent(Event)
org.eclipse.swt.widgets.Display.sendEvent(EventTable, Event)
org.eclipse.swt.widgets.Widget.sendEvent(Event)
org.eclipse.swt.widgets.Widget.sendEvent(int, Event, boolean)
org.eclipse.swt.widgets.Widget.sendEvent(int, Event)
org.eclipse.swt.widgets.Widget.sendKeyEvent(int, Event)
org.eclipse.swt.widgets.Widget.sendKeyEvent(NSEvent, int)
org.eclipse.swt.widgets.Canvas.sendKeyEvent(NSEvent, int)
org.eclipse.swt.widgets.Control.doCommandBySelector(long, long, long)
org.eclipse.swt.widgets.Display.windowProc(long, long, long)
org.eclipse.swt.internal.cocoa.OS.objc_msgSend(long, long, long)
org.eclipse.swt.internal.cocoa.NSResponder.interpretKeyEvents(NSArray)
org.eclipse.swt.widgets.Composite.keyDown(long, long, long)
org.eclipse.swt.widgets.Display.windowProc(long, long, long)
org.eclipse.swt.internal.cocoa.OS.objc_msgSendSuper(objc_super, long, long)
org.eclipse.swt.widgets.Widget.callSuper(long, long, long)
org.eclipse.swt.widgets.Widget.windowSendEvent(long, long, long)
org.eclipse.swt.widgets.Shell.windowSendEvent(long, long, long)
org.eclipse.swt.widgets.Display.windowProc(long, long, long)
org.eclipse.swt.internal.cocoa.OS.objc_msgSendSuper(objc_super, long, long)
org.eclipse.swt.widgets.Display.applicationSendEvent(long, long, long)
org.eclipse.swt.widgets.Display.applicationProc(long, long, long)
org.eclipse.swt.internal.cocoa.OS.objc_msgSend(long, long, long)
org.eclipse.swt.internal.cocoa.NSApplication.sendEvent(NSEvent)
org.eclipse.swt.widgets.Display.readAndDispatch()
org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$9.run()
org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm, Runnable)
org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(MApplicationElement, IEclipseContext)
org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(MApplicationElement)
org.eclipse.ui.internal.Workbench$5.run()
org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm, Runnable)
org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Display, WorkbenchAdvisor)
org.eclipse.ui.PlatformUI.createAndRunWorkbench(Display, WorkbenchAdvisor)
org.eclipse.ui.internal.ide.application.IDEApplication.start(IApplicationContext)
org.eclipse.equinox.internal.app.EclipseAppHandle.run(Object)
org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(Object)
org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(Object)
org.eclipse.core.runtime.adaptor.EclipseStarter.run(Object)
org.eclipse.core.runtime.adaptor.EclipseStarter.run(String[], Runnable)
sun.reflect.NativeMethodAccessorImpl.invoke0(Method, Object, Object[])
sun.reflect.NativeMethodAccessorImpl.invoke(Object, Object[])
sun.reflect.DelegatingMethodAccessorImpl.invoke(Object, Object[])
java.lang.reflect.Method.invoke(Object, Object[])
org.eclipse.equinox.launcher.Main.invokeFramework(String[], URL[])
org.eclipse.equinox.launcher.Main.basicRun(String[])
org.eclipse.equinox.launcher.Main.run(String[])
Comment 6 Michael Rennie CLA 2013-05-09 14:01:54 EDT
(In reply to comment #4)
> Reproduced using  Mac OS 10.8.2
> 
> Steps:
> 
> 1. create non-javascript project
> 2. add test .js file 
> 3. enter 'new this.'
> 4. hit Ctrl+space
> 
> In my case I get the spinning beach ball of death, and which time I have to
> force-quit eclipse and restart

Realized I forgot to add platform infos:

Version: 4.3.0
Build id: I20130508-1200
JSDT: 1.5.0
Comment 7 Chris Jaun CLA 2013-07-19 09:46:31 EDT
We dropped in quite a few under the cover changes to try and address performance issues this week. Doing testing to see if this resolves these issues.

http://git.eclipse.org/c/jsdt/webtools.jsdt.core.git/commit/?id=ec87a3b8e0a51fc2baec20756c00429d9e68a587

I think these changes will fix a lot of other bugs too as it cleaned up some underlying architectural issues along the way.
Comment 8 Chris Jaun CLA 2013-08-02 10:34:48 EDT
Problems described in comment #3 and #4 still exist. More work to be done here.
Comment 10 Chris Jaun CLA 2013-11-12 14:00:20 EST
*** Bug 412908 has been marked as a duplicate of this bug. ***