Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.
Bug 237596 - [sandbox] deadlock in SandboxUiPlugin.initializeHighlighters()
Summary: [sandbox] deadlock in SandboxUiPlugin.initializeHighlighters()
Status: RESOLVED FIXED
Alias: None
Product: z_Archived
Classification: Eclipse Foundation
Component: Mylyn (show other bugs)
Version: unspecified   Edit
Hardware: All All
: P2 normal (vote)
Target Milestone: 3.1   Edit
Assignee: Steffen Pingel CLA
QA Contact:
URL:
Whiteboard:
Keywords:
Depends on:
Blocks: 248371
  Show dependency tree
 
Reported: 2008-06-18 04:36 EDT by Steffen Pingel CLA
Modified: 2009-01-04 13:09 EST (History)
2 users (show)

See Also:


Attachments
proposed fix (2.23 KB, patch)
2009-01-04 11:59 EST, Steffen Pingel CLA
no flags Details | Diff
mylyn/context/zip (57.86 KB, application/octet-stream)
2009-01-04 11:59 EST, Steffen Pingel CLA
no flags Details
second attempt (2.17 KB, patch)
2009-01-04 13:08 EST, Steffen Pingel CLA
no flags Details | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Steffen Pingel CLA 2008-06-18 04:36:13 EDT
java.util.ConcurrentModificationException
at java.util.AbstractList$Itr.checkForComodification(AbstractList.java:372)
at java.util.AbstractList$Itr.next(AbstractList.java:343)
at org.eclipse.mylyn.internal.sandbox.ui.highlighters.HighlighterList.getHighlighter(HighlighterList.java:85)
at org.eclipse.mylyn.internal.sandbox.ui.SandboxUiPlugin.getHighlighter(SandboxUiPlugin.java:175)
at org.eclipse.mylyn.internal.sandbox.ui.SandboxUiPlugin.getHighlighterForContextId(SandboxUiPlugin.java:186)
at org.eclipse.mylyn.internal.sandbox.ui.highlighters.TaskHighlighter.decorate(TaskHighlighter.java:42)
at org.eclipse.ui.internal.decorators.LightweightDecoratorDefinition.decorate(LightweightDecoratorDefinition.java:269)
at org.eclipse.ui.internal.decorators.LightweightDecoratorManager$LightweightRunnable.run(LightweightDecoratorManager.java:72)
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37)
at org.eclipse.ui.internal.decorators.LightweightDecoratorManager.decorate(LightweightDecoratorManager.java:356)
at org.eclipse.ui.internal.decorators.LightweightDecoratorManager.getDecorations(LightweightDecoratorManager.java:338)
at org.eclipse.ui.internal.decorators.DecorationScheduler$1.ensureResultCached(DecorationScheduler.java:374)
at org.eclipse.ui.internal.decorators.DecorationScheduler$1.run(DecorationScheduler.java:334)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)
Comment 1 Steffen Pingel CLA 2008-06-22 04:03:45 EDT
2008-06-22 01:01:37
Full thread dump Java HotSpot(TM) Server VM (1.6.0-b105 mixed mode):

"pool-1-thread-2" prio=10 tid=0x08820400 nid=0x1ab8 waiting on condition [0x8d22c000..0x8d22d030]
   java.lang.Thread.State: TIMED_WAITING (parking)
	at sun.misc.Unsafe.park(Native Method)
	- parking to wait for  <0xb3075c88> (a java.util.concurrent.SynchronousQueue$TransferStack)
	at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:198)
	at java.util.concurrent.SynchronousQueue$TransferStack.awaitFulfill(SynchronousQueue.java:424)
	at java.util.concurrent.SynchronousQueue$TransferStack.transfer(SynchronousQueue.java:323)
	at java.util.concurrent.SynchronousQueue.poll(SynchronousQueue.java:874)
	at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:944)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:906)
	at java.lang.Thread.run(Thread.java:619)

"MultiThreadedHttpConnectionManager cleanup" daemon prio=10 tid=0x085f6800 nid=0x1ab7 in Object.wait() [0x8d27d000..0x8d27e0b0]
   java.lang.Thread.State: WAITING (on object monitor)
	at java.lang.Object.wait(Native Method)
	- waiting on <0xb2b7fa38> (a java.lang.ref.ReferenceQueue$Lock)
	at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:116)
	- locked <0xb2b7fa38> (a java.lang.ref.ReferenceQueue$Lock)
	at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:132)
	at org.apache.commons.httpclient.MultiThreadedHttpConnectionManager$ReferenceQueueThread.run(MultiThreadedHttpConnectionManager.java:1122)

"pool-1-thread-1" prio=10 tid=0x0881e400 nid=0x1ab6 runnable [0x8d2ce000..0x8d2cf130]
   java.lang.Thread.State: RUNNABLE
	at java.net.SocketInputStream.socketRead0(Native Method)
	at java.net.SocketInputStream.read(SocketInputStream.java:129)
	at java.io.BufferedInputStream.fill(BufferedInputStream.java:218)
	at java.io.BufferedInputStream.read(BufferedInputStream.java:237)
	- locked <0xb30a65c8> (a java.io.BufferedInputStream)
	at org.apache.commons.httpclient.HttpParser.readRawLine(HttpParser.java:78)
	at org.apache.commons.httpclient.HttpParser.readLine(HttpParser.java:106)
	at org.apache.commons.httpclient.HttpConnection.readLine(HttpConnection.java:1116)
	at org.apache.commons.httpclient.MultiThreadedHttpConnectionManager$HttpConnectionAdapter.readLine(MultiThreadedHttpConnectionManager.java:1413)
	at org.apache.commons.httpclient.HttpMethodBase.readStatusLine(HttpMethodBase.java:1973)
	at org.apache.commons.httpclient.HttpMethodBase.readResponse(HttpMethodBase.java:1735)
	at org.apache.commons.httpclient.HttpMethodBase.execute(HttpMethodBase.java:1098)
	at org.apache.commons.httpclient.HttpMethodDirector.executeWithRetry(HttpMethodDirector.java:398)
	at org.apache.commons.httpclient.HttpMethodDirector.executeMethod(HttpMethodDirector.java:171)
	at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:397)
	at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:346)
	at org.eclipse.mylyn.commons.net.WebUtil$2.call(WebUtil.java:270)
	at org.eclipse.mylyn.commons.net.WebUtil$2.call(WebUtil.java:1)
	at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
	at java.util.concurrent.FutureTask.run(FutureTask.java:138)
	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:885)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)
	at java.lang.Thread.run(Thread.java:619)

"Timer-1" prio=10 tid=0x08a01000 nid=0x1ab4 in Object.wait() [0x8d31f000..0x8d31fdb0]
   java.lang.Thread.State: TIMED_WAITING (on object monitor)
	at java.lang.Object.wait(Native Method)
	- waiting on <0xb2fcc538> (a java.util.TaskQueue)
	at java.util.TimerThread.mainLoop(Timer.java:509)
	- locked <0xb2fcc538> (a java.util.TaskQueue)
	at java.util.TimerThread.run(Timer.java:462)

"Worker-5" prio=10 tid=0x085aac00 nid=0x1ab3 in Object.wait() [0x8d370000..0x8d370e30]
   java.lang.Thread.State: TIMED_WAITING (on object monitor)
	at java.lang.Object.wait(Native Method)
	- waiting on <0x95cbe080> (a org.eclipse.core.internal.jobs.WorkerPool)
	at org.eclipse.core.internal.jobs.WorkerPool.sleep(WorkerPool.java:185)
	- locked <0x95cbe080> (a org.eclipse.core.internal.jobs.WorkerPool)
	at org.eclipse.core.internal.jobs.WorkerPool.startJob(WorkerPool.java:217)
	at org.eclipse.core.internal.jobs.Worker.run(Worker.java:51)

"Worker-4" prio=10 tid=0x085aa800 nid=0x1ab2 in Object.wait() [0x8d3c1000..0x8d3c1eb0]
   java.lang.Thread.State: WAITING (on object monitor)
	at java.lang.Object.wait(Native Method)
	- waiting on <0x95aff8b0> (a org.eclipse.swt.internal.Lock)
	at java.lang.Object.wait(Object.java:485)
	at org.eclipse.swt.internal.Lock.lock(Lock.java:34)
	- locked <0x95aff8b0> (a org.eclipse.swt.internal.Lock)
	at org.eclipse.swt.internal.gtk.OS.gdk_colormap_get_system(OS.java:2386)
	at org.eclipse.swt.graphics.Color.init(Color.java:245)
	at org.eclipse.swt.graphics.Color.<init>(Color.java:77)
	at org.eclipse.mylyn.internal.context.ui.ColorMap.<clinit>(ColorMap.java:22)
	at org.eclipse.mylyn.internal.sandbox.ui.highlighters.HighlighterList.<clinit>(HighlighterList.java:23)
	at org.eclipse.mylyn.internal.sandbox.ui.SandboxUiPlugin.initializeHighlighters(SandboxUiPlugin.java:149)
	at org.eclipse.mylyn.internal.sandbox.ui.SandboxUiPlugin.getHighlighter(SandboxUiPlugin.java:173)
	at org.eclipse.mylyn.internal.sandbox.ui.SandboxUiPlugin.getHighlighterForContextId(SandboxUiPlugin.java:186)
	at org.eclipse.mylyn.internal.sandbox.ui.highlighters.TaskHighlighter.decorate(TaskHighlighter.java:42)
	at org.eclipse.ui.internal.decorators.LightweightDecoratorDefinition.decorate(LightweightDecoratorDefinition.java:269)
	at org.eclipse.ui.internal.decorators.LightweightDecoratorManager$LightweightRunnable.run(LightweightDecoratorManager.java:72)
	at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37)
	at org.eclipse.ui.internal.decorators.LightweightDecoratorManager.decorate(LightweightDecoratorManager.java:356)
	at org.eclipse.ui.internal.decorators.LightweightDecoratorManager.getDecorations(LightweightDecoratorManager.java:338)
	at org.eclipse.ui.internal.decorators.DecorationScheduler$1.ensureResultCached(DecorationScheduler.java:374)
	at org.eclipse.ui.internal.decorators.DecorationScheduler$1.run(DecorationScheduler.java:334)
	at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)

"Worker-3" prio=10 tid=0x085aa000 nid=0x1ab1 in Object.wait() [0x8d412000..0x8d412f30]
   java.lang.Thread.State: WAITING (on object monitor)
	at java.lang.Object.wait(Native Method)
	- waiting on <0x9624ed58> (a org.eclipse.mylyn.internal.tasks.ui.OfflineCachingStorage$CacheFlushJob)
	at java.lang.Object.wait(Object.java:485)
	at org.eclipse.mylyn.internal.tasks.ui.OfflineCachingStorage$CacheFlushJob.run(OfflineCachingStorage.java:239)
	- locked <0x9624ed58> (a org.eclipse.mylyn.internal.tasks.ui.OfflineCachingStorage$CacheFlushJob)
	at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)

"Worker-2" prio=10 tid=0x085afc00 nid=0x1ab0 in Object.wait() [0x8fc26000..0x8fc26fb0]
   java.lang.Thread.State: TIMED_WAITING (on object monitor)
	at java.lang.Object.wait(Native Method)
	- waiting on <0x95cbe080> (a org.eclipse.core.internal.jobs.WorkerPool)
	at org.eclipse.core.internal.jobs.WorkerPool.sleep(WorkerPool.java:185)
	- locked <0x95cbe080> (a org.eclipse.core.internal.jobs.WorkerPool)
	at org.eclipse.core.internal.jobs.WorkerPool.startJob(WorkerPool.java:217)
	at org.eclipse.core.internal.jobs.Worker.run(Worker.java:51)

"Worker-1" prio=10 tid=0x085af400 nid=0x1aaf waiting on condition [0x8f9d2000..0x8f9d3030]
   java.lang.Thread.State: TIMED_WAITING (parking)
	at sun.misc.Unsafe.park(Native Method)
	- parking to wait for  <0xb3075e48> (a java.util.concurrent.FutureTask$Sync)
	at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:198)
	at java.util.concurrent.locks.AbstractQueuedSynchronizer.doAcquireSharedNanos(AbstractQueuedSynchronizer.java:912)
	at java.util.concurrent.locks.AbstractQueuedSynchronizer.tryAcquireSharedNanos(AbstractQueuedSynchronizer.java:1204)
	at java.util.concurrent.FutureTask$Sync.innerGet(FutureTask.java:227)
	at java.util.concurrent.FutureTask.get(FutureTask.java:91)
	at org.eclipse.mylyn.commons.net.WebUtil.execute(WebUtil.java:303)
	at org.eclipse.mylyn.commons.net.WebUtil.executeInternal(WebUtil.java:314)
	at org.eclipse.mylyn.commons.net.WebUtil.execute(WebUtil.java:274)
	at org.eclipse.mylyn.internal.trac.core.client.TracWebClient$Request.execute(TracWebClient.java:100)
	at org.eclipse.mylyn.internal.trac.core.client.TracWebClient.connect(TracWebClient.java:203)
	- locked <0xb2b64918> (a org.eclipse.mylyn.internal.trac.core.client.TracWebClient)
	at org.eclipse.mylyn.internal.trac.core.client.TracWebClient.updateAttributes(TracWebClient.java:445)
	at org.eclipse.mylyn.internal.trac.core.client.AbstractTracClient.updateAttributes(AbstractTracClient.java:167)
	at org.eclipse.mylyn.internal.trac.core.TracRepositoryConnector.updateRepositoryConfiguration(TracRepositoryConnector.java:584)
	at org.eclipse.mylyn.internal.tasks.core.sync.SynchronizeRepositoriesJob.updateRepositoryConfiguration(SynchronizeRepositoriesJob.java:126)
	at org.eclipse.mylyn.internal.tasks.core.sync.SynchronizeRepositoriesJob.run(SynchronizeRepositoriesJob.java:82)
	at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)

"Timer-0" prio=10 tid=0x080e5c00 nid=0x1aa9 in Object.wait() [0x8fbd5000..0x8fbd60b0]
   java.lang.Thread.State: TIMED_WAITING (on object monitor)
	at java.lang.Object.wait(Native Method)
	- waiting on <0x9624fac8> (a java.util.TaskQueue)
	at java.util.TimerThread.mainLoop(Timer.java:509)
	- locked <0x9624fac8> (a java.util.TaskQueue)
	at java.util.TimerThread.run(Timer.java:462)

"Java indexing" daemon prio=10 tid=0x086b8c00 nid=0x1aa8 in Object.wait() [0x8fc90000..0x8fc91130]
   java.lang.Thread.State: WAITING (on object monitor)
	at java.lang.Object.wait(Native Method)
	- waiting on <0x961a3f50> (a org.eclipse.jdt.internal.core.search.indexing.IndexManager)
	at java.lang.Object.wait(Object.java:485)
	at org.eclipse.jdt.internal.core.search.processing.JobManager.run(JobManager.java:371)
	- locked <0x961a3f50> (a org.eclipse.jdt.internal.core.search.indexing.IndexManager)
	at java.lang.Thread.run(Thread.java:619)

"Worker-0" prio=10 tid=0x900c3c00 nid=0x1aa5 in Object.wait() [0x9044d000..0x9044deb0]
   java.lang.Thread.State: TIMED_WAITING (on object monitor)
	at java.lang.Object.wait(Native Method)
	- waiting on <0x95cbe080> (a org.eclipse.core.internal.jobs.WorkerPool)
	at org.eclipse.core.internal.jobs.WorkerPool.sleep(WorkerPool.java:185)
	- locked <0x95cbe080> (a org.eclipse.core.internal.jobs.WorkerPool)
	at org.eclipse.core.internal.jobs.WorkerPool.startJob(WorkerPool.java:217)
	at org.eclipse.core.internal.jobs.Worker.run(Worker.java:51)

"Start Level Event Dispatcher" daemon prio=10 tid=0x08705000 nid=0x1aa4 in Object.wait() [0x903ab000..0x903abf30]
   java.lang.Thread.State: WAITING (on object monitor)
	at java.lang.Object.wait(Native Method)
	- waiting on <0x95cb8d28> (a org.eclipse.osgi.framework.eventmgr.EventManager$EventThread)
	at java.lang.Object.wait(Object.java:485)
	at org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.getNextEvent(EventManager.java:377)
	- locked <0x95cb8d28> (a org.eclipse.osgi.framework.eventmgr.EventManager$EventThread)
	at org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.run(EventManager.java:317)

"Framework Event Dispatcher" daemon prio=10 tid=0x083a2000 nid=0x1aa3 in Object.wait() [0x903fc000..0x903fcfb0]
   java.lang.Thread.State: WAITING (on object monitor)
	at java.lang.Object.wait(Native Method)
	- waiting on <0x95cb8da0> (a org.eclipse.osgi.framework.eventmgr.EventManager$EventThread)
	at java.lang.Object.wait(Object.java:485)
	at org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.getNextEvent(EventManager.java:377)
	- locked <0x95cb8da0> (a org.eclipse.osgi.framework.eventmgr.EventManager$EventThread)
	at org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.run(EventManager.java:317)

"State Data Manager" daemon prio=10 tid=0x9051d800 nid=0x1aa0 waiting on condition [0x9049e000..0x9049f0b0]
   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:619)

"Low Memory Detector" daemon prio=10 tid=0x0815cc00 nid=0x1a9c runnable [0x00000000..0x00000000]
   java.lang.Thread.State: RUNNABLE

"CompilerThread1" daemon prio=10 tid=0x0815ac00 nid=0x1a9b waiting on condition [0x00000000..0x9101e448]
   java.lang.Thread.State: RUNNABLE

"CompilerThread0" daemon prio=10 tid=0x08159800 nid=0x1a9a waiting on condition [0x00000000..0x9109f4c8]
   java.lang.Thread.State: RUNNABLE

"JDWP Command Reader" daemon prio=10 tid=0x0814d800 nid=0x1a96 runnable [0x00000000..0x00000000]
   java.lang.Thread.State: RUNNABLE

"JDWP Event Helper Thread" daemon prio=10 tid=0x0814c000 nid=0x1a94 runnable [0x00000000..0x00000000]
   java.lang.Thread.State: RUNNABLE

"JDWP Transport Listener: dt_socket" daemon prio=10 tid=0x0814a000 nid=0x1a92 runnable [0x00000000..0x91192d80]
   java.lang.Thread.State: RUNNABLE

"Signal Dispatcher" daemon prio=10 tid=0x08142800 nid=0x1a8f waiting on condition [0x00000000..0x00000000]
   java.lang.Thread.State: RUNNABLE

"Finalizer" daemon prio=10 tid=0x08130000 nid=0x1a8e in Object.wait() [0x91238000..0x91239130]
   java.lang.Thread.State: WAITING (on object monitor)
	at java.lang.Object.wait(Native Method)
	- waiting on <0x95909028> (a java.lang.ref.ReferenceQueue$Lock)
	at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:116)
	- locked <0x95909028> (a java.lang.ref.ReferenceQueue$Lock)
	at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:132)
	at java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:159)

"Reference Handler" daemon prio=10 tid=0x0812f400 nid=0x1a8d in Object.wait() [0x91289000..0x91289db0]
   java.lang.Thread.State: WAITING (on object monitor)
	at java.lang.Object.wait(Native Method)
	- waiting on <0x95909180> (a java.lang.ref.Reference$Lock)
	at java.lang.Object.wait(Object.java:485)
	at java.lang.ref.Reference$ReferenceHandler.run(Reference.java:116)
	- locked <0x95909180> (a java.lang.ref.Reference$Lock)

"main" prio=10 tid=0x0806b000 nid=0x1a89 in Object.wait() [0xb7d8f000..0xb7d92208]
   java.lang.Thread.State: RUNNABLE
	at org.eclipse.mylyn.internal.sandbox.ui.SandboxUiPlugin.initializeHighlighters(SandboxUiPlugin.java:149)
	at org.eclipse.mylyn.internal.sandbox.ui.SandboxUiPlugin.getHighlighter(SandboxUiPlugin.java:173)
	at org.eclipse.mylyn.internal.sandbox.ui.SandboxUiPlugin.getHighlighterForContextId(SandboxUiPlugin.java:186)
	at org.eclipse.mylyn.internal.sandbox.ui.highlighters.TaskHighlighter.getHighlightColor(TaskHighlighter.java:55)
	at org.eclipse.mylyn.tasks.ui.TaskElementLabelProvider.getBackground(TaskElementLabelProvider.java:237)
	at org.eclipse.jface.viewers.DecoratingLabelProvider.getBackground(DecoratingLabelProvider.java:268)
	at org.eclipse.mylyn.internal.tasks.ui.views.TaskTableLabelProvider.getBackground(TaskTableLabelProvider.java:85)
	at org.eclipse.jface.viewers.TableColumnViewerLabelProvider.update(TableColumnViewerLabelProvider.java:82)
	at org.eclipse.jface.viewers.ViewerColumn.refresh(ViewerColumn.java:145)
	at org.eclipse.jface.viewers.AbstractTreeViewer.doUpdateItem(AbstractTreeViewer.java:932)
	at org.eclipse.jface.viewers.AbstractTreeViewer$UpdateItemSafeRunnable.run(AbstractTreeViewer.java:102)
	at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37)
	at org.eclipse.core.runtime.Platform.run(Platform.java:880)
	at org.eclipse.ui.internal.JFaceUtil$1.run(JFaceUtil.java:48)
	at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:175)
	at org.eclipse.jface.viewers.AbstractTreeViewer.doUpdateItem(AbstractTreeViewer.java:1012)
	at org.eclipse.jface.viewers.StructuredViewer$UpdateItemSafeRunnable.run(StructuredViewer.java:466)
	at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37)
	at org.eclipse.core.runtime.Platform.run(Platform.java:880)
	at org.eclipse.ui.internal.JFaceUtil$1.run(JFaceUtil.java:48)
	at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:175)
	at org.eclipse.jface.viewers.StructuredViewer.updateItem(StructuredViewer.java:2041)
	at org.eclipse.jface.viewers.AbstractTreeViewer.updateChildren(AbstractTreeViewer.java:2675)
	at org.eclipse.jface.viewers.AbstractTreeViewer.internalRefreshStruct(AbstractTreeViewer.java:1856)
	at org.eclipse.jface.viewers.TreeViewer.internalRefreshStruct(TreeViewer.java:711)
	at org.eclipse.jface.viewers.AbstractTreeViewer.internalRefreshStruct(AbstractTreeViewer.java:1863)
	at org.eclipse.jface.viewers.TreeViewer.internalRefreshStruct(TreeViewer.java:711)
	at org.eclipse.jface.viewers.AbstractTreeViewer.internalRefresh(AbstractTreeViewer.java:1831)
	at org.eclipse.jface.viewers.AbstractTreeViewer.internalRefresh(AbstractTreeViewer.java:1787)
	at org.eclipse.jface.viewers.StructuredViewer$8.run(StructuredViewer.java:1457)
	at org.eclipse.jface.viewers.StructuredViewer.preservingSelection(StructuredViewer.java:1365)
	at org.eclipse.jface.viewers.TreeViewer.preservingSelection(TreeViewer.java:397)
	at org.eclipse.jface.viewers.StructuredViewer.preservingSelection(StructuredViewer.java:1328)
	at org.eclipse.jface.viewers.StructuredViewer.refresh(StructuredViewer.java:1455)
	at org.eclipse.jface.viewers.ColumnViewer.refresh(ColumnViewer.java:548)
	at org.eclipse.ui.dialogs.FilteredTree$NotifyingTreeViewer.refresh(FilteredTree.java:931)
	at org.eclipse.jface.viewers.StructuredViewer.refresh(StructuredViewer.java:1412)
	at org.eclipse.ui.dialogs.FilteredTree$NotifyingTreeViewer.refresh(FilteredTree.java:921)
	at org.eclipse.ui.dialogs.FilteredTree$2.runInUIThread(FilteredTree.java:394)
	at org.eclipse.ui.progress.UIJob$1.run(UIJob.java:94)
	at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35)
	at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:133)
	- locked <0xb2a39b10> (a org.eclipse.swt.widgets.RunnableLock)
	at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:3378)
	at org.eclipse.swt.widgets.Display.idleProc(Display.java:2282)
	at org.eclipse.swt.internal.gtk.OS._gtk_dialog_run(Native Method)
	at org.eclipse.swt.internal.gtk.OS.gtk_dialog_run(OS.java:4442)
	at org.eclipse.swt.widgets.MessageBox.open(MessageBox.java:166)
	at org.eclipse.swt.browser.PromptService2.Alert(PromptService2.java:209)
	at org.eclipse.swt.browser.PromptService2$2.method3(PromptService2.java:45)
	at org.eclipse.swt.internal.mozilla.XPCOMObject.callback3(XPCOMObject.java:259)
	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:1541)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3031)
	at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2382)
	at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2346)
	at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2198)
	at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:493)
	at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:288)
	at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:488)
	at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
	at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:113)
	at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:193)
	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:382)
	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:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:549)
	at org.eclipse.equinox.launcher.Main.basicRun(Main.java:504)
	at org.eclipse.equinox.launcher.Main.run(Main.java:1236)
	at org.eclipse.equinox.launcher.Main.main(Main.java:1212)

"VM Thread" prio=10 tid=0x0812c800 nid=0x1a8c runnable 

"GC task thread#0 (ParallelGC)" prio=10 tid=0x08071c00 nid=0x1a8a runnable 

"GC task thread#1 (ParallelGC)" prio=10 tid=0x08072c00 nid=0x1a8b runnable 

"VM Periodic Task Thread" prio=10 tid=0x0815e400 nid=0x1a9d waiting on condition 

JNI global references: 7145

Heap
 PSYoungGen      total 41664K, used 31593K [0xb1280000, 0xb49d0000, 0xb49d0000)
  eden space 36800K, 85% used [0xb1280000,0xb31435f8,0xb3670000)
  from space 4864K, 1% used [0xb3670000,0xb36871e0,0xb3b30000)
  to   space 4992K, 0% used [0xb44f0000,0xb44f0000,0xb49d0000)
 PSOldGen        total 28288K, used 12016K [0x957d0000, 0x97370000, 0xb1280000)
  object space 28288K, 42% used [0x957d0000,0x9638c020,0x97370000)
 PSPermGen       total 34048K, used 34040K [0x917d0000, 0x93910000, 0x957d0000)
  object space 34048K, 99% used [0x917d0000,0x9390e160,0x93910000)
Comment 2 Mik Kersten CLA 2008-08-12 12:58:40 EDT
Steffen: I don't plan on prioritizing any Sandbox experimental stuff for 3.0.2.  Let me know if there's a reason to do this sooner.
Comment 3 Steffen Pingel CLA 2008-08-13 03:09:27 EDT
I agree. The only thing that concerns me with this bug is that this is actually causing a deadlock of the UI when highlighters are used. I looked into fixing this but this may require restructuring of some of the code and may not be trivial.
Comment 4 Steffen Pingel CLA 2008-10-16 23:08:16 EDT
I have temporarily disabled highlighters in head to work around the dead lock.
Comment 5 Hiroyuki CLA 2009-01-03 22:52:30 EST
I am investigating the problem that the highlight display is not done.
And, this bug was found. 

I saw the stack trace. 
But, where became a deadlock is not understood. 

I think that it is a cause to use thread unsafe's ArrayList class in HighlighterList class. 
How if the operation to highlighters (ArrayList) is moved in the synchronized block ?
Comment 6 Hiroyuki CLA 2009-01-03 23:57:43 EST
> How if the operation to highlighters (ArrayList) is moved in the synchronized block ?

How if the operation to highlighters (HighlighterList) in SandboxUiPlugin is moved in the synchronized block ?
Comment 7 Steffen Pingel CLA 2009-01-04 11:57:57 EST
I believe the problem is that the static initialization of ColorMap is triggered by the lightweight decorator which runs on a non-UI thread while at the same time the UI thread tries to use the ColorMap by instantiating HighlighterList which references ColorMap in its static initialization. The UI thread is now holding the SWT lock while waiting for the lightweight decorator thread to finish initialization of ColorMap and that thread is waiting for the SWT lock. I am not sure if this problem affects other platforms than Linux.   


?Worker-4? prio=10 tid=0x085aa800 nid=0x1ab2 in Object.wait() [0x8d3c1000..0x8d3c1eb0]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0x95aff8b0> (a org.eclipse.swt.internal.Lock)
at java.lang.Object.wait(Object.java:485)
at org.eclipse.swt.internal.Lock.lock(Lock.java:34)
- locked <0x95aff8b0> (a org.eclipse.swt.internal.Lock)
at org.eclipse.swt.internal.gtk.OS.gdk_colormap_get_system(OS.java:2386)
at org.eclipse.swt.graphics.Color.init(Color.java:245)
at org.eclipse.swt.graphics.Color.<init>(Color.java:77)
at org.eclipse.mylyn.internal.context.ui.ColorMap.<clinit>(ColorMap.java:22)
at org.eclipse.mylyn.internal.sandbox.ui.highlighters.HighlighterList.<clinit>(HighlighterList.java:23)
at org.eclipse.mylyn.internal.sandbox.ui.SandboxUiPlugin.initializeHighlighters(SandboxUiPlugin.java:149)
at org.eclipse.mylyn.internal.sandbox.ui.SandboxUiPlugin.getHighlighter(SandboxUiPlugin.java:173)
at org.eclipse.mylyn.internal.sandbox.ui.SandboxUiPlugin.getHighlighterForContextId(SandboxUiPlugin.java:186)
at org.eclipse.mylyn.internal.sandbox.ui.highlighters.TaskHighlighter.decorate(TaskHighlighter.java:42)
at org.eclipse.ui.internal.decorators.LightweightDecoratorDefinition.decorate(LightweightDecoratorDefinition.java:269)


?main? prio=10 tid=0x0806b000 nid=0x1a89 in Object.wait() [0xb7d8f000..0xb7d92208]
java.lang.Thread.State: RUNNABLE
at org.eclipse.mylyn.internal.sandbox.ui.SandboxUiPlugin.initializeHighlighters(SandboxUiPlugin.java:149)
at org.eclipse.mylyn.internal.sandbox.ui.SandboxUiPlugin.getHighlighter(SandboxUiPlugin.java:173)
at org.eclipse.mylyn.internal.sandbox.ui.SandboxUiPlugin.getHighlighterForContextId(SandboxUiPlugin.java:186)
at org.eclipse.mylyn.internal.sandbox.ui.highlighters.TaskHighlighter.getHighlightColor(TaskHighlighter.java:55)
at org.eclipse.mylyn.tasks.ui.TaskElementLabelProvider.getBackground(TaskElementLabelProvider.java:237)
at org.eclipse.jface.viewers.DecoratingLabelProvider.getBackground(DecoratingLabelProvider.java:268)
[...]
- locked <0xb2a39b10> (a org.eclipse.swt.widgets.RunnableLock)
Comment 8 Steffen Pingel CLA 2009-01-04 11:59:48 EST
Created attachment 121489 [details]
proposed fix

The patch triggers initialization of ColorMap during startup and synchronizes the initizialization of the HighligherList instance in SandboxUiPlugin. That should work around the deadlock and fix the ConcurrentModificationException.
Comment 9 Steffen Pingel CLA 2009-01-04 11:59:51 EST
Created attachment 121490 [details]
mylyn/context/zip
Comment 10 Steffen Pingel CLA 2009-01-04 12:00:25 EST
Marking resolved.
Comment 11 Steffen Pingel CLA 2009-01-04 12:58:20 EST
Apparently the fix did not work. Updated stack trace:

"Worker-5" prio=1 tid=0x0917b808 nid=0x6f65 in Object.wait() [0x87179000..0x87179fc0]
	at java.lang.Object.wait(Native Method)
	- waiting on <0x9233a438> (a org.eclipse.swt.internal.Lock)
	at java.lang.Object.wait(Object.java:474)
	at org.eclipse.swt.internal.Lock.lock(Lock.java:34)
	- locked <0x9233a438> (a org.eclipse.swt.internal.Lock)
	at org.eclipse.swt.internal.gtk.OS.gdk_colormap_get_system(OS.java:2395)
	at org.eclipse.swt.graphics.Color.init(Color.java:245)
	at org.eclipse.swt.graphics.Color.<init>(Color.java:77)
	at org.eclipse.mylyn.internal.sandbox.ui.highlighters.Highlighter.initializeFromString(Highlighter.java:256)
	at org.eclipse.mylyn.internal.sandbox.ui.highlighters.Highlighter.<init>(Highlighter.java:73)
	at org.eclipse.mylyn.internal.sandbox.ui.highlighters.HighlighterList.internalizeFromString(HighlighterList.java:125)
	at org.eclipse.mylyn.internal.sandbox.ui.highlighters.HighlighterList.<init>(HighlighterList.java:45)
	at org.eclipse.mylyn.internal.sandbox.ui.SandboxUiPlugin.initializeHighlighters(SandboxUiPlugin.java:156)
	at org.eclipse.mylyn.internal.sandbox.ui.SandboxUiPlugin.getHighlighterList(SandboxUiPlugin.java:165)
	- locked <0x937a4f30> (a org.eclipse.mylyn.internal.sandbox.ui.SandboxUiPlugin)
	at org.eclipse.mylyn.internal.sandbox.ui.SandboxUiPlugin.getHighlighter(SandboxUiPlugin.java:178)
	at org.eclipse.mylyn.internal.sandbox.ui.SandboxUiPlugin.getHighlighterForContextId(SandboxUiPlugin.java:189)
	at org.eclipse.mylyn.internal.sandbox.ui.highlighters.TaskHighlighter.decorate(TaskHighlighter.java:45)
	at org.eclipse.ui.internal.decorators.LightweightDecoratorDefinition.decorate(LightweightDecoratorDefinition.java:269)
	at org.eclipse.ui.internal.decorators.LightweightDecoratorManager$LightweightRunnable.run(LightweightDecoratorManager.java:72)
	at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37)
	at org.eclipse.ui.internal.decorators.LightweightDecoratorManager.decorate(LightweightDecoratorManager.java:356)
	at org.eclipse.ui.internal.decorators.LightweightDecoratorManager.getDecorations(LightweightDecoratorManager.java:338)
	at org.eclipse.ui.internal.decorators.DecorationScheduler$1.ensureResultCached(DecorationScheduler.java:374)
	at org.eclipse.ui.internal.decorators.DecorationScheduler$1.run(DecorationScheduler.java:334)
	at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)


"main" prio=1 tid=0x0805d5f0 nid=0x6f07 waiting for monitor entry [0xbfd45000..0xbfd47ec8]
	at org.eclipse.mylyn.internal.sandbox.ui.SandboxUiPlugin.getHighlighterList(SandboxUiPlugin.java:164)
	- waiting to lock <0x937a4f30> (a org.eclipse.mylyn.internal.sandbox.ui.SandboxUiPlugin)
	at org.eclipse.mylyn.internal.sandbox.ui.SandboxUiPlugin.getHighlighter(SandboxUiPlugin.java:178)
	at org.eclipse.mylyn.internal.sandbox.ui.SandboxUiPlugin.getHighlighterForContextId(SandboxUiPlugin.java:189)
	at org.eclipse.mylyn.internal.sandbox.ui.highlighters.TaskHighlighter.getHighlightColor(TaskHighlighter.java:58)
	at org.eclipse.mylyn.tasks.ui.TaskElementLabelProvider.getBackground(TaskElementLabelProvider.java:251)
	at org.eclipse.jface.viewers.DecoratingLabelProvider.getBackground(DecoratingLabelProvider.java:268)
	at org.eclipse.mylyn.internal.tasks.ui.views.TaskTableLabelProvider.getBackground(TaskTableLabelProvider.java:86)
	at org.eclipse.jface.viewers.TableColumnViewerLabelProvider.update(TableColumnViewerLabelProvider.java:82)
	at org.eclipse.jface.viewers.ViewerColumn.refresh(ViewerColumn.java:145)
	at org.eclipse.jface.viewers.AbstractTreeViewer.doUpdateItem(AbstractTreeViewer.java:932)
	at org.eclipse.jface.viewers.AbstractTreeViewer$UpdateItemSafeRunnable.run(AbstractTreeViewer.java:102)
	at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37)
	at org.eclipse.core.runtime.Platform.run(Platform.java:880)
	at org.eclipse.ui.internal.JFaceUtil$1.run(JFaceUtil.java:48)
	at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:175)
	at org.eclipse.jface.viewers.AbstractTreeViewer.doUpdateItem(AbstractTreeViewer.java:1012)
	at org.eclipse.jface.viewers.StructuredViewer$UpdateItemSafeRunnable.run(StructuredViewer.java:466)
	at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37)
	at org.eclipse.core.runtime.Platform.run(Platform.java:880)
	at org.eclipse.ui.internal.JFaceUtil$1.run(JFaceUtil.java:48)
	at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:175)
	at org.eclipse.jface.viewers.StructuredViewer.updateItem(StructuredViewer.java:2041)
	at org.eclipse.jface.viewers.AbstractTreeViewer.createTreeItem(AbstractTreeViewer.java:827)
	at org.eclipse.jface.viewers.AbstractTreeViewer$1.run(AbstractTreeViewer.java:802)
	at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70)
	at org.eclipse.jface.viewers.AbstractTreeViewer.createChildren(AbstractTreeViewer.java:776)
	at org.eclipse.jface.viewers.TreeViewer.createChildren(TreeViewer.java:634)
	at org.eclipse.jface.viewers.AbstractTreeViewer.internalExpand(AbstractTreeViewer.java:1578)
	at org.eclipse.jface.viewers.AbstractTreeViewer.setSelectionToWidget(AbstractTreeViewer.java:2456)
	at org.eclipse.jface.viewers.StructuredViewer.setSelectionToWidget(StructuredViewer.java:1680)
	at org.eclipse.jface.viewers.AbstractTreeViewer.setSelectionToWidget(AbstractTreeViewer.java:2864)
	at org.eclipse.jface.viewers.StructuredViewer.setSelection(StructuredViewer.java:1636)
	at org.eclipse.jface.viewers.TreeViewer.setSelection(TreeViewer.java:1104)
	at org.eclipse.mylyn.internal.tasks.ui.views.TaskListView.selectedAndFocusTask(TaskListView.java:1669)
	at org.eclipse.mylyn.internal.tasks.ui.views.TaskListView.jumpToEditorTask(TaskListView.java:1817)
	at org.eclipse.mylyn.internal.tasks.ui.views.TaskListView.access$9(TaskListView.java:1811)
	at org.eclipse.mylyn.internal.tasks.ui.views.TaskListView$7.jumpToEditor(TaskListView.java:1143)
	at org.eclipse.mylyn.internal.tasks.ui.views.TaskListView$7.partActivated(TaskListView.java:1150)
	at org.eclipse.ui.internal.PartListenerList$1.run(PartListenerList.java:72)
	at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37)
	at org.eclipse.core.runtime.Platform.run(Platform.java:880)
	at org.eclipse.ui.internal.PartListenerList.fireEvent(PartListenerList.java:57)
	at org.eclipse.ui.internal.PartListenerList.firePartActivated(PartListenerList.java:70)
	at org.eclipse.ui.internal.PartService.firePartActivated(PartService.java:186)
	at org.eclipse.ui.internal.PartService.access$0(PartService.java:176)
	at org.eclipse.ui.internal.PartService$PartActivated.fire(PartService.java:99)
	at org.eclipse.ui.internal.PartService.processPartJobs(PartService.java:160)
	at org.eclipse.ui.internal.PartService$PartListener.handleEvent(PartService.java:87)
	at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1158)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1182)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1163)
	at org.eclipse.swt.widgets.Shell.setActiveControl(Shell.java:1245)
	at org.eclipse.swt.widgets.Control.sendFocusEvent(Control.java:3296)
	at org.eclipse.swt.widgets.Control.gtk_event_after(Control.java:2684)
	at org.eclipse.swt.widgets.Widget.windowProc(Widget.java:1538)
	at org.eclipse.swt.widgets.Control.windowProc(Control.java:4506)
	at org.eclipse.swt.widgets.Display.windowProc(Display.java:4099)
	at org.eclipse.swt.internal.gtk.OS._gtk_main_do_event(Native Method)
	at org.eclipse.swt.internal.gtk.OS.gtk_main_do_event(OS.java:5792)
	at org.eclipse.swt.widgets.Display.eventProc(Display.java:1177)
	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:1550)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3031)
	at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2382)
	at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2346)
	at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2198)
	at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:493)
	at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:288)
	at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:488)
	at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
	at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:113)
	at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:193)
	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:386)
	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:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:585)
	at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:549)
	at org.eclipse.equinox.launcher.Main.basicRun(Main.java:504)
	at org.eclipse.equinox.launcher.Main.run(Main.java:1236)
	at org.eclipse.equinox.launcher.Main.main(Main.java:1212)
Comment 12 Steffen Pingel CLA 2009-01-04 13:08:10 EST
Created attachment 121491 [details]
second attempt
Comment 13 Steffen Pingel CLA 2009-01-04 13:09:23 EST
The problem in comment 11 was essentially the same as previously except that colors were initialized in Highlighter and not in ColorMap. Now highlighters are initialized during plug-in startup.