Guest User

Untitled

a guest
May 22nd, 2018
114
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 10.81 KB | None | 0 0
  1. Looks like the problem is a combination of several small things that happened at the same time. The interesting code parts:
  2.  
  3. public abstract class EventManager {
  4. protected synchronized final void addListenerObject(final Object listener) {
  5. if (listenerList == null) {
  6. listenerList = new ListenerList(ListenerList.IDENTITY);
  7. }
  8.  
  9. listenerList.add(listener);
  10. }
  11. ...
  12.  
  13.  
  14. public class ExtdocView{
  15.  
  16. @Subscribe
  17. @AllowConcurrentEvents
  18. public void onJavaSelection(final JavaSelectionEvent selection) {
  19. disposeScheduler();
  20. syncScheduling(selection);
  21. }
  22.  
  23. private synchronized syncScheduling(final JavaSelectionEvent selection) {
  24. scheduler = new ProviderExecutionScheduler(providers, subscriptionManager, contentPart, extdocBus);
  25. scheduler.scheduleOnSelection(selection); // this one spawns a Display.syncExec... omitted.
  26. }
  27.  
  28. ...
  29.  
  30.  
  31.  
  32. 2012-01-13 18:11:27
  33. Full thread dump Java HotSpot(TM) 64-Bit Server VM (20.1-b02-384 mixed mode):
  34.  
  35. "pool-1-thread-3" prio=5 tid=1019fc000 nid=0x122da1000 waiting for monitor entry [122da0000]
  36. java.lang.Thread.State: BLOCKED (on object monitor)
  37. at org.eclipse.recommenders.internal.extdoc.rcp.ui.ExtdocView.syncScheduling(ExtdocView.java:126)
  38. - waiting to lock <7b4621338> (a org.eclipse.recommenders.internal.extdoc.rcp.ui.ExtdocView)
  39. at org.eclipse.recommenders.internal.extdoc.rcp.ui.ExtdocView.onJavaSelection(ExtdocView.java:122)
  40. at sun.reflect.GeneratedMethodAccessor14.invoke(Unknown Source)
  41. at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
  42. at java.lang.reflect.Method.invoke(Method.java:597)
  43. at com.google.common.eventbus.EventHandler.handleEvent(EventHandler.java:68)
  44. at com.google.common.eventbus.EventBus.dispatch(EventBus.java:313)
  45. at com.google.common.eventbus.AsyncEventBus.access$0(AsyncEventBus.java:1)
  46. at com.google.common.eventbus.AsyncEventBus$1.run(AsyncEventBus.java:94)
  47. at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
  48. at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
  49. at java.lang.Thread.run(Thread.java:680)
  50.  
  51. "pool-1-thread-2" prio=5 tid=101b0e000 nid=0x122c9e000 in Object.wait() [122c9d000]
  52. java.lang.Thread.State: WAITING (on object monitor)
  53. at java.lang.Object.wait(Native Method)
  54. - waiting on <7b073ebe8> (a org.eclipse.swt.widgets.RunnableLock)
  55. at java.lang.Object.wait(Object.java:485)
  56. at org.eclipse.swt.widgets.Synchronizer.syncExec(Synchronizer.java:187)
  57. - locked <7b073ebe8> (a org.eclipse.swt.widgets.RunnableLock)
  58. at org.eclipse.ui.internal.UISynchronizer.syncExec(UISynchronizer.java:150)
  59. at org.eclipse.swt.widgets.Display.syncExec(Display.java:4620)
  60. at org.eclipse.recommenders.internal.extdoc.rcp.scheduling.ProviderExecutionScheduler.createNewRenderingPanelInUiThread(ProviderExecutionScheduler.java:140)
  61. at org.eclipse.recommenders.internal.extdoc.rcp.scheduling.ProviderExecutionScheduler.scheduleOnSelection(ProviderExecutionScheduler.java:101)
  62. at org.eclipse.recommenders.internal.extdoc.rcp.ui.ExtdocView.syncScheduling(ExtdocView.java:127)
  63. - locked <7b4621338> (a org.eclipse.recommenders.internal.extdoc.rcp.ui.ExtdocView)
  64. at org.eclipse.recommenders.internal.extdoc.rcp.ui.ExtdocView.onJavaSelection(ExtdocView.java:122)
  65. at sun.reflect.GeneratedMethodAccessor14.invoke(Unknown Source)
  66. at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
  67. at java.lang.reflect.Method.invoke(Method.java:597)
  68. at com.google.common.eventbus.EventHandler.handleEvent(EventHandler.java:68)
  69. at com.google.common.eventbus.EventBus.dispatch(EventBus.java:313)
  70. at com.google.common.eventbus.AsyncEventBus.access$0(AsyncEventBus.java:1)
  71. at com.google.common.eventbus.AsyncEventBus$1.run(AsyncEventBus.java:94)
  72. at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
  73. at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
  74. at java.lang.Thread.run(Thread.java:680)
  75.  
  76. "pool-1-thread-1" prio=5 tid=102f1b000 nid=0x11f4ff000 waiting for monitor entry [11f4fe000]
  77. java.lang.Thread.State: BLOCKED (on object monitor)
  78. at org.eclipse.recommenders.internal.extdoc.rcp.ui.ExtdocView.syncScheduling(ExtdocView.java:126)
  79. - waiting to lock <7b4621338> (a org.eclipse.recommenders.internal.extdoc.rcp.ui.ExtdocView)
  80. at org.eclipse.recommenders.internal.extdoc.rcp.ui.ExtdocView.onJavaSelection(ExtdocView.java:122)
  81. at sun.reflect.GeneratedMethodAccessor14.invoke(Unknown Source)
  82. at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
  83. at java.lang.reflect.Method.invoke(Method.java:597)
  84. at com.google.common.eventbus.EventHandler.handleEvent(EventHandler.java:68)
  85. at com.google.common.eventbus.EventBus.dispatch(EventBus.java:313)
  86. at com.google.common.eventbus.AsyncEventBus.access$0(AsyncEventBus.java:1)
  87. at com.google.common.eventbus.AsyncEventBus$1.run(AsyncEventBus.java:94)
  88. at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
  89. at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
  90. at java.lang.Thread.run(Thread.java:680)
  91.  
  92.  
  93. "Thread-1" daemon prio=6 tid=102889000 nid=0x7fff701efcc0 waiting for monitor entry [7fff5fbfa000]
  94. java.lang.Thread.State: BLOCKED (on object monitor)
  95. at org.eclipse.core.commands.common.EventManager.addListenerObject(EventManager.java:50)
  96. - waiting to lock <7b4621338> (a org.eclipse.recommenders.internal.extdoc.rcp.ui.ExtdocView)
  97. at org.eclipse.ui.part.WorkbenchPart.addPropertyListener(WorkbenchPart.java:87)
  98. at org.eclipse.ui.internal.BaseSaveAction.setActiveView(BaseSaveAction.java:208)
  99. at org.eclipse.ui.internal.BaseSaveAction.updateActiveView(BaseSaveAction.java:168)
  100. at org.eclipse.ui.internal.BaseSaveAction.partActivated(BaseSaveAction.java:133)
  101. at org.eclipse.ui.internal.PartService$1.run(PartService.java:76)
  102. at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
  103. at org.eclipse.ui.internal.PartService.partActivated(PartService.java:74)
  104. at org.eclipse.ui.internal.WorkbenchPage$11.run(WorkbenchPage.java:3974)
  105. at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
  106. at org.eclipse.ui.internal.WorkbenchPage.firePartActivated(WorkbenchPage.java:3972)
  107. at org.eclipse.ui.internal.WorkbenchPage.access$13(WorkbenchPage.java:3961)
  108. at org.eclipse.ui.internal.WorkbenchPage$E4PartListener.partActivated(WorkbenchPage.java:163)
  109. at org.eclipse.e4.ui.internal.workbench.PartServiceImpl$2.run(PartServiceImpl.java:190)
  110. at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
  111. at org.eclipse.e4.ui.internal.workbench.PartServiceImpl.firePartActivated(PartServiceImpl.java:188)
  112. at org.eclipse.e4.ui.internal.workbench.PartServiceImpl.setPart(PartServiceImpl.java:163)
  113. at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  114. at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
  115. at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
  116. at java.lang.reflect.Method.invoke(Method.java:597)
  117. at org.eclipse.e4.core.internal.di.MethodRequestor.execute(MethodRequestor.java:56)
  118. at org.eclipse.e4.core.internal.contexts.ContextObjectSupplier$ContextInjectionListener.update(ContextObjectSupplier.java:77)
  119. at org.eclipse.e4.core.internal.contexts.TrackableComputationExt.update(TrackableComputationExt.java:106)
  120. at org.eclipse.e4.core.internal.contexts.EclipseContext.processScheduled(EclipseContext.java:298)
  121. at org.eclipse.e4.core.internal.contexts.EclipseContext.set(EclipseContext.java:312)
  122. at org.eclipse.e4.core.internal.contexts.EclipseContext.activate(EclipseContext.java:598)
  123. at org.eclipse.e4.core.internal.contexts.EclipseContext.activateBranch(EclipseContext.java:603)
  124. at org.eclipse.e4.ui.internal.workbench.PartActivationHistory.activate(PartActivationHistory.java:52)
  125. at org.eclipse.e4.ui.internal.workbench.PartServiceImpl.activate(PartServiceImpl.java:560)
  126. at org.eclipse.e4.ui.internal.workbench.PartServiceImpl.activate(PartServiceImpl.java:531)
  127. at org.eclipse.e4.ui.internal.workbench.swt.AbstractPartRenderer.activate(AbstractPartRenderer.java:105)
  128. at org.eclipse.e4.ui.workbench.renderers.swt.StackRenderer$ActivationJob.run(StackRenderer.java:176)
  129. at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35)
  130. at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:135)
  131. - locked <7b04087d8> (a org.eclipse.swt.widgets.RunnableLock)
  132. at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:3945)
  133. at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3622)
  134. at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$9.run(PartRenderingEngine.java:999)
  135. at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
  136. at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:893)
  137. at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:85)
  138. at org.eclipse.ui.internal.Workbench$4.run(Workbench.java:577)
  139. at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
  140. at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:532)
  141. at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
  142. at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:124)
  143. at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
  144. at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)
  145. at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
  146. at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:352)
  147. at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179)
  148. at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  149. at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
  150. at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
  151. at java.lang.reflect.Method.invoke(Method.java:597)
  152. at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:624)
  153. at org.eclipse.equinox.launcher.Main.basicRun(Main.java:579)
  154. at org.eclipse.equinox.launcher.Main.run(Main.java:1433)
  155. at org.eclipse.equinox.launcher.Main.main(Main.java:1409)
  156.  
  157.  
  158.  
  159.  
  160. new version of syncScheduling (hope this finally fixes the deadlock...):
  161.  
  162. private final Lock initalizeSchedulerLock = new ReentrantLock();
  163.  
  164. private void syncScheduling(final JavaSelectionEvent selection) {
  165. try {
  166. initalizeSchedulerLock.lock();
  167. scheduler = new ProviderExecutionScheduler(providers, subscriptionManager, contentPart, extdocBus);
  168. scheduler.scheduleOnSelection(selection);
  169. } finally {
  170. initalizeSchedulerLock.unlock();
  171. }
  172. }
Add Comment
Please, Sign In to add comment