Bug 553044 - Deadlock in annotation/code mining processing
Summary: Deadlock in annotation/code mining processing
Status: NEW
Alias: None
Product: Platform
Classification: Eclipse Project
Component: Text (show other bugs)
Version: 4.14   Edit
Hardware: PC Linux
: P3 major (vote)
Target Milestone: ---   Edit
Assignee: Platform-Text-Inbox CLA
QA Contact:
URL:
Whiteboard:
Keywords: regression
: 558342 (view as bug list)
Depends on:
Blocks: 547665
  Show dependency tree
 
Reported: 2019-11-14 06:01 EST by Lars Vogel CLA
Modified: 2020-06-05 11:01 EDT (History)
9 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Lars Vogel CLA 2019-11-14 06:01:43 EST
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
Comment 1 Lars Vogel CLA 2019-11-14 06:11:42 EST
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
Comment 2 Andrey Loskutov CLA 2019-11-14 06:27:23 EST
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)
Comment 3 Lars Vogel CLA 2019-11-14 06:35:07 EST
Thanks, Andrey. Adding Mickael, as stack involves code mining.
Comment 4 Mickael Istria CLA 2019-11-14 07:30:16 EST
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.
Comment 5 Andrey Loskutov CLA 2019-11-14 07:34:56 EST
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)
Comment 6 Andrey Loskutov CLA 2019-11-14 07:37:56 EST
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).
Comment 7 Niko Stotz CLA 2019-11-15 06:01:45 EST
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.
Comment 8 Eclipse Genie CLA 2019-11-18 16:13:07 EST
New Gerrit change created: https://git.eclipse.org/r/152904
Comment 9 Dani Megert CLA 2019-11-26 08:42:00 EST
If someone can review for 4.14, please adjust the target milestone.
Comment 10 Andrey Loskutov CLA 2019-12-16 00:17:02 EST
*** Bug 558342 has been marked as a duplicate of this bug. ***
Comment 11 Matthias Becker CLA 2020-01-30 02:17:01 EST
(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?
Comment 12 Dani Megert CLA 2020-04-18 08:31:08 EDT
(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!