Community
Participate
Working Groups
Eclipse deadlocked several times for me. I had to switch to command line via Ctrl+Shift+F5 outside the main Ubuntu UI to get a stack trace. 2019-11-14 11:55:41 Full thread dump OpenJDK 64-Bit Server VM (12.0.1+12 mixed mode, sharing): Threads class SMR info: _java_thread_list=0x00007f6fe0040990, length=29, elements={ 0x00007f7020012000, 0x00007f70201a4800, 0x00007f70201a7000, 0x00007f70201ad000, 0x00007f70201af000, 0x00007f70201b1000, 0x00007f70201b3000, 0x00007f70201c1800, 0x00007f7020225000, 0x00007f702063e800, 0x00007f70205ff800, 0x00007f7020600800, 0x00007f6fa002b000, 0x00007f6fa032b000, 0x00007f6fa0365000, 0x00007f7020598000, 0x00007f7020c2d000, 0x00007f7021cf4000, 0x00007f7020b8c800, 0x00007f6ff0160800, 0x00007f70213c3000, 0x00007f6fdc064800, 0x00007f6fac02d000, 0x00007f6fa0081800, 0x00007f7023378800, 0x00007f6fc003c000, 0x00007f6fc0001800, 0x00007f6fc0066000, 0x00007f6fe0002000 } "main" #1 prio=6 os_prio=0 cpu=67858,25ms elapsed=2012,31s tid=0x00007f7020012000 nid=0x37ca waiting for monitor entry [0x00007f702612b000] java.lang.Thread.State: BLOCKED (on object monitor) at org.eclipse.core.internal.filebuffers.SynchronizableDocument.getLineInformation(SynchronizableDocument.java:289) - waiting to lock <0x00000000d31ad520> (a java.lang.Object) at org.eclipse.jface.text.DefaultDocumentAdapter.doGetLine(DefaultDocumentAdapter.java:145) at org.eclipse.jface.text.DefaultDocumentAdapter.getLine(DefaultDocumentAdapter.java:158) at org.eclipse.swt.custom.StyledTextRenderer.drawLine(StyledTextRenderer.java:451) at org.eclipse.swt.custom.StyledText.handlePaint(StyledText.java:6259) at org.eclipse.swt.custom.StyledText.lambda$1(StyledText.java:5800) at org.eclipse.swt.custom.StyledText$$Lambda$656/0x0000000801e01440.handleEvent(Unknown Source) at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:89) at org.eclipse.swt.widgets.Display.sendEvent(Display.java:5667) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1423) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1449) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1432) at org.eclipse.swt.widgets.Control.gtk_draw(Control.java:3925) at org.eclipse.swt.widgets.Scrollable.gtk_draw(Scrollable.java:342) at org.eclipse.swt.widgets.Composite.gtk_draw(Composite.java:455) at org.eclipse.swt.widgets.Canvas.gtk_draw(Canvas.java:181) at org.eclipse.swt.widgets.Widget.windowProc(Widget.java:2243) at org.eclipse.swt.widgets.Control.windowProc(Control.java:6826) at org.eclipse.swt.widgets.Display.windowProc(Display.java:5908) at org.eclipse.swt.internal.gtk.GTK._gtk_main_do_event(Native Method) at org.eclipse.swt.internal.gtk.GTK.gtk_main_do_event(GTK.java:4168) at org.eclipse.swt.widgets.Display.eventProc(Display.java:1480) at org.eclipse.swt.internal.gtk.OS._g_main_context_iteration(Native Method) at org.eclipse.swt.internal.gtk.OS.g_main_context_iteration(OS.java:1604) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:4418) at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$5.run(PartRenderingEngine.java:1160) at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:338) at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1049) at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:155) at org.eclipse.ui.internal.Workbench.lambda$3(Workbench.java:660) at org.eclipse.ui.internal.Workbench$$Lambda$107/0x0000000801342440.run(Unknown Source) at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:338) at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:559) at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:154) at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:150) at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:203) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:137) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:107) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:401) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:255) at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(java.base@12.0.1/Native Method) at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(java.base@12.0.1/NativeMethodAccessorImpl.java:62) at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(java.base@12.0.1/DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(java.base@12.0.1/Method.java:567) at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:657) at org.eclipse.equinox.launcher.Main.basicRun(Main.java:594) at org.eclipse.equinox.launcher.Main.run(Main.java:1465) at org.eclipse.equinox.launcher.Main.main(Main.java:1438) "Reference Handler" #2 daemon prio=10 os_prio=0 cpu=18,79ms elapsed=2012,30s tid=0x00007f70201a4800 nid=0x37d1 waiting on condition [0x00007f6fefffe000] java.lang.Thread.State: RUNNABLE at java.lang.ref.Reference.waitForReferencePendingList(java.base@12.0.1/Native Method) at java.lang.ref.Reference.processPendingReferences(java.base@12.0.1/Reference.java:241) at java.lang.ref.Reference$ReferenceHandler.run(java.base@12.0.1/Reference.java:213) "Finalizer" #3 daemon prio=8 os_prio=0 cpu=1,02ms elapsed=2012,30s tid=0x00007f70201a7000 nid=0x37d2 in Object.wait() [0x00007f6fefefd000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(java.base@12.0.1/Native Method) - waiting on <no object reference available> at java.lang.ref.ReferenceQueue.remove(java.base@12.0.1/ReferenceQueue.java:155) - locked <0x00000000c046ddd8> (a java.lang.ref.ReferenceQueue$Lock) at java.lang.ref.ReferenceQueue.remove(java.base@12.0.1/ReferenceQueue.java:176) at java.lang.ref.Finalizer$FinalizerThread.run(java.base@12.0.1/Finalizer.java:170) "Signal Dispatcher" #4 daemon prio=9 os_prio=0 cpu=0,27ms elapsed=2012,29s tid=0x00007f70201ad000 nid=0x37d3 runnable [0x0000000000000000] java.lang.Thread.State: RUNNABLE "C2 CompilerThread0" #5 daemon prio=9 os_prio=0 cpu=37626,90ms elapsed=2012,29s tid=0x00007f70201af000 nid=0x37d4 waiting on condition [0x0000000000000000] java.lang.Thread.State: RUNNABLE No compile task "C1 CompilerThread0" #7 daemon prio=9 os_prio=0 cpu=11086,65ms elapsed=2012,29s tid=0x00007f70201b1000 nid=0x37d5 waiting on condition [0x0000000000000000] java.lang.Thread.State: RUNNABLE No compile task "Sweeper thread" #8 daemon prio=9 os_prio=0 cpu=755,77ms elapsed=2012,29s tid=0x00007f70201b3000 nid=0x37d6 runnable [0x0000000000000000] java.lang.Thread.State: RUNNABLE "Common-Cleaner" #9 daemon prio=8 os_prio=0 cpu=4,03ms elapsed=2012,28s tid=0x00007f70201c1800 nid=0x37d7 in Object.wait() [0x00007f6fef434000] java.lang.Thread.State: TIMED_WAITING (on object monitor) at java.lang.Object.wait(java.base@12.0.1/Native Method) - waiting on <no object reference available> at java.lang.ref.ReferenceQueue.remove(java.base@12.0.1/ReferenceQueue.java:155) - locked <0x00000000c043f770> (a java.lang.ref.ReferenceQueue$Lock) at jdk.internal.ref.CleanerImpl.run(java.base@12.0.1/CleanerImpl.java:148) at java.lang.Thread.run(java.base@12.0.1/Thread.java:835) at jdk.internal.misc.InnocuousThread.run(java.base@12.0.1/InnocuousThread.java:134) "Service Thread" #10 daemon prio=9 os_prio=0 cpu=27,56ms elapsed=2012,25s tid=0x00007f7020225000 nid=0x37d9 runnable [0x0000000000000000] java.lang.Thread.State: RUNNABLE "Active Thread: Equinox Container: a3cd5687-d503-4acc-aaac-0b510460d3e3" #12 prio=5 os_prio=0 cpu=14,63ms elapsed=2011,59s tid=0x00007f702063e800 nid=0x37e1 waiting on condition [0x00007f6fbb4f7000] java.lang.Thread.State: TIMED_WAITING (parking) at jdk.internal.misc.Unsafe.park(java.base@12.0.1/Native Method) - parking to wait for <0x00000000c046ea60> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject) at java.util.concurrent.locks.LockSupport.parkNanos(java.base@12.0.1/LockSupport.java:235) at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(java.base@12.0.1/AbstractQueuedSynchronizer.java:2123) at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(java.base@12.0.1/ScheduledThreadPoolExecutor.java:1182) at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(java.base@12.0.1/ScheduledThreadPoolExecutor.java:899) at java.util.concurrent.ThreadPoolExecutor.getTask(java.base@12.0.1/ThreadPoolExecutor.java:1054) at java.util.concurrent.ThreadPoolExecutor.runWorker(java.base@12.0.1/ThreadPoolExecutor.java:1114) at java.util.concurrent.ThreadPoolExecutor$Worker.run(java.base@12.0.1/ThreadPoolExecutor.java:628) at java.lang.Thread.run(java.base@12.0.1/Thread.java:835) "Framework Event Dispatcher: Equinox Container: a3cd5687-d503-4acc-aaac-0b510460d3e3" #14 daemon prio=5 os_prio=0 cpu=61,14ms elapsed=2011,37s tid=0x00007f70205ff800 nid=0x37e2 in Object.wait() [0x00007f6fbb3f6000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(java.base@12.0.1/Native Method) - waiting on <no object reference available> at java.lang.Object.wait(java.base@12.0.1/Object.java:326) at org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.getNextEvent(EventManager.java:400) - locked <0x00000000c046ed30> (a org.eclipse.osgi.framework.eventmgr.EventManager$EventThread) at org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.run(EventManager.java:341) "Start Level: Equinox Container: a3cd5687-d503-4acc-aaac-0b510460d3e3" #15 daemon prio=5 os_prio=0 cpu=595,62ms elapsed=2011,37s tid=0x00007f7020600800 nid=0x37e3 in Object.wait() [0x00007f6fbb2f5000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(java.base@12.0.1/Native Method) - waiting on <0x00000000c046ef28> (a org.eclipse.osgi.framework.eventmgr.EventManager$EventThread) at java.lang.Object.wait(java.base@12.0.1/Object.java:326) at org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.getNextEvent(EventManager.java:400) - locked <0x00000000c046ef28> (a org.eclipse.osgi.framework.eventmgr.EventManager$EventThread) at org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.run(EventManager.java:341) "SCR Component Actor" #16 daemon prio=5 os_prio=0 cpu=0,14ms elapsed=2011,34s tid=0x00007f6fa002b000 nid=0x37e4 in Object.wait() [0x00007f6fba9f4000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(java.base@12.0.1/Native Method) - waiting on <0x00000000c046f228> (a java.util.LinkedList) at java.lang.Object.wait(java.base@12.0.1/Object.java:326) at org.apache.felix.scr.impl.ComponentActorThread.run(ComponentActorThread.java:83) - locked <0x00000000c046f228> (a java.util.LinkedList) at java.lang.Thread.run(java.base@12.0.1/Thread.java:835) "Worker-JM" #18 prio=5 os_prio=0 cpu=0,27ms elapsed=2010,90s tid=0x00007f6fa032b000 nid=0x37e6 in Object.wait() [0x00007f6fba3f2000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(java.base@12.0.1/Native Method) - waiting on <no object reference available> at org.eclipse.core.internal.jobs.InternalWorker.run(InternalWorker.java:62) - locked <0x00000000c046f690> (a java.util.ArrayList) "EMF Reference Cleaner" #19 daemon prio=5 os_prio=0 cpu=88,76ms elapsed=2010,85s tid=0x00007f6fa0365000 nid=0x37e7 in Object.wait() [0x00007f6fba2f1000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(java.base@12.0.1/Native Method) - waiting on <no object reference available> at java.lang.ref.ReferenceQueue.remove(java.base@12.0.1/ReferenceQueue.java:155) - locked <0x00000000c046f890> (a java.lang.ref.ReferenceQueue$Lock) at java.lang.ref.ReferenceQueue.remove(java.base@12.0.1/ReferenceQueue.java:176) at org.eclipse.emf.common.util.CommonUtil$1ReferenceClearingQueuePollingThread.run(CommonUtil.java:70) "Gogo shell" #21 prio=5 os_prio=0 cpu=12,11ms elapsed=2010,66s tid=0x00007f7020598000 nid=0x37e9 waiting on condition [0x00007f6fb9ff0000] java.lang.Thread.State: WAITING (parking) at jdk.internal.misc.Unsafe.park(java.base@12.0.1/Native Method) - parking to wait for <0x00000000c046faa0> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject) at java.util.concurrent.locks.LockSupport.park(java.base@12.0.1/LockSupport.java:194) at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(java.base@12.0.1/AbstractQueuedSynchronizer.java:2081) at java.util.concurrent.LinkedBlockingQueue.take(java.base@12.0.1/LinkedBlockingQueue.java:433) at java.util.concurrent.ThreadPoolExecutor.getTask(java.base@12.0.1/ThreadPoolExecutor.java:1054) at java.util.concurrent.ThreadPoolExecutor.runWorker(java.base@12.0.1/ThreadPoolExecutor.java:1114) at java.util.concurrent.ThreadPoolExecutor$Worker.run(java.base@12.0.1/ThreadPoolExecutor.java:628) at java.lang.Thread.run(java.base@12.0.1/Thread.java:835) "Bundle File Closer" #25 daemon prio=6 os_prio=0 cpu=25,21ms elapsed=2010,17s tid=0x00007f7020c2d000 nid=0x37f2 in Object.wait() [0x00007f6fb9dee000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(java.base@12.0.1/Native Method) - waiting on <no object reference available> at java.lang.Object.wait(java.base@12.0.1/Object.java:326) at org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.getNextEvent(EventManager.java:400) - locked <0x00000000c0b52428> (a org.eclipse.osgi.framework.eventmgr.EventManager$EventThread) at org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.run(EventManager.java:341) "Java indexing" #28 daemon prio=4 os_prio=0 cpu=0,20ms elapsed=2005,20s tid=0x00007f7021cf4000 nid=0x37fa in Object.wait() [0x00007f6fb8191000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(java.base@12.0.1/Native Method) - waiting on <no object reference available> at java.lang.Object.wait(java.base@12.0.1/Object.java:326) at org.eclipse.jdt.internal.core.search.processing.JobManager.run(JobManager.java:378) - locked <0x00000000c21002b0> (a org.eclipse.jdt.internal.core.search.indexing.IndexManager) at java.lang.Thread.run(java.base@12.0.1/Thread.java:835) "EventAdmin Async Event Dispatcher Thread" #29 daemon prio=6 os_prio=0 cpu=37,46ms elapsed=2002,74s tid=0x00007f7020b8c800 nid=0x381b in Object.wait() [0x00007f6f247f7000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(java.base@12.0.1/Native Method) - waiting on <no object reference available> at java.lang.Object.wait(java.base@12.0.1/Object.java:326) at org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.getNextEvent(EventManager.java:400) - locked <0x00000000c40acac0> (a org.eclipse.osgi.framework.eventmgr.EventManager$EventThread) at org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.run(EventManager.java:341) "YJP-Plugin-RequestListener" #45 daemon prio=1 os_prio=0 cpu=0,66ms elapsed=2001,19s tid=0x00007f6ff0160800 nid=0x382b runnable [0x00007f6f230e5000] java.lang.Thread.State: RUNNABLE at java.net.PlainSocketImpl.socketAccept(java.base@12.0.1/Native Method) at java.net.AbstractPlainSocketImpl.accept(java.base@12.0.1/AbstractPlainSocketImpl.java:458) at java.net.ServerSocket.implAccept(java.base@12.0.1/ServerSocket.java:556) at java.net.ServerSocket.accept(java.base@12.0.1/ServerSocket.java:524) at com.yourkit.d.f.run(a:34) at java.lang.Thread.run(java.base@12.0.1/Thread.java:835) "Event Loop Monitor" #44 daemon prio=6 os_prio=0 cpu=869,66ms elapsed=1997,63s tid=0x00007f70213c3000 nid=0x3844 in Object.wait() [0x00007f6f18979000] java.lang.Thread.State: TIMED_WAITING (on object monitor) at java.lang.Object.wait(java.base@12.0.1/Native Method) - waiting on <no object reference available> at org.eclipse.ui.internal.monitoring.EventLoopMonitorThread.sleepForMillis(EventLoopMonitorThread.java:715) - locked <0x00000000c50f3470> (a java.lang.Object) at org.eclipse.ui.internal.monitoring.EventLoopMonitorThread.run(EventLoopMonitorThread.java:544) "Provisioning Event Dispatcher" #66 daemon prio=5 os_prio=0 cpu=0,16ms elapsed=1994,77s tid=0x00007f6fdc064800 nid=0x3846 in Object.wait() [0x00007f6f17dbd000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(java.base@12.0.1/Native Method) - waiting on <no object reference available> at java.lang.Object.wait(java.base@12.0.1/Object.java:326) at org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.getNextEvent(EventManager.java:400) - locked <0x00000000c8f981e0> (a org.eclipse.osgi.framework.eventmgr.EventManager$EventThread) at org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.run(EventManager.java:341) "Worker-36" #75 prio=5 os_prio=0 cpu=82,79ms elapsed=1180,69s tid=0x00007f6fac02d000 nid=0x3d04 in Object.wait() [0x00007f6f224dd000] java.lang.Thread.State: TIMED_WAITING (on object monitor) at java.lang.Object.wait(java.base@12.0.1/Native Method) - waiting on <no object reference available> at org.eclipse.core.internal.jobs.WorkerPool.sleep(WorkerPool.java:200) - locked <0x00000000c04aaa48> (a org.eclipse.core.internal.jobs.WorkerPool) at org.eclipse.core.internal.jobs.WorkerPool.startJob(WorkerPool.java:242) at org.eclipse.core.internal.jobs.Worker.run(Worker.java:58) "ForkJoinPool.commonPool-worker-3" #78 daemon prio=5 os_prio=0 cpu=0,60ms elapsed=1178,96s tid=0x00007f6fa0081800 nid=0x3d09 waiting on condition [0x00007f6f23eee000] java.lang.Thread.State: WAITING (parking) at jdk.internal.misc.Unsafe.park(java.base@12.0.1/Native Method) - parking to wait for <0x00000000c949d478> (a java.util.concurrent.ForkJoinPool) at java.util.concurrent.locks.LockSupport.park(java.base@12.0.1/LockSupport.java:194) at java.util.concurrent.ForkJoinPool.runWorker(java.base@12.0.1/ForkJoinPool.java:1628) at java.util.concurrent.ForkJoinWorkerThread.run(java.base@12.0.1/ForkJoinWorkerThread.java:177) "org.eclipse.jface.text.reconciler.MonoReconciler" #81 daemon prio=1 os_prio=0 cpu=175,41ms elapsed=1069,46s tid=0x00007f7023378800 nid=0x3d9c in Object.wait() [0x00007f6f21dd5000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(java.base@12.0.1/Native Method) - waiting on <no object reference available> at java.lang.Object.wait(java.base@12.0.1/Object.java:326) at org.eclipse.swt.internal.Lock.lock(Lock.java:37) - locked <0x00000000c1477d98> (a org.eclipse.swt.internal.Lock) at org.eclipse.swt.internal.gtk.GDK.gdk_pixbuf_new_from_file(GDK.java:1715) at org.eclipse.swt.graphics.Image.initNative(Image.java:796) at org.eclipse.swt.graphics.Image.<init>(Image.java:659) at org.eclipse.jface.resource.URLImageDescriptor.createImage(URLImageDescriptor.java:263) at org.eclipse.jface.resource.ImageDescriptor.createResource(ImageDescriptor.java:181) at org.eclipse.jface.resource.DeviceResourceManager.allocate(DeviceResourceManager.java:55) at org.eclipse.jface.resource.AbstractResourceManager.create(AbstractResourceManager.java:88) at org.eclipse.jface.resource.ResourceManager.createImageWithDefault(ResourceManager.java:195) at org.eclipse.jface.resource.ImageRegistry.get(ImageRegistry.java:206) at org.eclipse.ui.texteditor.DefaultMarkerAnnotationAccess.getImage(DefaultMarkerAnnotationAccess.java:399) at org.eclipse.ui.texteditor.DefaultMarkerAnnotationAccess.isPaintable(DefaultMarkerAnnotationAccess.java:300) at org.eclipse.ui.internal.editors.text.codemining.annotation.AnnotationCodeMiningFilter.isPaintable(AnnotationCodeMiningFilter.java:107) at org.eclipse.ui.internal.editors.text.codemining.annotation.AnnotationCodeMiningFilter$$Lambda$888/0x0000000802069840.test(Unknown Source) at java.util.stream.ReferencePipeline$2$1.accept(java.base@12.0.1/ReferencePipeline.java:176) at java.util.stream.ReferencePipeline$2$1.accept(java.base@12.0.1/ReferencePipeline.java:177) at java.util.Spliterators$ArraySpliterator.tryAdvance(java.base@12.0.1/Spliterators.java:958) at java.util.stream.ReferencePipeline$7$1.accept(java.base@12.0.1/ReferencePipeline.java:278) at java.util.Spliterators$ArraySpliterator.tryAdvance(java.base@12.0.1/Spliterators.java:958) at java.util.stream.ReferencePipeline.forEachWithCancel(java.base@12.0.1/ReferencePipeline.java:127) at java.util.stream.AbstractPipeline.copyIntoWithCancel(java.base@12.0.1/AbstractPipeline.java:502) at java.util.stream.AbstractPipeline.copyInto(java.base@12.0.1/AbstractPipeline.java:488) at java.util.stream.AbstractPipeline.wrapAndCopyInto(java.base@12.0.1/AbstractPipeline.java:474) at java.util.stream.FindOps$FindOp.evaluateSequential(java.base@12.0.1/FindOps.java:150) at java.util.stream.AbstractPipeline.evaluate(java.base@12.0.1/AbstractPipeline.java:234) at java.util.stream.ReferencePipeline.findAny(java.base@12.0.1/ReferencePipeline.java:548) at org.eclipse.ui.internal.editors.text.codemining.annotation.AnnotationCodeMiningFilter.isEmpty(AnnotationCodeMiningFilter.java:77) at org.eclipse.ui.internal.editors.text.codemining.annotation.AnnotationCodeMiningProvider$AnnotationModelListener.modelChanged(AnnotationCodeMiningProvider.java:122) at org.eclipse.jface.text.source.AnnotationModel.fireModelChanged(AnnotationModel.java:590) at org.eclipse.jface.text.source.AnnotationModel$InternalModelListener.modelChanged(AnnotationModel.java:255) at org.eclipse.jface.text.source.AnnotationModel.fireModelChanged(AnnotationModel.java:590) at org.eclipse.jface.text.source.AnnotationModel.fireModelChanged(AnnotationModel.java:556) at org.eclipse.jface.text.source.AnnotationModel.replaceAnnotations(AnnotationModel.java:408) at org.eclipse.jface.text.source.AnnotationModel.replaceAnnotations(AnnotationModel.java:373) at org.eclipse.ui.texteditor.spelling.SpellingReconcileStrategy$SpellingProblemCollector.endCollecting(SpellingReconcileStrategy.java:105) - locked <0x00000000d31ad520> (a java.lang.Object) at org.eclipse.ui.texteditor.spelling.SpellingService.check(SpellingService.java:120) at org.eclipse.ui.texteditor.spelling.SpellingReconcileStrategy.reconcile(SpellingReconcileStrategy.java:190) at org.eclipse.ui.texteditor.spelling.SpellingReconcileStrategy.initialReconcile(SpellingReconcileStrategy.java:165) at org.eclipse.jface.text.reconciler.MonoReconciler.initialProcess(MonoReconciler.java:98) at org.eclipse.jface.text.reconciler.AbstractReconciler$BackgroundThread.run(AbstractReconciler.java:177) "Worker-40" #83 prio=5 os_prio=0 cpu=13,26ms elapsed=499,79s tid=0x00007f6fc003c000 nid=0x3fda in Object.wait() [0x00007f6f233e9000] java.lang.Thread.State: TIMED_WAITING (on object monitor) at java.lang.Object.wait(java.base@12.0.1/Native Method) - waiting on <no object reference available> at org.eclipse.core.internal.jobs.WorkerPool.sleep(WorkerPool.java:200) - locked <0x00000000c04aaa48> (a org.eclipse.core.internal.jobs.WorkerPool) at org.eclipse.core.internal.jobs.WorkerPool.startJob(WorkerPool.java:242) at org.eclipse.core.internal.jobs.Worker.run(Worker.java:58) "Worker-42" #85 prio=5 os_prio=0 cpu=0,52ms elapsed=45,94s tid=0x00007f6fc0001800 nid=0x439b in Object.wait() [0x00007f6f21bd4000] java.lang.Thread.State: TIMED_WAITING (on object monitor) at java.lang.Object.wait(java.base@12.0.1/Native Method) - waiting on <no object reference available> at org.eclipse.core.internal.jobs.WorkerPool.sleep(WorkerPool.java:200) - locked <0x00000000c04aaa48> (a org.eclipse.core.internal.jobs.WorkerPool) at org.eclipse.core.internal.jobs.WorkerPool.startJob(WorkerPool.java:242) at org.eclipse.core.internal.jobs.Worker.run(Worker.java:58) "Worker-43" #86 prio=5 os_prio=0 cpu=0,41ms elapsed=10,64s tid=0x00007f6fc0066000 nid=0x43f0 in Object.wait() [0x00007f6f21fd8000] java.lang.Thread.State: TIMED_WAITING (on object monitor) at java.lang.Object.wait(java.base@12.0.1/Native Method) - waiting on <no object reference available> at org.eclipse.core.internal.jobs.WorkerPool.sleep(WorkerPool.java:200) - locked <0x00000000c04aaa48> (a org.eclipse.core.internal.jobs.WorkerPool) at org.eclipse.core.internal.jobs.WorkerPool.startJob(WorkerPool.java:242) at org.eclipse.core.internal.jobs.Worker.run(Worker.java:58) "Attach Listener" #87 daemon prio=9 os_prio=0 cpu=0,29ms elapsed=0,10s tid=0x00007f6fe0002000 nid=0x4405 waiting on condition [0x0000000000000000] java.lang.Thread.State: RUNNABLE "VM Thread" os_prio=0 cpu=3760,10ms elapsed=2012,30s tid=0x00007f70201a1800 nid=0x37d0 runnable "GC Thread#0" os_prio=0 cpu=492,22ms elapsed=2012,31s tid=0x00007f702004f800 nid=0x37cb runnable "GC Thread#1" os_prio=0 cpu=527,48ms elapsed=2011,78s tid=0x00007f6fe8001000 nid=0x37de runnable "GC Thread#2" os_prio=0 cpu=501,85ms elapsed=2011,78s tid=0x00007f6fe8002800 nid=0x37df runnable "GC Thread#3" os_prio=0 cpu=468,56ms elapsed=2011,77s tid=0x00007f6fe8004000 nid=0x37e0 runnable "G1 Main Marker" os_prio=0 cpu=3,96ms elapsed=2012,31s tid=0x00007f7020057800 nid=0x37cc runnable "G1 Conc#0" os_prio=0 cpu=1382,11ms elapsed=2012,31s tid=0x00007f7020059800 nid=0x37cd runnable "G1 Refine#0" os_prio=0 cpu=106,64ms elapsed=2012,30s tid=0x00007f7020135000 nid=0x37ce runnable "G1 Refine#1" os_prio=0 cpu=6,25ms elapsed=2010,12s tid=0x00007f6ff0001000 nid=0x37f3 runnable "G1 Young RemSet Sampling" os_prio=0 cpu=878,57ms elapsed=2012,30s tid=0x00007f7020137000 nid=0x37cf runnable "VM Periodic Task Thread" os_prio=0 cpu=1723,58ms elapsed=2012,24s tid=0x00007f7020227800 nid=0x37da waiting on condition JNI global refs: 133, weak refs: 0
Deadlock happens frequently for me with Eclipse SDK Version: 2019-12 (4.14) Build id: I20191113-2315 OS: Linux, v.5.3.0-19-generic, x86_64 / gtk 3.24.12, WebKit 2.26.1 Java version: 12.0.1
The problem is indirectly in SWT. Looks like we don't check for UI thread as usually (and throw an error) and therefore some bad clients deadlock is via org.eclipse.jface.text.reconciler.MonoReconciler" #81 daemon prio=1 os_prio=0 cpu=175,41ms elapsed=1069,46s tid=0x00007f7023378800 nid=0x3d9c in Object.wait() [0x00007f6f21dd5000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(java.base@12.0.1/Native Method) - waiting on <no object reference available> at java.lang.Object.wait(java.base@12.0.1/Object.java:326) at org.eclipse.swt.internal.Lock.lock(Lock.java:37) - locked <0x00000000c1477d98> (a org.eclipse.swt.internal.Lock) at org.eclipse.swt.internal.gtk.GDK.gdk_pixbuf_new_from_file(GDK.java:1715) at org.eclipse.swt.graphics.Image.initNative(Image.java:796) at org.eclipse.swt.graphics.Image.<init>(Image.java:659) at org.eclipse.jface.resource.URLImageDescriptor.createImage(URLImageDescriptor.java:263) at org.eclipse.jface.resource.ImageDescriptor.createResource(ImageDescriptor.java:181) at org.eclipse.jface.resource.DeviceResourceManager.allocate(DeviceResourceManager.java:55) at org.eclipse.jface.resource.AbstractResourceManager.create(AbstractResourceManager.java:88) at org.eclipse.jface.resource.ResourceManager.createImageWithDefault(ResourceManager.java:195) at org.eclipse.jface.resource.ImageRegistry.get(ImageRegistry.java:206) at org.eclipse.ui.texteditor.DefaultMarkerAnnotationAccess.getImage(DefaultMarkerAnnotationAccess.java:399) at org.eclipse.ui.texteditor.DefaultMarkerAnnotationAccess.isPaintable(DefaultMarkerAnnotationAccess.java:300) at org.eclipse.ui.internal.editors.text.codemining.annotation.AnnotationCodeMiningFilter.isPaintable(AnnotationCodeMiningFilter.java:107) at org.eclipse.ui.internal.editors.text.codemining.annotation.AnnotationCodeMiningFilter$$Lambda$888/0x0000000802069840.test(Unknown Source) at java.util.stream.ReferencePipeline$2$1.accept(java.base@12.0.1/ReferencePipeline.java:176) at java.util.stream.ReferencePipeline$2$1.accept(java.base@12.0.1/ReferencePipeline.java:177) at java.util.Spliterators$ArraySpliterator.tryAdvance(java.base@12.0.1/Spliterators.java:958) at java.util.stream.ReferencePipeline$7$1.accept(java.base@12.0.1/ReferencePipeline.java:278) at java.util.Spliterators$ArraySpliterator.tryAdvance(java.base@12.0.1/Spliterators.java:958) at java.util.stream.ReferencePipeline.forEachWithCancel(java.base@12.0.1/ReferencePipeline.java:127) at java.util.stream.AbstractPipeline.copyIntoWithCancel(java.base@12.0.1/AbstractPipeline.java:502) at java.util.stream.AbstractPipeline.copyInto(java.base@12.0.1/AbstractPipeline.java:488) at java.util.stream.AbstractPipeline.wrapAndCopyInto(java.base@12.0.1/AbstractPipeline.java:474) at java.util.stream.FindOps$FindOp.evaluateSequential(java.base@12.0.1/FindOps.java:150) at java.util.stream.AbstractPipeline.evaluate(java.base@12.0.1/AbstractPipeline.java:234) at java.util.stream.ReferencePipeline.findAny(java.base@12.0.1/ReferencePipeline.java:548) at org.eclipse.ui.internal.editors.text.codemining.annotation.AnnotationCodeMiningFilter.isEmpty(AnnotationCodeMiningFilter.java:77) at org.eclipse.ui.internal.editors.text.codemining.annotation.AnnotationCodeMiningProvider$AnnotationModelListener.modelChanged(AnnotationCodeMiningProvider.java:122) at org.eclipse.jface.text.source.AnnotationModel.fireModelChanged(AnnotationModel.java:590) at org.eclipse.jface.text.source.AnnotationModel$InternalModelListener.modelChanged(AnnotationModel.java:255) at org.eclipse.jface.text.source.AnnotationModel.fireModelChanged(AnnotationModel.java:590) at org.eclipse.jface.text.source.AnnotationModel.fireModelChanged(AnnotationModel.java:556) at org.eclipse.jface.text.source.AnnotationModel.replaceAnnotations(AnnotationModel.java:408) at org.eclipse.jface.text.source.AnnotationModel.replaceAnnotations(AnnotationModel.java:373) at org.eclipse.ui.texteditor.spelling.SpellingReconcileStrategy$SpellingProblemCollector.endCollecting(SpellingReconcileStrategy.java:105) - locked <0x00000000d31ad520> (a java.lang.Object) at org.eclipse.ui.texteditor.spelling.SpellingService.check(SpellingService.java:120) at org.eclipse.ui.texteditor.spelling.SpellingReconcileStrategy.reconcile(SpellingReconcileStrategy.java:190) at org.eclipse.ui.texteditor.spelling.SpellingReconcileStrategy.initialReconcile(SpellingReconcileStrategy.java:165) at org.eclipse.jface.text.reconciler.MonoReconciler.initialProcess(MonoReconciler.java:98) at org.eclipse.jface.text.reconciler.AbstractReconciler$BackgroundThread.run(AbstractReconciler.java:177)
Thanks, Andrey. Adding Mickael, as stack involves code mining.
This is not a generic code-mining error, it's specific to how the error annotation code minings are implemented. Adding Niko so he may have ideas of what can be done differently.
The actual deadlock is not in GTK / SWT but due annotation model lock that is hold in "org.eclipse.jface.text.reconciler.MonoReconciler" thread, which tries to create an Image and hangs on SWT lock, that is held by UI thread that tries to acquire annotation lock. Kaboom. I've quickly checked SWT code, it looks like it is OK that we allow Image to be created not on the UI thread (still surprises me), I assume this is to allow off-screen rendering. So the bug must be fixed on the client side (annotation model & users of it, namely AnnotationCodeMiningProvider / AnnotationCodeMiningFilter). I assume the regression is coming from bug 547665. Below related deadlocked thread stacks (partial). org.eclipse.ui.texteditor.spelling.SpellingReconcileStrategy$SpellingProblemCollector.endCollecting(SpellingReconcileStrategy.java:105) - locked <0x00000000d31ad520> (a java.lang.Object) at org.eclipse.ui.texteditor.spelling.SpellingService.check(SpellingService.java:120) at org.eclipse.ui.texteditor.spelling.SpellingReconcileStrategy.reconcile(SpellingReconcileStrategy.java:190) at org.eclipse.ui.texteditor.spelling.SpellingReconcileStrategy.initialReconcile(SpellingReconcileStrategy.java:165) at org.eclipse.jface.text.reconciler.MonoReconciler.initialProcess(MonoReconciler.java:98) at org.eclipse.jface.text.reconciler.AbstractReconciler$BackgroundThread.run(AbstractReconciler.java:177) but in main we are locking UI thread and try to acquire this annotation lock. "main" #1 prio=6 os_prio=0 cpu=67858,25ms elapsed=2012,31s tid=0x00007f7020012000 nid=0x37ca waiting for monitor entry [0x00007f702612b000] java.lang.Thread.State: BLOCKED (on object monitor) at org.eclipse.core.internal.filebuffers.SynchronizableDocument.getLineInformation(SynchronizableDocument.java:289) - waiting to lock <0x00000000d31ad520> (a java.lang.Object) at org.eclipse.jface.text.DefaultDocumentAdapter.doGetLine(DefaultDocumentAdapter.java:145) at org.eclipse.jface.text.DefaultDocumentAdapter.getLine(DefaultDocumentAdapter.java:158) at org.eclipse.swt.custom.StyledTextRenderer.drawLine(StyledTextRenderer.java:451) at org.eclipse.swt.custom.StyledText.handlePaint(StyledText.java:6259) at org.eclipse.swt.custom.StyledText.lambda$1(StyledText.java:5800) at org.eclipse.swt.custom.StyledText$$Lambda$656/0x0000000801e01440.handleEvent(Unknown Source)
Also bug 552760 is a hint that it is probably a bad idea to allocate images from non UI thread (even if SWT allows it).
We might be able to move the isPaintable() check to a later point, when we're actually running in UI thread. The annotation model contains a LOT of entries, so filtering later can have serious performance issues (in my early tryouts with more generous filters, I had to kill the runtime regularly because it was so laggy). I won't have time to look into it this week; I'll try next week.
New Gerrit change created: https://git.eclipse.org/r/152904
If someone can review for 4.14, please adjust the target milestone.
*** Bug 558342 has been marked as a duplicate of this bug. ***
(In reply to Dani Megert from comment #9) > If someone can review for 4.14, please adjust the target milestone. Hey guys, any progress here?
(In reply to Matthias Becker from comment #11) > (In reply to Dani Megert from comment #9) > > If someone can review for 4.14, please adjust the target milestone. > > Hey guys, > any progress here? Ping!