This Bugzilla instance is a read-only archive of historic NetBeans bug reports. To report a bug in NetBeans please follow the project's instructions for reporting issues.
Summary: | Edit/Highlight loop causes 5s-10s EDT pauses | ||
---|---|---|---|
Product: | groovy | Reporter: | shemnon <shemnon> |
Component: | Editor | Assignee: | Petr Hejl <phejl> |
Status: | RESOLVED FIXED | ||
Severity: | blocker | CC: | jungi, ksilz, pjiricka, pstehlik, schmidtm, tor, tzezula |
Priority: | P3 | ||
Version: | 6.x | ||
Hardware: | All | ||
OS: | All | ||
Issue Type: | DEFECT | Exception Reporter: | |
Attachments: | thread dump during IDE freeze (2/22 daily build) |
Description
shemnon
2008-11-10 17:28:42 UTC
Another bad stack trace (the first one actually locked up the whole JVM, I had to kill it) 2008-11-10 10:18:14 Full thread dump Java HotSpot(TM) Server VM (11.0-b15 mixed mode): "Inactive RequestProcessor thread [Was:CaretMarkProvider/org.netbeans.modules.ed itor.errorstripe.caret.CaretMarkProvider$1]" daemon prio=2 tid=0x2cea6800 nid=0x 10e8 in Object.wait() [0x30ddf000..0x30ddfb68] java.lang.Thread.State: TIMED_WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x13dbe970> (a java.lang.Object) at org.openide.util.RequestProcessor$Processor.run(RequestProcessor.java :950) - locked <0x13dbe970> (a java.lang.Object) "Inactive RequestProcessor thread [Was:CaretAwareSourceTaskFactory worker/org.ne tbeans.napi.gsfret.source.support.CaretAwareSourceTaskFactory$ComponentListener$ 1]" daemon prio=2 tid=0x2ceaac00 nid=0x1050 in Object.wait() [0x2db3f000..0x2db3 fbe8] java.lang.Thread.State: TIMED_WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x13e96838> (a java.lang.Object) at org.openide.util.RequestProcessor$Processor.run(RequestProcessor.java :950) - locked <0x13e96838> (a java.lang.Object) "Inactive RequestProcessor thread [Was:TimedSoftReference/org.openide.util.Timed SoftReference]" daemon prio=2 tid=0x2ceab000 nid=0xf50 in Object.wait() [0x2d93f 000..0x2d93fc68] java.lang.Thread.State: TIMED_WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x13df5bb0> (a java.lang.Object) at org.openide.util.RequestProcessor$Processor.run(RequestProcessor.java :950) - locked <0x13df5bb0> (a java.lang.Object) "Inactive RequestProcessor thread [Was:Refresh Editor Context/org.netbeans.spi.d ebugger.ui.EditorContextDispatcher$EventFirer]" daemon prio=2 tid=0x2ceaa000 nid =0xc40 in Object.wait() [0x2d73f000..0x2d73fce8] java.lang.Thread.State: TIMED_WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x13eea8b8> (a java.lang.Object) at org.openide.util.RequestProcessor$Processor.run(RequestProcessor.java :950) - locked <0x13eea8b8> (a java.lang.Object) "Java Source Worker Thread" daemon prio=2 tid=0x2cead400 nid=0xfb0 runnable [0x3 5bce000..0x35bcf9e8] java.lang.Thread.State: RUNNABLE at java.util.Date.<init>(Date.java:235) at java.util.zip.ZipEntry.dosToJavaTime(ZipEntry.java:290) at java.util.zip.ZipEntry.getTime(ZipEntry.java:129) at org.netbeans.modules.java.source.parsing.CachingArchive.createMap(Cac hingArchive.java:236) at org.netbeans.modules.java.source.parsing.CachingArchive.doInit(Cachin gArchive.java:152) - locked <0x29d4a848> (a org.netbeans.modules.java.source.parsing.Cachin gArchive) at org.netbeans.modules.java.source.parsing.CachingArchive.getFiles(Cach ingArchive.java:91) at org.netbeans.modules.java.source.parsing.CachingFileManager.list(Cach ingFileManager.java:116) at org.netbeans.modules.java.source.parsing.ProxyFileManager.list(ProxyF ileManager.java:174) at com.sun.tools.javac.jvm.ClassReader.fillIn(ClassReader.java:2157) at com.sun.tools.javac.jvm.ClassReader.complete(ClassReader.java:1844) at com.sun.tools.javac.code.Symbol.complete(Symbol.java:401) at com.sun.tools.javac.comp.Enter.visitTopLevel(Enter.java:320) at com.sun.tools.javac.tree.JCTree$JCCompilationUnit.accept(JCTree.java: 451) at com.sun.tools.javac.comp.Enter.classEnter(Enter.java:281) at com.sun.tools.javac.comp.Enter.classEnter(Enter.java:295) at com.sun.tools.javac.comp.Enter.complete(Enter.java:630) at com.sun.tools.javac.comp.Enter.main(Enter.java:615) at com.sun.tools.javac.main.JavaCompiler.enterTrees(JavaCompiler.java:85 3) at com.sun.tools.javac.api.JavacTaskImpl.enter(JavacTaskImpl.java:357) at com.sun.tools.javac.api.JavacTaskImpl.enterTrees(JavacTaskImpl.java:3 95) at org.netbeans.modules.java.source.usages.RepositoryUpdater$CompileWork er.updateFile(RepositoryUpdater.java:2392) at org.netbeans.modules.java.source.usages.RepositoryUpdater$CompileWork er.compileWithDeps(RepositoryUpdater.java:2643) at org.netbeans.modules.java.source.usages.RepositoryUpdater$CompileWork er.access$3600(RepositoryUpdater.java:1256) at org.netbeans.modules.java.source.usages.RepositoryUpdater$CompileWork er$1.run(RepositoryUpdater.java:1556) at org.netbeans.modules.java.source.usages.RepositoryUpdater$CompileWork er$1.run(RepositoryUpdater.java:1299) at org.netbeans.modules.java.source.usages.ClassIndexManager.writeLock(C lassIndexManager.java:99) at org.netbeans.modules.java.source.usages.RepositoryUpdater$CompileWork er.run(RepositoryUpdater.java:1296) at org.netbeans.modules.java.source.usages.RepositoryUpdater$CompileWork er.run(RepositoryUpdater.java:1256) at org.netbeans.api.java.source.JavaSource$CompilationJob.run(JavaSource .java:1618) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:44 1) at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303) at java.util.concurrent.FutureTask.run(FutureTask.java:138) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExec utor.java:886) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor .java:908) at java.lang.Thread.run(Thread.java:619) "GSF Source Worker Thread" daemon prio=2 tid=0x2cead000 nid=0x4a4 waiting on con dition [0x359cf000..0x359cfa68] java.lang.Thread.State: WAITING (parking) at sun.misc.Unsafe.park(Native Method) - parking to wait for <0x149ffe60> (a java.util.concurrent.CountDownLat ch$Sync) at java.util.concurrent.locks.LockSupport.park(LockSupport.java:158) at java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInt errupt(AbstractQueuedSynchronizer.java:747) at java.util.concurrent.locks.AbstractQueuedSynchronizer.doAcquireShared Interruptibly(AbstractQueuedSynchronizer.java:905) at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireSharedIn terruptibly(AbstractQueuedSynchronizer.java:1217) at java.util.concurrent.CountDownLatch.await(CountDownLatch.java:207) at org.netbeans.api.java.source.JavaSource$ScanSync.get(JavaSource.java: 2485) at org.netbeans.api.java.source.JavaSource$ScanSync.get(JavaSource.java: 2444) at org.netbeans.modules.groovy.editor.parser.NbCompilationUnit$NbCompile Unit.getClass(NbCompilationUnit.java:99) at org.codehaus.groovy.control.ResolveVisitor.resolveFromCompileUnit(Res olveVisitor.java:427) at org.codehaus.groovy.control.ResolveVisitor.resolve(ResolveVisitor.jav a:251) at org.codehaus.groovy.control.ResolveVisitor.visitClass(ResolveVisitor. java:969) at org.codehaus.groovy.control.ResolveVisitor.startResolving(ResolveVisi tor.java:141) at org.codehaus.groovy.control.CompilationUnit$5.call(CompilationUnit.ja va:527) at org.codehaus.groovy.control.CompilationUnit.applyToSourceUnits(Compil ationUnit.java:772) at org.codehaus.groovy.control.CompilationUnit.compile(CompilationUnit.j ava:438) at org.netbeans.modules.groovy.editor.parser.GroovyParser.parseBuffer(Gr oovyParser.java:444) at org.netbeans.modules.groovy.editor.parser.GroovyParser.parseFiles(Gro ovyParser.java:120) at org.netbeans.napi.gsfret.source.Source.moveToPhase(Source.java:1056) at org.netbeans.napi.gsfret.source.Source$CompilationJob.run(Source.java :1399) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:44 1) at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303) at java.util.concurrent.FutureTask.run(FutureTask.java:138) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExec utor.java:886) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor .java:908) at java.lang.Thread.run(Thread.java:619) "org.netbeans.modules.gsfret.source.usages.RepositoryUpdater" daemon prio=2 tid= 0x2ceac800 nid=0x1608 in Object.wait() [0x357cf000..0x357cfae8] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x132fa788> (a java.util.TaskQueue) at java.lang.Object.wait(Object.java:485) at java.util.TimerThread.mainLoop(Timer.java:483) - locked <0x132fa788> (a java.util.TaskQueue) at java.util.TimerThread.run(Timer.java:462) "Default RequestProcessor" daemon prio=2 tid=0x2ceaa400 nid=0x16a4 in Object.wai t() [0x33a7f000..0x33a7f9e8] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x1338f200> (a java.lang.Object) at java.lang.Object.wait(Object.java:485) at org.netbeans.modules.tasklist.impl.FileScanningWorker.run(FileScannin gWorker.java:205) - locked <0x1338f200> (a java.lang.Object) at org.openide.util.RequestProcessor$Task.run(RequestProcessor.java:572) at org.openide.util.RequestProcessor$Processor.run(RequestProcessor.java :997) "DestroyJavaVM" prio=6 tid=0x2cea9400 nid=0x630 waiting on condition [0x00000000 ..0x025afd20] java.lang.Thread.State: RUNNABLE "AWT-EventQueue-1" prio=6 tid=0x2cea8800 nid=0x8f8 waiting on condition [0x30fdf 000..0x30fdfb68] java.lang.Thread.State: WAITING (parking) at sun.misc.Unsafe.park(Native Method) - parking to wait for <0x1345abf0> (a java.util.concurrent.locks.Reentr antLock$FairSync) at java.util.concurrent.locks.LockSupport.park(LockSupport.java:158) at java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInt errupt(AbstractQueuedSynchronizer.java:747) at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireQueued(A bstractQueuedSynchronizer.java:778) at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquire(Abstrac tQueuedSynchronizer.java:1114) at java.util.concurrent.locks.ReentrantLock$FairSync.lock(ReentrantLock. java:201) at java.util.concurrent.locks.ReentrantLock.lock(ReentrantLock.java:262) at org.netbeans.napi.gsfret.source.Source.runUserActionTask(Source.java: 450) at org.netbeans.modules.gsfret.editor.codetemplates.GsfCodeTemplateFilte r.<init>(GsfCodeTemplateFilter.java:84) at org.netbeans.modules.gsfret.editor.codetemplates.GsfCodeTemplateFilte r.<init>(GsfCodeTemplateFilter.java:68) at org.netbeans.modules.gsfret.editor.codetemplates.GsfCodeTemplateFilte r$Factory.createFilter(GsfCodeTemplateFilter.java:120) at org.netbeans.lib.editor.codetemplates.CodeTemplateManagerOperation.ge tTemplateFilters(CodeTemplateManagerOperation.java:226) at org.netbeans.lib.editor.codetemplates.SurroundWithFix.getFixes(Surrou ndWithFix.java:71) at org.netbeans.lib.editor.codetemplates.AbbrevDetection.showSurroundWit hHint(AbbrevDetection.java:424) at org.netbeans.lib.editor.codetemplates.AbbrevDetection.access$100(Abbr evDetection.java:93) at org.netbeans.lib.editor.codetemplates.AbbrevDetection$1.actionPerform ed(AbbrevDetection.java:186) at javax.swing.Timer.fireActionPerformed(Timer.java:271) at javax.swing.Timer$DoPostEvent.run(Timer.java:201) at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209) at java.awt.EventQueue.dispatchEvent(EventQueue.java:597) at org.netbeans.core.TimableEventQueue.dispatchEvent(TimableEventQueue.j ava:104) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThre ad.java:269) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread. java:184) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThre ad.java:174) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161) at java.awt.EventDispatchThread.run(EventDispatchThread.java:122) "TimerQueue" daemon prio=6 tid=0x2cea8400 nid=0x1290 in Object.wait() [0x2edcf00 0..0x2edcfbe8] java.lang.Thread.State: TIMED_WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x126d3fa0> (a javax.swing.TimerQueue) at javax.swing.TimerQueue.run(TimerQueue.java:236) - locked <0x126d3fa0> (a javax.swing.TimerQueue) at java.lang.Thread.run(Thread.java:619) "*** JFluid Separate Command Execution Thread" daemon prio=6 tid=0x2cea7c00 nid= 0xe40 in Object.wait() [0x3465f000..0x3465fc68] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x12773f18> (a java.lang.Object) at java.lang.Object.wait(Object.java:485) at org.netbeans.lib.profiler.ProfilerClient$SeparateCmdExecutionThread.r un(ProfilerClient.java:101) - locked <0x12773f18> (a java.lang.Object) "Thread-4" daemon prio=6 tid=0x2cea7800 nid=0x1154 in Object.wait() [0x3445f000. .0x3445fce8] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x12576a80> (a java.util.LinkedList) at java.lang.Object.wait(Object.java:485) at java.util.prefs.AbstractPreferences$EventDispatchThread.run(AbstractP references.java:1461) - locked <0x12576a80> (a java.util.LinkedList) "AWT-Windows" daemon prio=6 tid=0x2cf95c00 nid=0x12a4 runnable [0x2ebcf000..0x2e bcfb68] java.lang.Thread.State: RUNNABLE at sun.awt.windows.WToolkit.eventLoop(Native Method) at sun.awt.windows.WToolkit.run(WToolkit.java:291) at java.lang.Thread.run(Thread.java:619) "AWT-Shutdown" prio=6 tid=0x2cf95800 nid=0x152c in Object.wait() [0x2e9cf000..0x 2e9cfbe8] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x12081d50> (a java.lang.Object) at java.lang.Object.wait(Object.java:485) at sun.awt.AWTAutoShutdown.run(AWTAutoShutdown.java:259) - locked <0x12081d50> (a java.lang.Object) at java.lang.Thread.run(Thread.java:619) "Java2D Disposer" daemon prio=10 tid=0x2cf99400 nid=0x384 in Object.wait() [0x2e 7cf000..0x2e7cfc68] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x12082650> (a java.lang.ref.ReferenceQueue$Lock) at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:116) - locked <0x12082650> (a java.lang.ref.ReferenceQueue$Lock) at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:132) at sun.java2d.Disposer.run(Disposer.java:125) at java.lang.Thread.run(Thread.java:619) "Active Reference Queue Daemon" daemon prio=2 tid=0x2cf4c800 nid=0x17d4 in Objec t.wait() [0x2e48f000..0x2e48fce8] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x120656b0> (a java.lang.ref.ReferenceQueue$Lock) at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:116) - locked <0x120656b0> (a java.lang.ref.ReferenceQueue$Lock) at org.openide.util.Utilities$ActiveQueue.run(Utilities.java:3088) at java.lang.Thread.run(Thread.java:619) "Inactive RequestProcessor thread [Was:Document Processing/org.openide.text.Clon eableEditor$DoInitialize]" daemon prio=4 tid=0x2cd94400 nid=0x1120 in Object.wai t() [0x2d53f000..0x2d53f9e8] java.lang.Thread.State: TIMED_WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x12082a50> (a java.lang.Object) at org.openide.util.RequestProcessor$Processor.run(RequestProcessor.java :950) - locked <0x12082a50> (a java.lang.Object) "Timer-0" daemon prio=6 tid=0x2cf1b800 nid=0x1320 in Object.wait() [0x2e08f000.. 0x2e08fa68] java.lang.Thread.State: TIMED_WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x12078e18> (a java.util.TaskQueue) at java.util.TimerThread.mainLoop(Timer.java:509) - locked <0x12078e18> (a java.util.TaskQueue) at java.util.TimerThread.run(Timer.java:462) "CLI Requests Server" daemon prio=6 tid=0x2cd98000 nid=0xd90 runnable [0x2de8f00 0..0x2de8fae8] java.lang.Thread.State: RUNNABLE at java.net.PlainSocketImpl.socketAccept(Native Method) at java.net.PlainSocketImpl.accept(PlainSocketImpl.java:384) - locked <0x12062e40> (a java.net.SocksSocketImpl) at java.net.ServerSocket.implAccept(ServerSocket.java:453) at java.net.ServerSocket.accept(ServerSocket.java:421) at org.netbeans.CLIHandler$Server.run(CLIHandler.java:1010) "RMI TCP Accept-0" daemon prio=6 tid=0x2c446000 nid=0xd38 runnable [0x2d33f000.. 0x2d33fc68] java.lang.Thread.State: RUNNABLE at java.net.PlainSocketImpl.socketAccept(Native Method) at java.net.PlainSocketImpl.accept(PlainSocketImpl.java:384) - locked <0x12078198> (a java.net.SocksSocketImpl) at java.net.ServerSocket.implAccept(ServerSocket.java:453) at java.net.ServerSocket.accept(ServerSocket.java:421) at sun.management.jmxremote.LocalRMIServerSocketFactory$1.accept(LocalRM IServerSocketFactory.java:34) at sun.rmi.transport.tcp.TCPTransport$AcceptLoop.executeAcceptLoop(TCPTr ansport.java:369) at sun.rmi.transport.tcp.TCPTransport$AcceptLoop.run(TCPTransport.java:3 41) at java.lang.Thread.run(Thread.java:619) "Low Memory Detector" daemon prio=6 tid=0x00d17c00 nid=0x178c runnable [0x000000 00..0x00000000] java.lang.Thread.State: RUNNABLE "CompilerThread1" daemon prio=10 tid=0x00d15000 nid=0x5c0 waiting on condition [ 0x00000000..0x2c0ef450] java.lang.Thread.State: RUNNABLE "CompilerThread0" daemon prio=10 tid=0x00d11400 nid=0x175c waiting on condition [0x00000000..0x2c09f0d0] java.lang.Thread.State: RUNNABLE "Attach Listener" daemon prio=10 tid=0x00d10c00 nid=0xaf8 runnable [0x00000000.. 0x00000000] java.lang.Thread.State: RUNNABLE "Signal Dispatcher" daemon prio=10 tid=0x00d10800 nid=0x11f4 waiting on conditio n [0x00000000..0x00000000] java.lang.Thread.State: RUNNABLE "Finalizer" daemon prio=8 tid=0x00d00000 nid=0x13e4 in Object.wait() [0x2bc4f000 ..0x2bc4fb68] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x11dce400> (a java.lang.ref.ReferenceQueue$Lock) at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:116) - locked <0x11dce400> (a java.lang.ref.ReferenceQueue$Lock) at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:132) at java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:159) "Reference Handler" daemon prio=10 tid=0x00cfa400 nid=0x3ec in Object.wait() [0x 2ba4f000..0x2ba4fbe8] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x11dce420> (a java.lang.ref.Reference$Lock) at java.lang.Object.wait(Object.java:485) at java.lang.ref.Reference$ReferenceHandler.run(Reference.java:116) - locked <0x11dce420> (a java.lang.ref.Reference$Lock) "VM Thread" prio=10 tid=0x00cf6c00 nid=0x17d8 runnable "GC task thread#0 (ParallelGC)" prio=6 tid=0x00c44c00 nid=0xf78 runnable "GC task thread#1 (ParallelGC)" prio=6 tid=0x00c46000 nid=0x16e0 runnable "VM Periodic Task Thread" prio=10 tid=0x2c4efc00 nid=0x1060 waiting on condition JNI global references: 2151 Heap PSYoungGen total 41984K, used 27689K [0x28a30000, 0x2b780000, 0x2b7b0000) eden space 37824K, 69% used [0x28a30000,0x2a3ae4a8,0x2af20000) from space 4160K, 38% used [0x2b370000,0x2b4fc000,0x2b780000) to space 4288K, 0% used [0x2af20000,0x2af20000,0x2b350000) PSOldGen total 51904K, used 48325K [0x11db0000, 0x15060000, 0x28a30000) object space 51904K, 93% used [0x11db0000,0x14ce14b8,0x15060000) PSPermGen total 76544K, used 44667K [0x055b0000, 0x0a070000, 0x11db0000) object space 76544K, 58% used [0x055b0000,0x0814ec30,0x0a070000) Hi shemnon, can you provide details about your project configuration? For example number of files, libraries, location etc. I suppose OS is Windows... 305 Groovy files, 1788 java files. Here's the source repository: C:\svn\codehaus.org\groovy\trunk\groovy\groovy-core\src\main just drop the project.xml in the first comment into an nbproject dir and you have what I have. The big offensive issue in my opinion is that you do a synchronized lock of a resource in the EDT! If someone else is going to hold on to it for 10 seconds the EDT is screwed beyond belief! Whatever is causing an off-thread 10s delay needs to be optimized down to .1s, OR (better) the EDT should never block and have some sort of an inbetween state when the data isn't available. Especially since this is triggered off a timer you can just reset the timer for another 500ms. You are absolutely right about that. No doubt. I just need to figure out whether this is infrastructure or groovy specific problem. Thanks! Reproduced. Seems like the delay is caused by parsing the changed file. The main delay is caused by two competing threads - Java Source Worker and GSF Worker. Usually Java one wins (VirtualSourceProvider) and performs parsing and java stub generation. During this action GSF Worker waits for java scan to finish. As a result the GSF Worker parsing is two times slower. The Parsing API could help (only one parsing thread) - Groovy parser results could be used for both virtual source and GSF. Just wanted to add I'm seeing this with only 1 or 2 groovy files and not nearly as many java files, so project size doesn't seem to matter. I think the main difference is that I'm using Maven projects instead of the Netbeans generated projects. My environment is as follow: Ubuntu 8.10 x86_64 java version "1.6.0_10" Java(TM) SE Runtime Environment (build 1.6.0_10-b33) Java HotSpot(TM) 64-Bit Server VM (build 11.0-b15, mixed mode) NetBeans IDE Dev (Build 200810140201) I can produce a stacktrace if needed. But like the reported this makes groovy support useless as I have to wait several seconds everytime I make a change. Thread dump would be definitely useful - at least we can reassure that it is the same issue. Thanks. I don't know if the particular circumstances are exactly the same - if the freeze is always just after an edit. All I know is that netbeans often freezes when I select some text and it makes it almost unusable. Suse 10.3 64 bit/netbeans 6.5/java 6u10 64 bit java version "1.6.0_10" Java(TM) SE Runtime Environment (build 1.6.0_10-b33) Java HotSpot(TM) Server VM (build 11.0-b15, mixed mode) using Nimbus. 126 groovy files and 135 java files. If this isn't fixed soon, I may not have much hair left, I'm always pulling it out when this happens. It really disrupts my "flow", which is awful. Just wanted to add that I am also seeing this bug. If I am editing a groovy file...I basically try to remember not to select anything. This problem is is making it very difficult to edit groovy files efficiently. I am seeing a much longer pause than 5-10 seconds maybe because the project I am working on is larger. The GSF infrastructure avoids parsing if the scan is running. However it enters the parsing when java scan is running. This delays the EDT. The code I'm referring to is in constructor of GsfCodeTemplateFilter. This should be resolved by the new parsing API. The rewrite to parsing API should start now, targeting 7.0M2. I have the same issue here and wanted to add, that I hoped it would help to increase the memory settings as a workaround, but it doesn't seem to do anything. In case you should have any pre-releases for that particular part, I would be happy to test. *** Issue 156525 has been marked as a duplicate of this issue. *** *** Issue 156525 has been marked as a duplicate of this issue. *** *** Issue 142329 has been marked as a duplicate of this issue. *** *** Issue 157092 has been marked as a duplicate of this issue. *** Also seeing the bug - OS X, JDK 1.6. This makes the groovy editor almost unusable. As parsing API won't make it to M2 I've prepared a workaround - main 3271971588da. It would be great if you could test the build with this change - integration message should appear in comments soon, describing which build to download. Lowering to P3 (as a reminder for future integration). This has been workarounded on trunk and properly fixed in parsing api clone. Please verify once the daily build is available. Integrated into 'main-golden', will be available in build *200902180201* on http://bits.netbeans.org/dev/nightly/ (upload may still be in progress) Changeset: http://hg.netbeans.org/main/rev/3271971588da User: phejl@netbeans.org Log: #152894 Edit/Highlight loop causes 5s-10s EDT pauses Anybody interested can verify with http://bits.netbeans.org/dev/nightly/2009-02-18_02-01-11/. Thanks, P. 2009-02-18_02-01-11 seems to do the trick. thx a lot! Which package on the nightly page? Java SE, Java, Ruby, C/C++, PHP, or All? I am assuming all, but is there a smaller package I could try? Package Java. I'll fight more to have a Groovy row on that page ;) *** Issue 158950 has been marked as a duplicate of this issue. *** FYI I spent a day doing development with yesterday's (2/22/09) development build and most of this issue is cleared up; however, I am still seeing the occasional freeze. It happens very rarely now, meaning that I could certainly use the platform for development, but the problem still exists somewhere deep down. It now seems to happen after I paste text into a file, although that just happened to be when I noticed it. Over about eight hours I only noticed a freeze about a half dozen times. At least it's just a minor annoyance now. Hi hippy, do you think it would be possible to generate thread dump when it happens again (http://wiki.netbeans.org/GenerateThreadDump)? Thanks, P. Created attachment 77294 [details]
thread dump during IDE freeze (2/22 daily build)
I just posted the thread dump of my IDE during the freeze I described above. To replicate: 1) Open Groovy file 2) Select and copy some text 3) Keep pasting it into editor until it freezes It took me about ten seconds or so to see the lock up. By the way, after posting the thread dump and my last comment, I went back to shut the IDE down so I could get back to my morning coffee and the all too depressing news, and the IDE was *still* frozen. It looks like I will have to kill the VM. Note: ctrl-c in the console had to be done twice. The first time the console just started scrolling along will some message being repeated about 1.3 and parsing? Sorry I didn't capture it. With rewrite to parsing API/CSL the bug is not relevant anymore. Please feel free to report any recent hiccups to issue 160727. |