Very long hang on some type completion

65 views
Skip to first unread message

Francois

unread,
Jun 5, 2013, 12:17:49 PM6/5/13
to scala-ide-user
Hello,

When completing for some type, I experience very long pause (tens of
second) where the Scala IDE is completly frozen.
My machine is quite powerful (quad-core i7, 8Go of RAM), and Scala IDE
is rather responsive most of the time.

I don't know what completion will trigger the hang, but it seems to be
only when completing for class names. The class being already imported
or not does not seems to have an impact. It does not happen on all
types, nor always on the same ones.

I use that env:
Scala plugin version: 3.0.0.v-2_10-201303191346-dac2f1c
Scala compiler version: 2.10.1.v20130302-092018-VFINAL-33e32179fd
Scala library version: 2.10.1.v20130302-092018-VFINAL-33e32179fd
Eclipse version: 3.7.2.v201202080800

Join at the end of this mail is a thread dump when one of the hang happened.

Cheers,


=============================================


2013-06-05 18:13:46
Full thread dump Java HotSpot(TM) 64-Bit Server VM (23.21-b01 mixed mode):

"RMI TCP Connection(2)-127.0.0.1" daemon prio=10 tid=0x00007f2fe80ab000
nid=0x133f runnable [0x00007f2fa88d0000]
java.lang.Thread.State: RUNNABLE
at java.net.SocketInputStream.socketRead0(Native Method)
at java.net.SocketInputStream.read(SocketInputStream.java:150)
at java.net.SocketInputStream.read(SocketInputStream.java:121)
at java.io.BufferedInputStream.fill(BufferedInputStream.java:235)
at java.io.BufferedInputStream.read(BufferedInputStream.java:254)
- locked <0x00000007914920e0> (a java.io.BufferedInputStream)
at java.io.FilterInputStream.read(FilterInputStream.java:83)
at
sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:535)
at
sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:808)
at
sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:667)
at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:722)

Locked ownable synchronizers:
- <0x0000000791492330> (a
java.util.concurrent.ThreadPoolExecutor$Worker)

"JMX server connection timeout 85" daemon prio=10 tid=0x00007f2f8801c000
nid=0x1322 in Object.wait() [0x00007f2fa84cf000]
java.lang.Thread.State: TIMED_WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0x0000000791602e60> (a [I)
at
com.sun.jmx.remote.internal.ServerCommunicatorAdmin$Timeout.run(ServerCommunicatorAdmin.java:168)
- locked <0x0000000791602e60> (a [I)
at java.lang.Thread.run(Thread.java:722)

Locked ownable synchronizers:
- None

"RMI Scheduler(0)" daemon prio=10 tid=0x00007f2f88016800 nid=0x1321
waiting on condition [0x00007f2fa98df000]
java.lang.Thread.State: TIMED_WAITING (parking)
at sun.misc.Unsafe.park(Native Method)
- parking to wait for <0x0000000791602ee8> (a
java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
at
java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:226)
at
java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:2082)
at
java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1090)
at
java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:807)
at
java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1068)
at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130)
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:722)

Locked ownable synchronizers:
- None

"RMI TCP Connection(1)-127.0.0.1" daemon prio=10 tid=0x00007f2fe8028800
nid=0x1320 runnable [0x00007f2fa90dd000]
java.lang.Thread.State: RUNNABLE
at java.net.SocketInputStream.socketRead0(Native Method)
at java.net.SocketInputStream.read(SocketInputStream.java:150)
at java.net.SocketInputStream.read(SocketInputStream.java:121)
at java.io.BufferedInputStream.fill(BufferedInputStream.java:235)
at java.io.BufferedInputStream.read(BufferedInputStream.java:254)
- locked <0x00000007916050c8> (a java.io.BufferedInputStream)
at java.io.FilterInputStream.read(FilterInputStream.java:83)
at
sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:535)
at
sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:808)
at
sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:667)
at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:722)

Locked ownable synchronizers:
- <0x0000000791605288> (a
java.util.concurrent.ThreadPoolExecutor$Worker)

"RMI TCP Accept-0" daemon prio=10 tid=0x00007f2fdc0a7000 nid=0x131e
runnable [0x00007f2ffeb7c000]
java.lang.Thread.State: RUNNABLE
at java.net.PlainSocketImpl.socketAccept(Native Method)
at
java.net.AbstractPlainSocketImpl.accept(AbstractPlainSocketImpl.java:398)
at java.net.ServerSocket.implAccept(ServerSocket.java:522)
at java.net.ServerSocket.accept(ServerSocket.java:490)
at
sun.management.jmxremote.LocalRMIServerSocketFactory$1.accept(LocalRMIServerSocketFactory.java:52)
at
sun.rmi.transport.tcp.TCPTransport$AcceptLoop.executeAcceptLoop(TCPTransport.java:387)
at
sun.rmi.transport.tcp.TCPTransport$AcceptLoop.run(TCPTransport.java:359)
at java.lang.Thread.run(Thread.java:722)

Locked ownable synchronizers:
- None

"Worker-13" prio=10 tid=0x00007f2f7c1a2800 nid=0x11f3 in Object.wait()
[0x00007f2ffc6f1000]
java.lang.Thread.State: TIMED_WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0x000000079b5f49f8> (a
org.eclipse.core.internal.jobs.WorkerPool)
at org.eclipse.core.internal.jobs.WorkerPool.sleep(WorkerPool.java:188)
- locked <0x000000079b5f49f8> (a
org.eclipse.core.internal.jobs.WorkerPool)
at
org.eclipse.core.internal.jobs.WorkerPool.startJob(WorkerPool.java:220)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:50)

Locked ownable synchronizers:
- None

"Worker-12" prio=10 tid=0x00007f2fcc06a800 nid=0x115f in Object.wait()
[0x00007f2fabbfc000]
java.lang.Thread.State: TIMED_WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0x000000079b5f49f8> (a
org.eclipse.core.internal.jobs.WorkerPool)
at org.eclipse.core.internal.jobs.WorkerPool.sleep(WorkerPool.java:188)
- locked <0x000000079b5f49f8> (a
org.eclipse.core.internal.jobs.WorkerPool)
at
org.eclipse.core.internal.jobs.WorkerPool.startJob(WorkerPool.java:220)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:50)

Locked ownable synchronizers:
- None

"[ThreadPool Manager] - Idle Thread" daemon prio=10
tid=0x00007f2fe0004000 nid=0xd07 in Object.wait() [0x00007f2fff43d000]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0x00000007b14417d0> (a
org.eclipse.equinox.internal.util.impl.tpt.threadpool.Executor)
at java.lang.Object.wait(Object.java:503)
at
org.eclipse.equinox.internal.util.impl.tpt.threadpool.Executor.run(Executor.java:106)
- locked <0x00000007b14417d0> (a
org.eclipse.equinox.internal.util.impl.tpt.threadpool.Executor)

Locked ownable synchronizers:
- None

"Worker-7" prio=10 tid=0x00007f2f88001000 nid=0xc5b in Object.wait()
[0x00007f2fa8cdc000]
java.lang.Thread.State: TIMED_WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0x000000079b5f49f8> (a
org.eclipse.core.internal.jobs.WorkerPool)
at org.eclipse.core.internal.jobs.WorkerPool.sleep(WorkerPool.java:188)
- locked <0x000000079b5f49f8> (a
org.eclipse.core.internal.jobs.WorkerPool)
at
org.eclipse.core.internal.jobs.WorkerPool.startJob(WorkerPool.java:220)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:50)

Locked ownable synchronizers:
- None

"org.eclipse.jdt.internal.ui.text.JavaReconciler" daemon prio=10
tid=0x00007f303e0bd800 nid=0xc52 in Object.wait() [0x00007f2fa9e7f000]
java.lang.Thread.State: TIMED_WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0x00000007aaa4e910> (a
org.eclipse.jface.text.reconciler.DirtyRegionQueue)
at
org.eclipse.jface.text.reconciler.AbstractReconciler$BackgroundThread.run(AbstractReconciler.java:179)
- locked <0x00000007aaa4e910> (a
org.eclipse.jface.text.reconciler.DirtyRegionQueue)

Locked ownable synchronizers:
- None

"Scala Presentation Compiler [rudder-core]" daemon prio=10
tid=0x00007f303e0ac800 nid=0xc49 in Object.wait() [0x00007f2faa280000]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0x00000007aaa54910> (a scala.tools.nsc.util.WorkScheduler)
at java.lang.Object.wait(Object.java:503)
at
scala.tools.nsc.util.WorkScheduler.waitForMoreWork(WorkScheduler.scala:16)
- locked <0x00000007aaa54910> (a scala.tools.nsc.util.WorkScheduler)
at
scala.tools.nsc.interactive.PresentationCompilerThread$$anonfun$run$1.apply$mcZ$sp(PresentationCompilerThread.scala:21)
at scala.tools.nsc.io.NullLogger$.logreplay(Replayer.scala:38)
at
scala.tools.nsc.interactive.PresentationCompilerThread.run(PresentationCompilerThread.scala:21)

Locked ownable synchronizers:
- None

"org.eclipse.jdt.internal.ui.text.JavaReconciler" daemon prio=10
tid=0x00007f303e027000 nid=0xc48 in Object.wait() [0x00007f2faa6e6000]
java.lang.Thread.State: TIMED_WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0x00000007aab1eb50> (a
org.eclipse.jface.text.reconciler.DirtyRegionQueue)
at
org.eclipse.jface.text.reconciler.AbstractReconciler$BackgroundThread.run(AbstractReconciler.java:179)
- locked <0x00000007aab1eb50> (a
org.eclipse.jface.text.reconciler.DirtyRegionQueue)

Locked ownable synchronizers:
- None

"Scala Presentation Compiler [rudder-web]" daemon prio=10
tid=0x00007f303db74000 nid=0xc28 in Object.wait() [0x00007f2faae56000]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0x00000007a8bba608> (a scala.tools.nsc.util.WorkScheduler)
at java.lang.Object.wait(Object.java:503)
at
scala.tools.nsc.util.WorkScheduler.waitForMoreWork(WorkScheduler.scala:16)
- locked <0x00000007a8bba608> (a scala.tools.nsc.util.WorkScheduler)
at
scala.tools.nsc.interactive.PresentationCompilerThread$$anonfun$run$1.apply$mcZ$sp(PresentationCompilerThread.scala:21)
at scala.tools.nsc.io.NullLogger$.logreplay(Replayer.scala:38)
at
scala.tools.nsc.interactive.PresentationCompilerThread.run(PresentationCompilerThread.scala:21)

Locked ownable synchronizers:
- None

"Java indexing" daemon prio=10 tid=0x00007f303cd97800 nid=0xc02 in
Object.wait() [0x00007f2fab39e000]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0x000000079cceb358> (a
org.eclipse.jdt.internal.core.search.indexing.IndexManager)
at java.lang.Object.wait(Object.java:503)
at
org.eclipse.jdt.internal.core.search.processing.JobManager.run(JobManager.java:382)
- locked <0x000000079cceb358> (a
org.eclipse.jdt.internal.core.search.indexing.IndexManager)
at java.lang.Thread.run(Thread.java:722)

Locked ownable synchronizers:
- None

"Worker-1" prio=10 tid=0x00007f2fe80af000 nid=0xbdb in Object.wait()
[0x00007f2ffd777000]
java.lang.Thread.State: TIMED_WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0x0000000791492520> (a org.eclipse.ui.internal.Semaphore)
at org.eclipse.ui.internal.Semaphore.acquire(Semaphore.java:43)
- locked <0x0000000791492520> (a org.eclipse.ui.internal.Semaphore)
at
org.eclipse.ui.internal.UISynchronizer.syncExec(UISynchronizer.java:168)
at org.eclipse.swt.widgets.Display.syncExec(Display.java:4330)
at org.eclipse.egit.ui.Activator.isActive(Activator.java:222)
at
org.eclipse.egit.ui.Activator$RepositoryChangeScanner.run(Activator.java:432)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54)

Locked ownable synchronizers:
- None

"Provisioning Event Dispatcher" daemon prio=10 tid=0x00007f2fec360800
nid=0xa81 in Object.wait() [0x00007f2ffdb78000]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0x000000079a572120> (a
org.eclipse.osgi.framework.eventmgr.EventManager$EventThread)
at java.lang.Object.wait(Object.java:503)
at
org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.getNextEvent(EventManager.java:400)
- locked <0x000000079a572120> (a
org.eclipse.osgi.framework.eventmgr.EventManager$EventThread)
at
org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.run(EventManager.java:336)

Locked ownable synchronizers:
- None

"Worker-JM" prio=10 tid=0x00007f2fec134800 nid=0xa61 in Object.wait()
[0x00007f2ffdf79000]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0x000000079a50d430> (a java.util.ArrayList)
at
org.eclipse.core.internal.jobs.InternalWorker.run(InternalWorker.java:58)
- locked <0x000000079a50d430> (a java.util.ArrayList)

Locked ownable synchronizers:
- None

"[Timer] - Main Queue Handler" daemon prio=10 tid=0x00007f2fec0c7000
nid=0xa60 in Object.wait() [0x00007f2ffe37a000]
java.lang.Thread.State: TIMED_WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0x000000079a3e6c60> (a java.lang.Object)
at
org.eclipse.equinox.internal.util.impl.tpt.timer.TimerImpl.run(TimerImpl.java:141)
- locked <0x000000079a3e6c60> (a java.lang.Object)
at java.lang.Thread.run(Thread.java:722)

Locked ownable synchronizers:
- None

"Attach Listener" daemon prio=10 tid=0x00007f3014001000 nid=0xa5f
waiting on condition [0x0000000000000000]
java.lang.Thread.State: RUNNABLE

Locked ownable synchronizers:
- None

"Framework Event Dispatcher" daemon prio=10 tid=0x00007f2fec017000
nid=0xa5b in Object.wait() [0x00007f2fff03c000]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0x000000079a5a9c58> (a
org.eclipse.osgi.framework.eventmgr.EventManager$EventThread)
at java.lang.Object.wait(Object.java:503)
at
org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.getNextEvent(EventManager.java:400)
- locked <0x000000079a5a9c58> (a
org.eclipse.osgi.framework.eventmgr.EventManager$EventThread)
at
org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.run(EventManager.java:336)

Locked ownable synchronizers:
- None

"Start Level Event Dispatcher" daemon prio=10 tid=0x00007f303c78e800
nid=0xa59 in Object.wait() [0x00007f2fff83e000]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0x000000079a5a9cd0> (a
org.eclipse.osgi.framework.eventmgr.EventManager$EventThread)
at java.lang.Object.wait(Object.java:503)
at
org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.getNextEvent(EventManager.java:400)
- locked <0x000000079a5a9cd0> (a
org.eclipse.osgi.framework.eventmgr.EventManager$EventThread)
at
org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.run(EventManager.java:336)

Locked ownable synchronizers:
- None

"Bundle File Closer" daemon prio=10 tid=0x00007f303c7d4000 nid=0xa58 in
Object.wait() [0x00007f2fffe97000]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0x000000079a5a9b68> (a
org.eclipse.osgi.framework.eventmgr.EventManager$EventThread)
at java.lang.Object.wait(Object.java:503)
at
org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.getNextEvent(EventManager.java:400)
- locked <0x000000079a5a9b68> (a
org.eclipse.osgi.framework.eventmgr.EventManager$EventThread)
at
org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.run(EventManager.java:336)

Locked ownable synchronizers:
- None

"State Data Manager" daemon prio=10 tid=0x00007f303c505000 nid=0xa57
waiting on condition [0x00007f3008438000]
java.lang.Thread.State: TIMED_WAITING (sleeping)
at java.lang.Thread.sleep(Native Method)
at
org.eclipse.osgi.internal.baseadaptor.StateManager.run(StateManager.java:297)
at java.lang.Thread.run(Thread.java:722)

Locked ownable synchronizers:
- None

"Framework Active Thread" prio=10 tid=0x00007f303c4e8000 nid=0xa56 in
Object.wait() [0x00007f3008839000]
java.lang.Thread.State: TIMED_WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0x000000079a57e128> (a
org.eclipse.osgi.framework.internal.core.Framework)
at
org.eclipse.osgi.framework.internal.core.Framework.run(Framework.java:1817)
- locked <0x000000079a57e128> (a
org.eclipse.osgi.framework.internal.core.Framework)
at java.lang.Thread.run(Thread.java:722)

Locked ownable synchronizers:
- None

"Service Thread" daemon prio=10 tid=0x00007f303c210800 nid=0xa54
runnable [0x0000000000000000]
java.lang.Thread.State: RUNNABLE

Locked ownable synchronizers:
- None

"C2 CompilerThread1" daemon prio=10 tid=0x00007f303c20d800 nid=0xa53
waiting on condition [0x0000000000000000]
java.lang.Thread.State: RUNNABLE

Locked ownable synchronizers:
- None

"C2 CompilerThread0" daemon prio=10 tid=0x00007f303c20b800 nid=0xa52
waiting on condition [0x0000000000000000]
java.lang.Thread.State: RUNNABLE

Locked ownable synchronizers:
- None

"Signal Dispatcher" daemon prio=10 tid=0x00007f303c209800 nid=0xa51
runnable [0x0000000000000000]
java.lang.Thread.State: RUNNABLE

Locked ownable synchronizers:
- None

"Surrogate Locker Thread (Concurrent GC)" daemon prio=10
tid=0x00007f303c207000 nid=0xa50 waiting on condition [0x0000000000000000]
java.lang.Thread.State: RUNNABLE

Locked ownable synchronizers:
- None

"Finalizer" daemon prio=10 tid=0x00007f303c1ba000 nid=0xa4f in
Object.wait() [0x00007f3034414000]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0x000000079a576f48> (a java.lang.ref.ReferenceQueue$Lock)
at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:135)
- locked <0x000000079a576f48> (a java.lang.ref.ReferenceQueue$Lock)
at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:151)
at java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:189)

Locked ownable synchronizers:
- None

"Reference Handler" daemon prio=10 tid=0x00007f303c1b7800 nid=0xa4e in
Object.wait() [0x00007f3034815000]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0x000000079a3e6c78> (a java.lang.ref.Reference$Lock)
at java.lang.Object.wait(Object.java:503)
at java.lang.ref.Reference$ReferenceHandler.run(Reference.java:133)
- locked <0x000000079a3e6c78> (a java.lang.ref.Reference$Lock)

Locked ownable synchronizers:
- None

"main" prio=10 tid=0x00007f303c009800 nid=0xa41 runnable
[0x00007f30436be000]
java.lang.Thread.State: RUNNABLE
at
scala.collection.generic.Growable$$anonfun$$plus$plus$eq$1.apply(Growable.scala:48)
at
scala.collection.generic.Growable$$anonfun$$plus$plus$eq$1.apply(Growable.scala:48)
at
scala.collection.IndexedSeqOptimized$class.foreach(IndexedSeqOptimized.scala:33)
at scala.collection.mutable.WrappedArray.foreach(WrappedArray.scala:34)
at
scala.collection.generic.Growable$class.$plus$plus$eq(Growable.scala:48)
at
scala.collection.immutable.VectorBuilder.$plus$plus$eq(Vector.scala:716)
at
scala.collection.immutable.VectorBuilder.$plus$plus$eq(Vector.scala:692)
at scala.collection.TraversableLike$class.to(TraversableLike.scala:629)
at scala.collection.mutable.ArrayOps$ofChar.to(ArrayOps.scala:141)
at
scala.collection.TraversableOnce$class.toIndexedSeq(TraversableOnce.scala:263)
at
scala.collection.mutable.ArrayOps$ofChar.toIndexedSeq(ArrayOps.scala:141)
at scala.Array$.unapplySeq(Array.scala:443)
at
scala.tools.refactoring.sourcegen.CommentsUtils$$anonfun$1$$anonfun$apply$1.apply(CommentsUtils.scala:46)
at
scala.tools.refactoring.sourcegen.CommentsUtils$$anonfun$1$$anonfun$apply$1.apply(CommentsUtils.scala:32)
at scala.collection.Iterator$class.foreach(Iterator.scala:727)
at scala.collection.AbstractIterator.foreach(Iterator.scala:1157)
at
scala.tools.refactoring.sourcegen.CommentsUtils$$anonfun$1.apply(CommentsUtils.scala:32)
at
scala.tools.refactoring.sourcegen.CommentsUtils$$anonfun$1.apply(CommentsUtils.scala:16)
at
scala.tools.refactoring.util.Memoized$$anonfun$apply$1.apply(Memoized.scala:62)
at
scala.tools.refactoring.sourcegen.CommentsUtils$.stripComment(CommentsUtils.scala:12)
at
scala.tools.refactoring.sourcegen.Layout$class.withoutComments(Layout.scala:21)
at
scala.tools.refactoring.sourcegen.Layout$$anon$3.withoutComments$lzycompute(Layout.scala:29)
- locked <0x0000000772f5b908> (a
scala.tools.refactoring.sourcegen.Layout$$anon$3)
at
scala.tools.refactoring.sourcegen.Layout$$anon$3.withoutComments(Layout.scala:29)
at
scala.tools.refactoring.sourcegen.Layout$class.matches(Layout.scala:15)
at
scala.tools.refactoring.sourcegen.Layout$$anon$3.matches(Layout.scala:29)
at
scala.tools.refactoring.sourcegen.Requisite$$anon$1.isRequired(Requisite.scala:90)
at
scala.tools.refactoring.sourcegen.Requisite$class.apply(Requisite.scala:14)
at
scala.tools.refactoring.sourcegen.Requisite$$anon$1.apply(Requisite.scala:87)
at
scala.tools.refactoring.sourcegen.Fragment$$anon$7.<init>(Fragment.scala:78)
at
scala.tools.refactoring.sourcegen.Fragment$class.$plus$plus(Fragment.scala:75)
at
scala.tools.refactoring.sourcegen.EmptyFragment.$plus$plus(Fragment.scala:97)
at
scala.tools.refactoring.sourcegen.TreePrintingTraversals$TreePrinting$$anonfun$printManyTrees$4.apply(TreePrintingTraversals.scala:293)
at
scala.tools.refactoring.sourcegen.TreePrintingTraversals$TreePrinting$$anonfun$printManyTrees$4.apply(TreePrintingTraversals.scala:286)
at
scala.collection.immutable.List$$anonfun$foldRight$1.apply(List.scala:306)
at
scala.collection.LinearSeqOptimized$class.foldLeft(LinearSeqOptimized.scala:111)
at scala.collection.immutable.List.foldLeft(List.scala:84)
at scala.collection.immutable.List.foldRight(List.scala:306)
at
scala.tools.refactoring.sourcegen.TreePrintingTraversals$TreePrinting$class.printManyTrees(TreePrintingTraversals.scala:286)
at
scala.tools.refactoring.sourcegen.ReusingPrinter$reusingPrinter$.printManyTrees(ReusingPrinter.scala:16)
at
scala.tools.refactoring.sourcegen.TreePrintingTraversals$TreePrinting$class.pp(TreePrintingTraversals.scala:172)
at
scala.tools.refactoring.sourcegen.ReusingPrinter$reusingPrinter$.pp(ReusingPrinter.scala:16)
at
scala.tools.refactoring.sourcegen.ReusingPrinter$PackagePrinters$class.PackageDef(ReusingPrinter.scala:634)
at
scala.tools.refactoring.sourcegen.ReusingPrinter$reusingPrinter$.PackageDef(ReusingPrinter.scala:16)
at
scala.tools.refactoring.sourcegen.TreePrintingTraversals$TreePrinting$$anonfun$dispatchToPrinter$1.apply(TreePrintingTraversals.scala:25)
at
scala.tools.refactoring.sourcegen.TreePrintingTraversals$TreePrinting$$anonfun$dispatchToPrinter$1.apply(TreePrintingTraversals.scala:18)
at
scala.tools.refactoring.common.SilentTracing$class.context(tracing.scala:71)
at
scala.tools.refactoring.implementations.AddImportStatement.context(AddImportStatement.scala:13)
at
scala.tools.refactoring.sourcegen.TreePrintingTraversals$TreePrinting$class.dispatchToPrinter(TreePrintingTraversals.scala:18)
at
scala.tools.refactoring.sourcegen.ReusingPrinter$reusingPrinter$.dispatchToPrinter(ReusingPrinter.scala:42)
at
scala.tools.refactoring.sourcegen.SourceGenerator$class.print(SourceGenerator.scala:156)
at
scala.tools.refactoring.implementations.AddImportStatement.print(AddImportStatement.scala:13)
at
scala.tools.refactoring.sourcegen.SourceGenerator$class.generate(SourceGenerator.scala:88)
at
scala.tools.refactoring.implementations.AddImportStatement.generate(AddImportStatement.scala:13)
at
scala.tools.refactoring.sourcegen.SourceGenerator$$anonfun$generateFragmentsFromTrees$4.apply(SourceGenerator.scala:117)
at
scala.tools.refactoring.sourcegen.SourceGenerator$$anonfun$generateFragmentsFromTrees$4.apply(SourceGenerator.scala:114)
at
scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:244)
at
scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:244)
at scala.collection.immutable.List.foreach(List.scala:318)
at scala.collection.TraversableLike$class.map(TraversableLike.scala:244)
at scala.collection.AbstractTraversable.map(Traversable.scala:105)
at
scala.tools.refactoring.sourcegen.SourceGenerator$class.generateFragmentsFromTrees(SourceGenerator.scala:114)
at
scala.tools.refactoring.implementations.AddImportStatement.generateFragmentsFromTrees(AddImportStatement.scala:13)
at
scala.tools.refactoring.sourcegen.SourceGenerator$$anonfun$createChanges$1.apply(SourceGenerator.scala:33)
at
scala.tools.refactoring.sourcegen.SourceGenerator$$anonfun$createChanges$1.apply(SourceGenerator.scala:33)
at
scala.tools.refactoring.common.SilentTracing$class.context(tracing.scala:71)
at
scala.tools.refactoring.implementations.AddImportStatement.context(AddImportStatement.scala:13)
at
scala.tools.refactoring.sourcegen.SourceGenerator$class.createChanges(SourceGenerator.scala:32)
at
scala.tools.refactoring.implementations.AddImportStatement.createChanges(AddImportStatement.scala:13)
at
scala.tools.refactoring.Refactoring$$anonfun$refactor$1.apply(Refactoring.scala:29)
at
scala.tools.refactoring.Refactoring$$anonfun$refactor$1.apply(Refactoring.scala:28)
at
scala.tools.refactoring.common.SilentTracing$class.context(tracing.scala:71)
at
scala.tools.refactoring.implementations.AddImportStatement.context(AddImportStatement.scala:13)
at
scala.tools.refactoring.Refactoring$class.refactor(Refactoring.scala:28)
at
scala.tools.refactoring.implementations.AddImportStatement.refactor(AddImportStatement.scala:13)
at
scala.tools.refactoring.implementations.AddImportStatement.addImports(AddImportStatement.scala:23)
at
scala.tools.refactoring.implementations.AddImportStatement.addImport(AddImportStatement.scala:17)
at
scala.tools.eclipse.ui.ScalaCompletionProposal$$anonfun$apply$1$$anonfun$3.apply(ScalaCompletionProposal.scala:125)
at
scala.tools.eclipse.ui.ScalaCompletionProposal$$anonfun$apply$1$$anonfun$3.apply(ScalaCompletionProposal.scala:123)
at
scala.tools.eclipse.ScalaPresentationCompiler.withSourceFile(ScalaPresentationCompiler.scala:99)
at
scala.tools.eclipse.ScalaProject$$anonfun$withSourceFile$1.apply(ScalaProject.scala:602)
at
scala.tools.eclipse.ScalaProject$$anonfun$withSourceFile$1.apply(ScalaProject.scala:601)
at
scala.tools.eclipse.ScalaProject$$anonfun$withPresentationCompiler$1.apply(ScalaProject.scala:595)
at
scala.tools.eclipse.ScalaProject$$anonfun$withPresentationCompiler$1.apply(ScalaProject.scala:594)
at scala.tools.eclipse.util.Cached$class.apply(Cached.scala:41)
at scala.tools.eclipse.ScalaProject$$anon$1.apply(ScalaProject.scala:96)
at
scala.tools.eclipse.ScalaProject.withPresentationCompiler(ScalaProject.scala:594)
at
scala.tools.eclipse.ScalaProject.withSourceFile(ScalaProject.scala:603)
at
scala.tools.eclipse.InteractiveCompilationUnit$class.withSourceFile(InteractiveCompilationUnit.scala:66)
at
scala.tools.eclipse.javaelements.ScalaSourceFile.withSourceFile(ScalaSourceFile.scala:50)
at
scala.tools.eclipse.ui.ScalaCompletionProposal$$anonfun$apply$1.apply(ScalaCompletionProposal.scala:126)
at
scala.tools.eclipse.ui.ScalaCompletionProposal$$anonfun$apply$1.apply(ScalaCompletionProposal.scala:116)
at
scala.tools.eclipse.refactoring.EditorHelpers$$anonfun$withScalaFileAndSelection$1$$anonfun$apply$4$$anonfun$apply$5.apply(EditorHelpers.scala:77)
at
scala.tools.eclipse.refactoring.EditorHelpers$$anonfun$withScalaFileAndSelection$1$$anonfun$apply$4$$anonfun$apply$5.apply(EditorHelpers.scala:76)
at scala.Option.flatMap(Option.scala:170)
at
scala.tools.eclipse.refactoring.EditorHelpers$$anonfun$withScalaFileAndSelection$1$$anonfun$apply$4.apply(EditorHelpers.scala:76)
at
scala.tools.eclipse.refactoring.EditorHelpers$$anonfun$withScalaFileAndSelection$1$$anonfun$apply$4.apply(EditorHelpers.scala:75)
at scala.Option.flatMap(Option.scala:170)
at
scala.tools.eclipse.refactoring.EditorHelpers$$anonfun$withScalaFileAndSelection$1.apply(EditorHelpers.scala:75)
at
scala.tools.eclipse.refactoring.EditorHelpers$$anonfun$withScalaFileAndSelection$1.apply(EditorHelpers.scala:74)
at scala.Option.flatMap(Option.scala:170)
at
scala.tools.eclipse.refactoring.EditorHelpers$$anonfun$withCurrentEditor$1$$anonfun$apply$1$$anonfun$apply$2.apply(EditorHelpers.scala:59)
at
scala.tools.eclipse.refactoring.EditorHelpers$$anonfun$withCurrentEditor$1$$anonfun$apply$1$$anonfun$apply$2.apply(EditorHelpers.scala:59)
at scala.Option.flatMap(Option.scala:170)
at
scala.tools.eclipse.refactoring.EditorHelpers$$anonfun$withCurrentEditor$1$$anonfun$apply$1.apply(EditorHelpers.scala:58)
at
scala.tools.eclipse.refactoring.EditorHelpers$$anonfun$withCurrentEditor$1$$anonfun$apply$1.apply(EditorHelpers.scala:58)
at scala.Option.flatMap(Option.scala:170)
at
scala.tools.eclipse.refactoring.EditorHelpers$$anonfun$withCurrentEditor$1.apply(EditorHelpers.scala:57)
at
scala.tools.eclipse.refactoring.EditorHelpers$$anonfun$withCurrentEditor$1.apply(EditorHelpers.scala:57)
at scala.Option.flatMap(Option.scala:170)
at
scala.tools.eclipse.refactoring.EditorHelpers$.withCurrentEditor(EditorHelpers.scala:56)
at
scala.tools.eclipse.refactoring.EditorHelpers$.withScalaFileAndSelection(EditorHelpers.scala:74)
at
scala.tools.eclipse.ui.ScalaCompletionProposal.apply(ScalaCompletionProposal.scala:116)
at
org.eclipse.jface.text.contentassist.CompletionProposalPopup.insertProposal(CompletionProposalPopup.java:933)
at
org.eclipse.jface.text.contentassist.CompletionProposalPopup.insertSelectedProposalWithMask(CompletionProposalPopup.java:881)
at
org.eclipse.jface.text.contentassist.CompletionProposalPopup.access$27(CompletionProposalPopup.java:877)
at
org.eclipse.jface.text.contentassist.CompletionProposalPopup$5.widgetDefaultSelected(CompletionProposalPopup.java:657)
at
org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:119)
at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1258)
at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3588)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3209)
at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2701)
at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2665)
at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2499)
at org.eclipse.ui.internal.Workbench$7.run(Workbench.java:679)
at
org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
at
org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:668)
at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
at
org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:123)
at
org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
at
org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)
at
org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
at
org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:344)
at
org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:622)
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:577)
at org.eclipse.equinox.launcher.Main.run(Main.java:1410)
at org.eclipse.equinox.launcher.Main.main(Main.java:1386)

Locked ownable synchronizers:
- None

"VM Thread" prio=10 tid=0x00007f303c1b0000 nid=0xa4d runnable

"Gang worker#0 (Parallel GC Threads)" prio=10 tid=0x00007f303c013000
nid=0xa42 runnable

"Gang worker#1 (Parallel GC Threads)" prio=10 tid=0x00007f303c014800
nid=0xa43 runnable

"Gang worker#2 (Parallel GC Threads)" prio=10 tid=0x00007f303c016800
nid=0xa44 runnable

"Gang worker#3 (Parallel GC Threads)" prio=10 tid=0x00007f303c018800
nid=0xa45 runnable

"Gang worker#4 (Parallel GC Threads)" prio=10 tid=0x00007f303c01a000
nid=0xa46 runnable

"Gang worker#5 (Parallel GC Threads)" prio=10 tid=0x00007f303c01c000
nid=0xa47 runnable

"Gang worker#6 (Parallel GC Threads)" prio=10 tid=0x00007f303c01e000
nid=0xa48 runnable

"Gang worker#7 (Parallel GC Threads)" prio=10 tid=0x00007f303c01f800
nid=0xa49 runnable

"Concurrent Mark-Sweep GC Thread" prio=10 tid=0x00007f303c113800
nid=0xa4c runnable
"Gang worker#0 (Parallel CMS Threads)" prio=10 tid=0x00007f303c10f800
nid=0xa4a runnable

"Gang worker#1 (Parallel CMS Threads)" prio=10 tid=0x00007f303c111000
nid=0xa4b runnable

"VM Periodic Task Thread" prio=10 tid=0x00007f303c21b800 nid=0xa55
waiting on condition

JNI global references: 1621


==============================================

--
Francois ARMAND
http://fanf42.blogspot.com
http://www.normation.com




iulian dragos

unread,
Jun 5, 2013, 12:47:17 PM6/5/13
to scala-i...@googlegroups.com
On Wed, Jun 5, 2013 at 6:17 PM, Francois <fan...@gmail.com> wrote:
Hello,

When completing for some type, I experience very long pause (tens of
second) where the Scala IDE is completly frozen.
My machine is quite powerful (quad-core i7, 8Go of RAM), and Scala IDE
is rather responsive most of the time.

I don't know what completion will trigger the hang, but it seems to be
only when completing for class names. The class being already imported
or not does not seems to have an impact. It does not happen on all
types, nor always on the same ones.

Judging by the stack trace, you hit https://www.assembla.com/spaces/scala-ide/tickets/1001735. It looks like the refactoring library has some very inefficient code path when adding a new import. Does this happen *after* choosing a completion from the list?

cheers,
iulian
 
--
You received this message because you are subscribed to the Google Groups "Scala IDE User" group.
To unsubscribe from this group and stop receiving emails from it, send an email to scala-ide-use...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.





--
« Je déteste la montagne, ça cache le paysage »
Alphonse Allais

Francois

unread,
Jun 15, 2013, 5:56:02 AM6/15/13
to scala-i...@googlegroups.com, iulian dragos
On 05/06/2013 18:47, iulian dragos wrote:



On Wed, Jun 5, 2013 at 6:17 PM, Francois <fan...@gmail.com> wrote:
Hello,

When completing for some type, I experience very long pause (tens of
second) where the Scala IDE is completly frozen.
My machine is quite powerful (quad-core i7, 8Go of RAM), and Scala IDE
is rather responsive most of the time.

I don't know what completion will trigger the hang, but it seems to be
only when completing for class names. The class being already imported
or not does not seems to have an impact. It does not happen on all
types, nor always on the same ones.

Judging by the stack trace, you hit https://www.assembla.com/spaces/scala-ide/tickets/1001735. It looks like the refactoring library has some very inefficient code path when adding a new import. Does this happen *after* choosing a completion from the list?
 


Sorry, I somehow managed to miss your answer for all that time... Yes, the delay happens after I chose the completion, so you seems to be right.

Thanks,
Reply all
Reply to author
Forward
0 new messages