Bug 326309 - [core] ProvisioningAgent.getService() synchronization should be revised
Summary: [core] ProvisioningAgent.getService() synchronization should be revised
Status: CLOSED WONTFIX
Alias: None
Product: Equinox
Classification: Eclipse Project
Component: p2 (show other bugs)
Version: 3.6   Edit
Hardware: PC Windows 7
: P3 major with 2 votes (vote)
Target Milestone: ---   Edit
Assignee: P2 Inbox CLA
QA Contact:
URL:
Whiteboard: stalebug
Keywords: helpwanted
Depends on:
Blocks: 325409
  Show dependency tree
 
Reported: 2010-09-27 10:22 EDT by Stoyan Boshev CLA
Modified: 2019-05-21 05:36 EDT (History)
10 users (show)

See Also:


Attachments
Tentative patch (3.00 KB, application/octet-stream)
2012-05-29 15:24 EDT, Pascal Rapicault CLA
no flags Details

Note You need to log in before you can comment on or make changes to this bug.
Description Stoyan Boshev CLA 2010-09-27 10:22:17 EDT
The synchronization on agentServices also surrounds code which calls ServiceTracker.open(). Opening a ServiceTracker may lead to calling user code (e.g. calling ServiceFactory.getService()). Generally it is not a good practice to synchronize code which is calling unknown user code. This may lead to a deadlock situation.
Would it be possible to revise the synchronization in ProvisioningAgent.getService()?
Comment 1 Meng Xin Zhu CLA 2011-03-16 00:02:15 EDT
Does anyone have plan to fix this in 3.7?
Comment 2 Pascal Rapicault CLA 2011-03-16 20:14:42 EDT
No, this is up for grab. Are you interested Meng?
Comment 3 Mirco Dotta CLA 2012-05-20 07:55:00 EDT
It looks like Stoyan was quite right, it can indeed lead to deadlocks, and here is a thread dump that proves it :

2012-05-20 13:48:45
Full thread dump Java HotSpot(TM) 64-Bit Server VM (20.6-b01-415 mixed mode):

"Attach Listener" daemon prio=9 tid=11d28f800 nid=0x114f01000 waiting on condition [00000000]
   java.lang.Thread.State: RUNNABLE

"MultiThreadedHttpConnectionManager cleanup" daemon prio=5 tid=11a349000 nid=0x116e9e000 in Object.wait() [116e9d000]
   java.lang.Thread.State: WAITING (on object monitor)
	at java.lang.Object.wait(Native Method)
	- waiting on <7e2f4e018> (a java.lang.ref.ReferenceQueue$Lock)
	at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:118)
	- locked <7e2f4e018> (a java.lang.ref.ReferenceQueue$Lock)
	at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:134)
	at org.apache.commons.httpclient.MultiThreadedHttpConnectionManager$ReferenceQueueThread.run(MultiThreadedHttpConnectionManager.java:1122)

"Scala Presentation Compiler [org.scala-ide.sdt.core.tests]" daemon prio=4 tid=11a9c5800 nid=0x117901000 in Object.wait() [117900000]
   java.lang.Thread.State: WAITING (on object monitor)
	at java.lang.Object.wait(Native Method)
	- waiting on <7e6ebd750> (a scala.tools.nsc.util.WorkScheduler)
	at java.lang.Object.wait(Object.java:485)
	at scala.tools.nsc.util.WorkScheduler.waitForMoreWork(WorkScheduler.scala:16)
	- locked <7e6ebd750> (a scala.tools.nsc.util.WorkScheduler)
	at scala.tools.nsc.interactive.PresentationCompilerThread$$anonfun$run$1.apply$mcZ$sp(PresentationCompilerThread.scala:21)
	at scala.tools.nsc.io.NullLogger$.logreplay(Replayer.scala:38)
	at scala.tools.nsc.interactive.PresentationCompilerThread.run(PresentationCompilerThread.scala:21)

"Scala Presentation Compiler [org.scala-ide.sdt.core]" daemon prio=4 tid=1182af800 nid=0x116bc7000 in Object.wait() [116bc6000]
   java.lang.Thread.State: WAITING (on object monitor)
	at java.lang.Object.wait(Native Method)
	- waiting on <7df93d708> (a scala.tools.nsc.util.WorkScheduler)
	at java.lang.Object.wait(Object.java:485)
	at scala.tools.nsc.util.WorkScheduler.waitForMoreWork(WorkScheduler.scala:16)
	- locked <7df93d708> (a scala.tools.nsc.util.WorkScheduler)
	at scala.tools.nsc.interactive.PresentationCompilerThread$$anonfun$run$1.apply$mcZ$sp(PresentationCompilerThread.scala:21)
	at scala.tools.nsc.io.NullLogger$.logreplay(Replayer.scala:38)
	at scala.tools.nsc.interactive.PresentationCompilerThread.run(PresentationCompilerThread.scala:21)

"[ThreadPool Manager] - Idle Thread" daemon prio=5 tid=11703f800 nid=0x116cef000 in Object.wait() [116cee000]
   java.lang.Thread.State: WAITING (on object monitor)
	at java.lang.Object.wait(Native Method)
	- waiting on <7db03efa8> (a org.eclipse.equinox.internal.util.impl.tpt.threadpool.Executor)
	at java.lang.Object.wait(Object.java:485)
	at org.eclipse.equinox.internal.util.impl.tpt.threadpool.Executor.run(Executor.java:106)
	- locked <7db03efa8> (a org.eclipse.equinox.internal.util.impl.tpt.threadpool.Executor)

"Worker-9" prio=5 tid=114614000 nid=0x115907000 waiting for monitor entry [115906000]
   java.lang.Thread.State: BLOCKED (on object monitor)
	at org.eclipse.equinox.internal.p2.core.ProvisioningAgent.getService(ProvisioningAgent.java:49)
	- waiting to lock <7d4abdc50> (a java.util.Collections$SynchronizedMap)
	at org.eclipse.equinox.internal.p2.ui.ProvUI.getProvisioningEventBus(ProvUI.java:277)
	at org.eclipse.equinox.p2.ui.ProvisioningUI.signalRepositoryOperationStart(ProvisioningUI.java:369)
	at org.eclipse.equinox.p2.ui.ProvisioningUI.loadMetadataRepository(ProvisioningUI.java:400)
	at org.eclipse.equinox.internal.p2.ui.model.MetadataRepositoryElement.getMetadataRepository(MetadataRepositoryElement.java:120)
	at org.eclipse.equinox.internal.p2.ui.model.MetadataRepositoryElement.fetchChildren(MetadataRepositoryElement.java:70)
	at org.eclipse.equinox.internal.p2.ui.model.RemoteQueriedElement.fetchDeferredChildren(RemoteQueriedElement.java:34)
	at org.eclipse.ui.progress.DeferredTreeContentManager$1.run(DeferredTreeContentManager.java:235)
	at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54)

"Worker-8" prio=5 tid=118f6b000 nid=0x115804000 in Object.wait() [115803000]
   java.lang.Thread.State: TIMED_WAITING (on object monitor)
	at java.lang.Object.wait(Native Method)
	- waiting on <7d4712080> (a org.eclipse.core.internal.jobs.WorkerPool)
	at org.eclipse.core.internal.jobs.WorkerPool.sleep(WorkerPool.java:188)
	- locked <7d4712080> (a org.eclipse.core.internal.jobs.WorkerPool)
	at org.eclipse.core.internal.jobs.WorkerPool.startJob(WorkerPool.java:220)
	at org.eclipse.core.internal.jobs.Worker.run(Worker.java:50)

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

"Worker-6" prio=5 tid=118219000 nid=0x115201000 waiting for monitor entry [115200000]
   java.lang.Thread.State: BLOCKED (on object monitor)
	at org.eclipse.equinox.internal.p2.core.ProvisioningAgent.getService(ProvisioningAgent.java:49)
	- waiting to lock <7d4abdc50> (a java.util.Collections$SynchronizedMap)
	at org.eclipse.equinox.internal.p2.engine.ProfilePreferences.doSave(ProfilePreferences.java:120)
	- locked <7d4b4a248> (a java.lang.Object)
	at org.eclipse.equinox.internal.p2.engine.ProfilePreferences$SaveJob.run(ProfilePreferences.java:49)
	at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54)

"Worker-5" prio=5 tid=10cb00800 nid=0x114901000 in Object.wait() [114900000]
   java.lang.Thread.State: WAITING (on object monitor)
	at java.lang.Object.wait(Native Method)
	- waiting on <7d61f21a0> (a java.lang.Object)
	at java.lang.Object.wait(Object.java:485)
	at org.eclipse.core.internal.jobs.ThreadJob.waitForRun(ThreadJob.java:272)
	- locked <7d61f21a0> (a java.lang.Object)
	at org.eclipse.core.internal.jobs.ThreadJob.joinRun(ThreadJob.java:199)
	at org.eclipse.core.internal.jobs.ImplicitJobs.begin(ImplicitJobs.java:92)
	at org.eclipse.core.internal.jobs.JobManager.beginRule(JobManager.java:286)
	at org.eclipse.core.internal.resources.WorkManager.checkIn(WorkManager.java:118)
	at org.eclipse.core.internal.resources.Workspace.prepareOperation(Workspace.java:2282)
	at org.eclipse.core.internal.resources.Resource.refreshLocal(Resource.java:1655)
	at org.eclipse.core.internal.refresh.RefreshJob.runInWorkspace(RefreshJob.java:167)
	at org.eclipse.core.internal.resources.InternalWorkspaceJob.run(InternalWorkspaceJob.java:38)
	at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54)

"Worker-4" prio=5 tid=114613800 nid=0x1137df000 in Object.wait() [1137de000]
   java.lang.Thread.State: TIMED_WAITING (on object monitor)
	at java.lang.Object.wait(Native Method)
	- waiting on <7d4712080> (a org.eclipse.core.internal.jobs.WorkerPool)
	at org.eclipse.core.internal.jobs.WorkerPool.sleep(WorkerPool.java:188)
	- locked <7d4712080> (a org.eclipse.core.internal.jobs.WorkerPool)
	at org.eclipse.core.internal.jobs.WorkerPool.startJob(WorkerPool.java:220)
	at org.eclipse.core.internal.jobs.Worker.run(Worker.java:50)

"Worker-3" prio=5 tid=114612800 nid=0x11313b000 waiting for monitor entry [11313a000]
   java.lang.Thread.State: BLOCKED (on object monitor)
	at org.eclipse.equinox.internal.p2.engine.ProfilePreferences.doSave(ProfilePreferences.java:119)
	- waiting to lock <7d4b4a248> (a java.lang.Object)
	at org.eclipse.equinox.internal.p2.engine.ProfilePreferences$SaveJob.run(ProfilePreferences.java:49)
	at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54)

"Worker-2" prio=5 tid=118326800 nid=0x112f30000 in Object.wait() [112f2f000]
   java.lang.Thread.State: TIMED_WAITING (on object monitor)
	at java.lang.Object.wait(Native Method)
	- waiting on <7d4712080> (a org.eclipse.core.internal.jobs.WorkerPool)
	at org.eclipse.core.internal.jobs.WorkerPool.sleep(WorkerPool.java:188)
	- locked <7d4712080> (a org.eclipse.core.internal.jobs.WorkerPool)
	at org.eclipse.core.internal.jobs.WorkerPool.startJob(WorkerPool.java:220)
	at org.eclipse.core.internal.jobs.Worker.run(Worker.java:50)

"Java indexing" daemon prio=4 tid=1143d5800 nid=0x113038000 in Object.wait() [113037000]
   java.lang.Thread.State: WAITING (on object monitor)
	at java.lang.Object.wait(Native Method)
	- waiting on <7d86b42e0> (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:382)
	- locked <7d86b42e0> (a org.eclipse.jdt.internal.core.search.indexing.IndexManager)
	at java.lang.Thread.run(Thread.java:680)

"Worker-1" prio=5 tid=104383000 nid=0x112958000 runnable [112955000]
   java.lang.Thread.State: RUNNABLE
	at java.io.ObjectOutputStream.writeNull(ObjectOutputStream.java:1177)
	at java.io.ObjectOutputStream.writeClassDesc(ObjectOutputStream.java:1205)
	at java.io.ObjectOutputStream.writeNonProxyDesc(ObjectOutputStream.java:1262)
	at java.io.ObjectOutputStream.writeClassDesc(ObjectOutputStream.java:1211)
	at java.io.ObjectOutputStream.writeNonProxyDesc(ObjectOutputStream.java:1262)
	at java.io.ObjectOutputStream.writeClassDesc(ObjectOutputStream.java:1211)
	at java.io.ObjectOutputStream.writeNonProxyDesc(ObjectOutputStream.java:1262)
	at java.io.ObjectOutputStream.writeClassDesc(ObjectOutputStream.java:1211)
	at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1395)
	at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1158)
	at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1518)
	at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1483)
	at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1400)
	at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1158)
	at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1518)
	at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1483)
	at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1400)
	at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1158)
	at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1518)
	at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1483)
	at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1400)
	at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1158)
	at java.io.ObjectOutputStream.writeArray(ObjectOutputStream.java:1346)
	at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1154)
	at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1518)
	at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1483)
	at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1400)
	at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1158)
	at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1518)
	at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1483)
	at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1400)
	at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1158)
	at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:330)
	at xsbt.api.SourceFormat$.writes(SourceFormat.scala:26)
	at xsbt.api.SourceFormat$.writes(SourceFormat.scala:15)
	at sbinary.Operations$.write(operations.scala:10)
	at sbinary.BasicTypes$$anon$4.writes(standardtypes.scala:35)
	at sbinary.BasicTypes$$anon$4.writes(standardtypes.scala:24)
	at sbinary.Operations$.write(operations.scala:10)
	at sbinary.Generic$$anon$2$$anonfun$writes$3.apply(generic.scala:47)
	at sbinary.Generic$$anon$2$$anonfun$writes$3.apply(generic.scala:47)
	at scala.collection.immutable.HashMap$HashMap1.foreach(HashMap.scala:180)
	at scala.collection.immutable.HashMap$HashTrieMap.foreach(HashMap.scala:350)
	at scala.collection.immutable.HashMap$HashTrieMap.foreach(HashMap.scala:350)
	at sbinary.Generic$$anon$2.writes(generic.scala:47)
	at sbinary.Generic$$anon$2.writes(generic.scala:46)
	at sbinary.Operations$.write(operations.scala:10)
	at sbinary.Generic$$anon$9.writes(generic.scala:128)
	at sbinary.Operations$.write(operations.scala:10)
	at sbinary.Generic$$anon$10.writes(generic.scala:151)
	at sbinary.Operations$.write(operations.scala:10)
	at sbinary.BasicTypes$$anon$4.writes(standardtypes.scala:34)
	at sbinary.BasicTypes$$anon$4.writes(standardtypes.scala:24)
	at sbinary.Operations$.write(operations.scala:10)
	at sbt.inc.FileBasedStore$$anon$1$$anonfun$set$1.apply(FileBasedStore.scala:17)
	at sbt.inc.FileBasedStore$$anon$1$$anonfun$set$1.apply(FileBasedStore.scala:16)
	at sbt.Using.apply(Using.scala:25)
	at sbt.IO$$anonfun$gzipFileOut$1$$anonfun$apply$6.apply(IO.scala:592)
	at sbt.IO$$anonfun$gzipFileOut$1$$anonfun$apply$6.apply(IO.scala:591)
	at sbt.Using.apply(Using.scala:25)
	at sbt.IO$$anonfun$gzipFileOut$1.apply(IO.scala:591)
	at sbt.IO$$anonfun$gzipFileOut$1.apply(IO.scala:590)
	at sbt.Using.apply(Using.scala:25)
	at sbt.IO$.gzipFileOut(IO.scala:590)
	at sbt.inc.FileBasedStore$$anon$1.set(FileBasedStore.scala:16)
	at scala.tools.eclipse.buildmanager.sbtintegration.WeaklyCachedStore.set(WeaklyCachedStore.scala:27)
	at sbt.inc.AnalysisStore$$anon$2.set(AnalysisStore.scala:30)
	- locked <7dbf3edd0> (a sbt.inc.AnalysisStore$$anon$2)
	at scala.tools.eclipse.buildmanager.sbtintegration.AnalysisCompile.doCompile(AnalysisCompile.scala:183)
	at scala.tools.eclipse.buildmanager.sbtintegration.EclipseSbtBuildManager.runCompiler(EclipseSbtBuildManager.scala:369)
	at scala.tools.eclipse.buildmanager.sbtintegration.EclipseSbtBuildManager.update(EclipseSbtBuildManager.scala:331)
	at scala.tools.eclipse.buildmanager.sbtintegration.EclipseSbtBuildManager.build(EclipseSbtBuildManager.scala:433)
	at scala.tools.eclipse.ScalaProject.build(ScalaProject.scala:750)
	at scala.tools.eclipse.ScalaBuilder.build(ScalaBuilder.scala:114)
	at org.eclipse.core.internal.events.BuildManager$2.run(BuildManager.java:728)
	at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
	at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:199)
	at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:239)
	at org.eclipse.core.internal.events.BuildManager$1.run(BuildManager.java:292)
	at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
	at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:295)
	at org.eclipse.core.internal.events.BuildManager.basicBuildLoop(BuildManager.java:351)
	at org.eclipse.core.internal.events.BuildManager.build(BuildManager.java:374)
	at org.eclipse.core.internal.events.AutoBuildJob.doBuild(AutoBuildJob.java:143)
	at org.eclipse.core.internal.events.AutoBuildJob.run(AutoBuildJob.java:241)
	at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54)

"Provisioning Event Dispatcher" daemon prio=5 tid=104442800 nid=0x1124d7000 in Object.wait() [1124d6000]
   java.lang.Thread.State: WAITING (on object monitor)
	at java.lang.Object.wait(Native Method)
	- waiting on <7d4a8b118> (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:400)
	- locked <7d4a8b118> (a org.eclipse.osgi.framework.eventmgr.EventManager$EventThread)
	at org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.run(EventManager.java:336)

"Worker-0" prio=5 tid=10d9f1800 nid=0x1122ce000 waiting for monitor entry [1122cd000]
   java.lang.Thread.State: BLOCKED (on object monitor)
	at org.eclipse.equinox.internal.p2.core.ProvisioningEventBus.addListener(ProvisioningEventBus.java:45)
	- waiting to lock <7d4a60f10> (a org.eclipse.osgi.framework.eventmgr.CopyOnWriteIdentityMap)
	at org.eclipse.equinox.internal.p2.repository.CacheManager.registerRepoEventListener(CacheManager.java:282)
	at org.eclipse.equinox.internal.p2.repository.CacheManager.setEventBus(CacheManager.java:296)
	at org.eclipse.equinox.internal.p2.repository.CacheManagerComponent.createService(CacheManagerComponent.java:23)
	at org.eclipse.equinox.internal.p2.core.ProvisioningAgent.getService(ProvisioningAgent.java:72)
	- locked <7d4abdc50> (a java.util.Collections$SynchronizedMap)
	at org.eclipse.equinox.internal.p2.metadata.repository.SimpleMetadataRepositoryFactory.getLocalFile(SimpleMetadataRepositoryFactory.java:63)
	at org.eclipse.equinox.internal.p2.metadata.repository.SimpleMetadataRepositoryFactory.load(SimpleMetadataRepositoryFactory.java:88)
	at org.eclipse.equinox.internal.p2.metadata.repository.MetadataRepositoryManager.factoryLoad(MetadataRepositoryManager.java:57)
	at org.eclipse.equinox.internal.p2.repository.helpers.AbstractRepositoryManager.loadRepository(AbstractRepositoryManager.java:749)
	at org.eclipse.equinox.internal.p2.repository.helpers.AbstractRepositoryManager.loadRepository(AbstractRepositoryManager.java:651)
	at org.eclipse.equinox.internal.p2.metadata.repository.MetadataRepositoryManager.loadRepository(MetadataRepositoryManager.java:96)
	at org.eclipse.equinox.internal.p2.metadata.repository.MetadataRepositoryManager.loadRepository(MetadataRepositoryManager.java:92)
	at org.eclipse.equinox.p2.ui.LoadMetadataRepositoryJob.doLoad(LoadMetadataRepositoryJob.java:117)
	at org.eclipse.equinox.p2.ui.LoadMetadataRepositoryJob.runModal(LoadMetadataRepositoryJob.java:102)
	at org.eclipse.equinox.internal.p2.ui.sdk.PreloadingRepositoryHandler$2.runModal(PreloadingRepositoryHandler.java:82)
	at org.eclipse.equinox.p2.operations.ProvisioningJob.run(ProvisioningJob.java:177)
	at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54)

"Worker-JM" prio=5 tid=10c8d8000 nid=0x112779000 in Object.wait() [112778000]
   java.lang.Thread.State: TIMED_WAITING (on object monitor)
	at java.lang.Object.wait(Native Method)
	- waiting on <7d45c9d78> (a java.util.ArrayList)
	at org.eclipse.core.internal.jobs.InternalWorker.run(InternalWorker.java:58)
	- locked <7d45c9d78> (a java.util.ArrayList)

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

"Start Level Event Dispatcher" daemon prio=5 tid=104336000 nid=0x111ebd000 in Object.wait() [111ebc000]
   java.lang.Thread.State: WAITING (on object monitor)
	at java.lang.Object.wait(Native Method)
	- waiting on <7d4618338> (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:400)
	- locked <7d4618338> (a org.eclipse.osgi.framework.eventmgr.EventManager$EventThread)
	at org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.run(EventManager.java:336)

"Framework Event Dispatcher" daemon prio=5 tid=104335000 nid=0x111dba000 in Object.wait() [111db9000]
   java.lang.Thread.State: WAITING (on object monitor)
	at java.lang.Object.wait(Native Method)
	- waiting on <7d4585448> (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:400)
	- locked <7d4585448> (a org.eclipse.osgi.framework.eventmgr.EventManager$EventThread)
	at org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.run(EventManager.java:336)

"Bundle File Closer" daemon prio=5 tid=10e0fa800 nid=0x111849000 in Object.wait() [111848000]
   java.lang.Thread.State: WAITING (on object monitor)
	at java.lang.Object.wait(Native Method)
	- waiting on <7d42ef9e0> (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:400)
	- locked <7d42ef9e0> (a org.eclipse.osgi.framework.eventmgr.EventManager$EventThread)
	at org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.run(EventManager.java:336)

"State Data Manager" daemon prio=5 tid=10d8c4000 nid=0x111586000 waiting on condition [111585000]
   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:680)

"Framework Active Thread" prio=5 tid=10c949800 nid=0x111483000 in Object.wait() [111482000]
   java.lang.Thread.State: TIMED_WAITING (on object monitor)
	at java.lang.Object.wait(Native Method)
	- waiting on <7d4000a70> (a org.eclipse.osgi.framework.internal.core.Framework)
	at org.eclipse.osgi.framework.internal.core.Framework.run(Framework.java:1817)
	- locked <7d4000a70> (a org.eclipse.osgi.framework.internal.core.Framework)
	at java.lang.Thread.run(Thread.java:680)

"Poller SunPKCS11-Darwin" daemon prio=1 tid=10e0d3000 nid=0x10ed80000 waiting on condition [10ed7f000]
   java.lang.Thread.State: TIMED_WAITING (sleeping)
	at java.lang.Thread.sleep(Native Method)
	at sun.security.pkcs11.SunPKCS11$TokenPoller.run(SunPKCS11.java:692)
	at java.lang.Thread.run(Thread.java:680)

"Low Memory Detector" daemon prio=5 tid=10e002000 nid=0x10eb07000 runnable [00000000]
   java.lang.Thread.State: RUNNABLE

"C2 CompilerThread1" daemon prio=9 tid=1040f6000 nid=0x10ea04000 runnable [00000000]
   java.lang.Thread.State: RUNNABLE

"C2 CompilerThread0" daemon prio=9 tid=1040f5000 nid=0x10e901000 runnable [00000000]
   java.lang.Thread.State: RUNNABLE

"Signal Dispatcher" daemon prio=9 tid=1040f4800 nid=0x10c704000 runnable [00000000]
   java.lang.Thread.State: RUNNABLE

"Surrogate Locker Thread (Concurrent GC)" daemon prio=5 tid=1040f3800 nid=0x10c601000 waiting on condition [00000000]
   java.lang.Thread.State: RUNNABLE

"Finalizer" daemon prio=8 tid=1040f1000 nid=0x10c16f000 in Object.wait() [10c16e000]
   java.lang.Thread.State: WAITING (on object monitor)
	at java.lang.Object.wait(Native Method)
	- waiting on <7d40008c8> (a java.lang.ref.ReferenceQueue$Lock)
	at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:118)
	- locked <7d40008c8> (a java.lang.ref.ReferenceQueue$Lock)
	at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:134)
	at java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:159)

"Reference Handler" daemon prio=10 tid=1040f0000 nid=0x10c06c000 in Object.wait() [10c06b000]
   java.lang.Thread.State: WAITING (on object monitor)
	at java.lang.Object.wait(Native Method)
	- waiting on <7d4002510> (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 <7d4002510> (a java.lang.ref.Reference$Lock)

"main" prio=6 tid=104001800 nid=0x7fff7db46960 waiting for monitor entry [7fff5fbfa000]
   java.lang.Thread.State: BLOCKED (on object monitor)
	at org.eclipse.equinox.internal.p2.core.ProvisioningAgent.getService(ProvisioningAgent.java:49)
	- waiting to lock <7d4abdc50> (a java.util.Collections$SynchronizedMap)
	at org.eclipse.equinox.p2.ui.ProvisioningUI.getRepositoryTracker(ProvisioningUI.java:120)
	at org.eclipse.equinox.internal.p2.ui.dialogs.RepositorySelectionGroup.getLocalSites(RepositorySelectionGroup.java:436)
	at org.eclipse.equinox.internal.p2.ui.dialogs.RepositorySelectionGroup.repoComboSelectionChanged(RepositorySelectionGroup.java:634)
	at org.eclipse.equinox.internal.p2.ui.dialogs.RepositorySelectionGroup$10.run(RepositorySelectionGroup.java:368)
	at org.eclipse.equinox.internal.p2.ui.dialogs.RepositorySelectionGroup.fillRepoCombo(RepositorySelectionGroup.java:374)
	at org.eclipse.equinox.internal.p2.ui.dialogs.RepositorySelectionGroup$14.repositoryAdded(RepositorySelectionGroup.java:497)
	at org.eclipse.equinox.internal.p2.ui.ProvUIProvisioningListener.handleRepositoryEvent(ProvUIProvisioningListener.java:113)
	at org.eclipse.equinox.internal.p2.ui.ProvUIProvisioningListener.notify(ProvUIProvisioningListener.java:79)
	at org.eclipse.equinox.internal.p2.core.ProvisioningEventBus.dispatchEvent(ProvisioningEventBus.java:108)
	at org.eclipse.equinox.internal.p2.core.ProvisioningEventBus.dispatchEvent(ProvisioningEventBus.java:1)
	at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230)
	at org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:148)
	at org.eclipse.equinox.internal.p2.core.ProvisioningEventBus.publishEvent(ProvisioningEventBus.java:85)
	- locked <7d4a60f10> (a org.eclipse.osgi.framework.eventmgr.CopyOnWriteIdentityMap)
	at org.eclipse.equinox.p2.ui.ProvisioningUI.signalRepositoryOperationComplete(ProvisioningUI.java:383)
	at org.eclipse.equinox.internal.p2.ui.ColocatedRepositoryTracker.addRepository(ColocatedRepositoryTracker.java:72)
	at org.eclipse.equinox.internal.p2.ui.dialogs.RepositorySelectionGroup$16.run(RepositorySelectionGroup.java:587)
	at org.eclipse.jface.operation.ModalContext.runInCurrentThread(ModalContext.java:464)
	at org.eclipse.jface.operation.ModalContext.run(ModalContext.java:372)
	at org.eclipse.jface.wizard.WizardDialog.run(WizardDialog.java:1029)
	at org.eclipse.equinox.internal.p2.ui.dialogs.RepositorySelectionGroup.addRepository(RepositorySelectionGroup.java:567)
	at org.eclipse.equinox.internal.p2.ui.dialogs.RepositorySelectionGroup$2.keyPressed(RepositorySelectionGroup.java:138)
	at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:167)
	at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
	at org.eclipse.swt.widgets.Display.sendEvent(Display.java:4128)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1457)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1480)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1465)
	at org.eclipse.swt.widgets.Widget.sendKeyEvent(Widget.java:1494)
	at org.eclipse.swt.widgets.Widget.sendKeyEvent(Widget.java:1490)
	at org.eclipse.swt.widgets.Combo.sendKeyEvent(Combo.java:1249)
	at org.eclipse.swt.widgets.Control.doCommandBySelector(Control.java:1060)
	at org.eclipse.swt.widgets.Display.windowProc(Display.java:5563)
	at org.eclipse.swt.internal.cocoa.OS.objc_msgSendSuper(Native Method)
	at org.eclipse.swt.widgets.Widget.callSuper(Widget.java:220)
	at org.eclipse.swt.widgets.Widget.superKeyDown(Widget.java:1898)
	at org.eclipse.swt.widgets.Widget.keyDown(Widget.java:1076)
	at org.eclipse.swt.widgets.Control.keyDown(Control.java:2367)
	at org.eclipse.swt.widgets.Composite.keyDown(Composite.java:600)
	at org.eclipse.swt.widgets.Display.windowProc(Display.java:5473)
	at org.eclipse.swt.internal.cocoa.OS.objc_msgSendSuper(Native Method)
	at org.eclipse.swt.widgets.Widget.callSuper(Widget.java:220)
	at org.eclipse.swt.widgets.Widget.windowSendEvent(Widget.java:2095)
	at org.eclipse.swt.widgets.Shell.windowSendEvent(Shell.java:2253)
	at org.eclipse.swt.widgets.Display.windowProc(Display.java:5535)
	at org.eclipse.swt.internal.cocoa.OS.objc_msgSendSuper(Native Method)
	at org.eclipse.swt.widgets.Display.applicationSendEvent(Display.java:4989)
	at org.eclipse.swt.widgets.Display.applicationProc(Display.java:5138)
	at org.eclipse.swt.internal.cocoa.OS.objc_msgSend(Native Method)
	at org.eclipse.swt.internal.cocoa.NSApplication.sendEvent(NSApplication.java:128)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3610)
	at org.eclipse.jface.window.Window.runEventLoop(Window.java:825)
	at org.eclipse.jface.window.Window.open(Window.java:801)
	at org.eclipse.equinox.p2.ui.ProvisioningUI.openInstallWizard(ProvisioningUI.java:209)
	at org.eclipse.equinox.internal.p2.ui.sdk.InstallNewSoftwareHandler.doExecute(InstallNewSoftwareHandler.java:31)
	at org.eclipse.equinox.internal.p2.ui.sdk.PreloadingRepositoryHandler.doExecuteAndLoad(PreloadingRepositoryHandler.java:114)
	at org.eclipse.equinox.internal.p2.ui.sdk.PreloadingRepositoryHandler$1.run(PreloadingRepositoryHandler.java:68)
	at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70)
	at org.eclipse.equinox.internal.p2.ui.sdk.PreloadingRepositoryHandler.execute(PreloadingRepositoryHandler.java:66)
	at org.eclipse.ui.internal.handlers.HandlerProxy.execute(HandlerProxy.java:293)
	at org.eclipse.core.commands.Command.executeWithChecks(Command.java:476)
	at org.eclipse.core.commands.ParameterizedCommand.executeWithChecks(ParameterizedCommand.java:508)
	at org.eclipse.ui.internal.handlers.HandlerService.executeCommand(HandlerService.java:169)
	at org.eclipse.ui.internal.handlers.SlaveHandlerService.executeCommand(SlaveHandlerService.java:241)
	at org.eclipse.ui.menus.CommandContributionItem.handleWidgetSelection(CommandContributionItem.java:829)
	at org.eclipse.ui.menus.CommandContributionItem.access$19(CommandContributionItem.java:815)
	at org.eclipse.ui.menus.CommandContributionItem$5.handleEvent(CommandContributionItem.java:805)
	at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
	at org.eclipse.swt.widgets.Display.sendEvent(Display.java:4128)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1457)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1480)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1465)
	at org.eclipse.swt.widgets.Widget.notifyListeners(Widget.java:1270)
	at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3974)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3613)
	at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2701)
	at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2665)
	at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2499)
	at org.eclipse.ui.internal.Workbench$7.run(Workbench.java:679)
	at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
	at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:668)
	at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
	at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:123)
	at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:344)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java: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:622)
	at org.eclipse.equinox.launcher.Main.basicRun(Main.java:577)
	at org.eclipse.equinox.launcher.Main.run(Main.java:1410)

"VM Thread" prio=9 tid=1040eb800 nid=0x10bf69000 runnable 

"Gang worker#0 (Parallel GC Threads)" prio=9 tid=104002800 nid=0x107ac2000 runnable 

"Gang worker#1 (Parallel GC Threads)" prio=9 tid=104003800 nid=0x107bc5000 runnable 

"Gang worker#2 (Parallel GC Threads)" prio=9 tid=104004000 nid=0x107cc8000 runnable 

"Gang worker#3 (Parallel GC Threads)" prio=9 tid=104004800 nid=0x107dcb000 runnable 

"Concurrent Mark-Sweep GC Thread" prio=9 tid=10407f800 nid=0x10bc31000 runnable 
"VM Periodic Task Thread" prio=10 tid=10e014000 nid=0x10ec0a000 waiting on condition 

"Exception Catcher Thread" prio=10 tid=104002000 nid=0x103419000 runnable 
JNI global references: 2970


Found one Java-level deadlock:
=============================
"Worker-9":
  waiting to lock monitor 100845768 (object 7d4abdc50, a java.util.Collections$SynchronizedMap),
  which is held by "Worker-0"
"Worker-0":
  waiting to lock monitor 1008a3760 (object 7d4a60f10, a org.eclipse.osgi.framework.eventmgr.CopyOnWriteIdentityMap),
  which is held by "main"
"main":
  waiting to lock monitor 100845768 (object 7d4abdc50, a java.util.Collections$SynchronizedMap),
  which is held by "Worker-0"

Java stack information for the threads listed above:
===================================================
"Worker-9":
	at org.eclipse.equinox.internal.p2.core.ProvisioningAgent.getService(ProvisioningAgent.java:49)
	- waiting to lock <7d4abdc50> (a java.util.Collections$SynchronizedMap)
	at org.eclipse.equinox.internal.p2.ui.ProvUI.getProvisioningEventBus(ProvUI.java:277)
	at org.eclipse.equinox.p2.ui.ProvisioningUI.signalRepositoryOperationStart(ProvisioningUI.java:369)
	at org.eclipse.equinox.p2.ui.ProvisioningUI.loadMetadataRepository(ProvisioningUI.java:400)
	at org.eclipse.equinox.internal.p2.ui.model.MetadataRepositoryElement.getMetadataRepository(MetadataRepositoryElement.java:120)
	at org.eclipse.equinox.internal.p2.ui.model.MetadataRepositoryElement.fetchChildren(MetadataRepositoryElement.java:70)
	at org.eclipse.equinox.internal.p2.ui.model.RemoteQueriedElement.fetchDeferredChildren(RemoteQueriedElement.java:34)
	at org.eclipse.ui.progress.DeferredTreeContentManager$1.run(DeferredTreeContentManager.java:235)
	at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54)
"Worker-0":
	at org.eclipse.equinox.internal.p2.core.ProvisioningEventBus.addListener(ProvisioningEventBus.java:45)
	- waiting to lock <7d4a60f10> (a org.eclipse.osgi.framework.eventmgr.CopyOnWriteIdentityMap)
	at org.eclipse.equinox.internal.p2.repository.CacheManager.registerRepoEventListener(CacheManager.java:282)
	at org.eclipse.equinox.internal.p2.repository.CacheManager.setEventBus(CacheManager.java:296)
	at org.eclipse.equinox.internal.p2.repository.CacheManagerComponent.createService(CacheManagerComponent.java:23)
	at org.eclipse.equinox.internal.p2.core.ProvisioningAgent.getService(ProvisioningAgent.java:72)
	- locked <7d4abdc50> (a java.util.Collections$SynchronizedMap)
	at org.eclipse.equinox.internal.p2.metadata.repository.SimpleMetadataRepositoryFactory.getLocalFile(SimpleMetadataRepositoryFactory.java:63)
	at org.eclipse.equinox.internal.p2.metadata.repository.SimpleMetadataRepositoryFactory.load(SimpleMetadataRepositoryFactory.java:88)
	at org.eclipse.equinox.internal.p2.metadata.repository.MetadataRepositoryManager.factoryLoad(MetadataRepositoryManager.java:57)
	at org.eclipse.equinox.internal.p2.repository.helpers.AbstractRepositoryManager.loadRepository(AbstractRepositoryManager.java:749)
	at org.eclipse.equinox.internal.p2.repository.helpers.AbstractRepositoryManager.loadRepository(AbstractRepositoryManager.java:651)
	at org.eclipse.equinox.internal.p2.metadata.repository.MetadataRepositoryManager.loadRepository(MetadataRepositoryManager.java:96)
	at org.eclipse.equinox.internal.p2.metadata.repository.MetadataRepositoryManager.loadRepository(MetadataRepositoryManager.java:92)
	at org.eclipse.equinox.p2.ui.LoadMetadataRepositoryJob.doLoad(LoadMetadataRepositoryJob.java:117)
	at org.eclipse.equinox.p2.ui.LoadMetadataRepositoryJob.runModal(LoadMetadataRepositoryJob.java:102)
	at org.eclipse.equinox.internal.p2.ui.sdk.PreloadingRepositoryHandler$2.runModal(PreloadingRepositoryHandler.java:82)
	at org.eclipse.equinox.p2.operations.ProvisioningJob.run(ProvisioningJob.java:177)
	at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54)
"main":
	at org.eclipse.equinox.internal.p2.core.ProvisioningAgent.getService(ProvisioningAgent.java:49)
	- waiting to lock <7d4abdc50> (a java.util.Collections$SynchronizedMap)
	at org.eclipse.equinox.p2.ui.ProvisioningUI.getRepositoryTracker(ProvisioningUI.java:120)
	at org.eclipse.equinox.internal.p2.ui.dialogs.RepositorySelectionGroup.getLocalSites(RepositorySelectionGroup.java:436)
	at org.eclipse.equinox.internal.p2.ui.dialogs.RepositorySelectionGroup.repoComboSelectionChanged(RepositorySelectionGroup.java:634)
	at org.eclipse.equinox.internal.p2.ui.dialogs.RepositorySelectionGroup$10.run(RepositorySelectionGroup.java:368)
	at org.eclipse.equinox.internal.p2.ui.dialogs.RepositorySelectionGroup.fillRepoCombo(RepositorySelectionGroup.java:374)
	at org.eclipse.equinox.internal.p2.ui.dialogs.RepositorySelectionGroup$14.repositoryAdded(RepositorySelectionGroup.java:497)
	at org.eclipse.equinox.internal.p2.ui.ProvUIProvisioningListener.handleRepositoryEvent(ProvUIProvisioningListener.java:113)
	at org.eclipse.equinox.internal.p2.ui.ProvUIProvisioningListener.notify(ProvUIProvisioningListener.java:79)
	at org.eclipse.equinox.internal.p2.core.ProvisioningEventBus.dispatchEvent(ProvisioningEventBus.java:108)
	at org.eclipse.equinox.internal.p2.core.ProvisioningEventBus.dispatchEvent(ProvisioningEventBus.java:1)
	at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230)
	at org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:148)
	at org.eclipse.equinox.internal.p2.core.ProvisioningEventBus.publishEvent(ProvisioningEventBus.java:85)
	- locked <7d4a60f10> (a org.eclipse.osgi.framework.eventmgr.CopyOnWriteIdentityMap)
	at org.eclipse.equinox.p2.ui.ProvisioningUI.signalRepositoryOperationComplete(ProvisioningUI.java:383)
	at org.eclipse.equinox.internal.p2.ui.ColocatedRepositoryTracker.addRepository(ColocatedRepositoryTracker.java:72)
	at org.eclipse.equinox.internal.p2.ui.dialogs.RepositorySelectionGroup$16.run(RepositorySelectionGroup.java:587)
	at org.eclipse.jface.operation.ModalContext.runInCurrentThread(ModalContext.java:464)
	at org.eclipse.jface.operation.ModalContext.run(ModalContext.java:372)
	at org.eclipse.jface.wizard.WizardDialog.run(WizardDialog.java:1029)
	at org.eclipse.equinox.internal.p2.ui.dialogs.RepositorySelectionGroup.addRepository(RepositorySelectionGroup.java:567)
	at org.eclipse.equinox.internal.p2.ui.dialogs.RepositorySelectionGroup$2.keyPressed(RepositorySelectionGroup.java:138)
	at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:167)
	at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
	at org.eclipse.swt.widgets.Display.sendEvent(Display.java:4128)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1457)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1480)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1465)
	at org.eclipse.swt.widgets.Widget.sendKeyEvent(Widget.java:1494)
	at org.eclipse.swt.widgets.Widget.sendKeyEvent(Widget.java:1490)
	at org.eclipse.swt.widgets.Combo.sendKeyEvent(Combo.java:1249)
	at org.eclipse.swt.widgets.Control.doCommandBySelector(Control.java:1060)
	at org.eclipse.swt.widgets.Display.windowProc(Display.java:5563)
	at org.eclipse.swt.internal.cocoa.OS.objc_msgSendSuper(Native Method)
	at org.eclipse.swt.widgets.Widget.callSuper(Widget.java:220)
	at org.eclipse.swt.widgets.Widget.superKeyDown(Widget.java:1898)
	at org.eclipse.swt.widgets.Widget.keyDown(Widget.java:1076)
	at org.eclipse.swt.widgets.Control.keyDown(Control.java:2367)
	at org.eclipse.swt.widgets.Composite.keyDown(Composite.java:600)
	at org.eclipse.swt.widgets.Display.windowProc(Display.java:5473)
	at org.eclipse.swt.internal.cocoa.OS.objc_msgSendSuper(Native Method)
	at org.eclipse.swt.widgets.Widget.callSuper(Widget.java:220)
	at org.eclipse.swt.widgets.Widget.windowSendEvent(Widget.java:2095)
	at org.eclipse.swt.widgets.Shell.windowSendEvent(Shell.java:2253)
	at org.eclipse.swt.widgets.Display.windowProc(Display.java:5535)
	at org.eclipse.swt.internal.cocoa.OS.objc_msgSendSuper(Native Method)
	at org.eclipse.swt.widgets.Display.applicationSendEvent(Display.java:4989)
	at org.eclipse.swt.widgets.Display.applicationProc(Display.java:5138)
	at org.eclipse.swt.internal.cocoa.OS.objc_msgSend(Native Method)
	at org.eclipse.swt.internal.cocoa.NSApplication.sendEvent(NSApplication.java:128)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3610)
	at org.eclipse.jface.window.Window.runEventLoop(Window.java:825)
	at org.eclipse.jface.window.Window.open(Window.java:801)
	at org.eclipse.equinox.p2.ui.ProvisioningUI.openInstallWizard(ProvisioningUI.java:209)
	at org.eclipse.equinox.internal.p2.ui.sdk.InstallNewSoftwareHandler.doExecute(InstallNewSoftwareHandler.java:31)
	at org.eclipse.equinox.internal.p2.ui.sdk.PreloadingRepositoryHandler.doExecuteAndLoad(PreloadingRepositoryHandler.java:114)
	at org.eclipse.equinox.internal.p2.ui.sdk.PreloadingRepositoryHandler$1.run(PreloadingRepositoryHandler.java:68)
	at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70)
	at org.eclipse.equinox.internal.p2.ui.sdk.PreloadingRepositoryHandler.execute(PreloadingRepositoryHandler.java:66)
	at org.eclipse.ui.internal.handlers.HandlerProxy.execute(HandlerProxy.java:293)
	at org.eclipse.core.commands.Command.executeWithChecks(Command.java:476)
	at org.eclipse.core.commands.ParameterizedCommand.executeWithChecks(ParameterizedCommand.java:508)
	at org.eclipse.ui.internal.handlers.HandlerService.executeCommand(HandlerService.java:169)
	at org.eclipse.ui.internal.handlers.SlaveHandlerService.executeCommand(SlaveHandlerService.java:241)
	at org.eclipse.ui.menus.CommandContributionItem.handleWidgetSelection(CommandContributionItem.java:829)
	at org.eclipse.ui.menus.CommandContributionItem.access$19(CommandContributionItem.java:815)
	at org.eclipse.ui.menus.CommandContributionItem$5.handleEvent(CommandContributionItem.java:805)
	at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
	at org.eclipse.swt.widgets.Display.sendEvent(Display.java:4128)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1457)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1480)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1465)
	at org.eclipse.swt.widgets.Widget.notifyListeners(Widget.java:1270)
	at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3974)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3613)
	at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2701)
	at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2665)
	at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2499)
	at org.eclipse.ui.internal.Workbench$7.run(Workbench.java:679)
	at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
	at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:668)
	at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
	at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:123)
	at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:344)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java: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:622)
	at org.eclipse.equinox.launcher.Main.basicRun(Main.java:577)
	at org.eclipse.equinox.launcher.Main.run(Main.java:1410)

Found 1 deadlock.

I'm using Eclipse 3.7.2 (M20120208-0800).
Comment 4 Pascal Rapicault CLA 2012-05-29 15:24:59 EDT
Created attachment 216430 [details]
Tentative patch

The attached patch introduces a lock whose granularity is the service being requested. I kept the acquisition and release of the lock at the same scope than what the synchronized block was doing. 
The patch could be improved by acquiring the lock later.

Also the patch relies on Java 5 apis.
Comment 5 Stoyan Boshev CLA 2013-11-27 15:33:03 EST
The patch looks good to me.
The only concern I have is the timeout of 5 seconds might not be sufficient in some cases. It probably needs to be increased or be configurable. 
I think a timeout of 30 seconds is better. The purpose of the timeout is not to fail fast but to prevent deadlock.
Comment 6 Pascal Rapicault CLA 2014-05-05 10:20:51 EDT
Will not be addressed in Luna.
Comment 7 Iulian Dragos CLA 2015-07-03 05:46:00 EDT
Still deadlocks in Luna, all right:

Found one Java-level deadlock:
=============================
"Worker-20":
  waiting to lock monitor 0x0000000131025ff8 (object 0x00000007232a9570, a java.util.Collections$SynchronizedMap),
  which is held by "Worker-16"
"Worker-16":
  waiting to lock monitor 0x0000000100a41208 (object 0x0000000728fea4a0, a org.eclipse.osgi.framework.eventmgr.CopyOnWriteIdentityMap),
  which is held by "main"
"main":
  waiting to lock monitor 0x0000000131025ff8 (object 0x00000007232a9570, a java.util.Collections$SynchronizedMap),
  which is held by "Worker-16"

Java stack information for the threads listed above:
===================================================
"Worker-20":
	at org.eclipse.equinox.internal.p2.core.ProvisioningAgent.getService(ProvisioningAgent.java:49)
	- waiting to lock <0x00000007232a9570> (a java.util.Collections$SynchronizedMap)
	at org.eclipse.equinox.internal.p2.engine.ProfilePreferences.doSave(ProfilePreferences.java:120)
	- locked <0x0000000728c7b970> (a java.lang.Object)
	at org.eclipse.equinox.internal.p2.engine.ProfilePreferences$SaveJob.run(ProfilePreferences.java:49)
	at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54)
"Worker-16":
	at org.eclipse.equinox.internal.p2.core.ProvisioningEventBus.addListener(ProvisioningEventBus.java:45)
	- waiting to lock <0x0000000728fea4a0> (a org.eclipse.osgi.framework.eventmgr.CopyOnWriteIdentityMap)
	at org.eclipse.equinox.internal.p2.repository.CacheManager.registerRepoEventListener(CacheManager.java:294)
	at org.eclipse.equinox.internal.p2.repository.CacheManager.setEventBus(CacheManager.java:308)
	at org.eclipse.equinox.internal.p2.repository.CacheManagerComponent.createService(CacheManagerComponent.java:23)
	at org.eclipse.equinox.internal.p2.core.ProvisioningAgent.getService(ProvisioningAgent.java:72)
	- locked <0x00000007232a9570> (a java.util.Collections$SynchronizedMap)
	at org.eclipse.equinox.internal.p2.metadata.repository.SimpleMetadataRepositoryFactory.getLocalFile(SimpleMetadataRepositoryFactory.java:63)
	at org.eclipse.equinox.internal.p2.metadata.repository.SimpleMetadataRepositoryFactory.load(SimpleMetadataRepositoryFactory.java:88)
	at org.eclipse.equinox.internal.p2.metadata.repository.MetadataRepositoryManager.factoryLoad(MetadataRepositoryManager.java:57)
	at org.eclipse.equinox.internal.p2.repository.helpers.AbstractRepositoryManager.loadRepository(AbstractRepositoryManager.java:768)
	at org.eclipse.equinox.internal.p2.repository.helpers.AbstractRepositoryManager.loadRepository(AbstractRepositoryManager.java:668)
	at org.eclipse.equinox.internal.p2.metadata.repository.MetadataRepositoryManager.loadRepository(MetadataRepositoryManager.java:96)
	at org.eclipse.equinox.internal.p2.metadata.repository.MetadataRepositoryManager.loadRepository(MetadataRepositoryManager.java:92)
	at org.eclipse.equinox.p2.ui.LoadMetadataRepositoryJob.doLoad(LoadMetadataRepositoryJob.java:117)
	at org.eclipse.equinox.p2.ui.LoadMetadataRepositoryJob.runModal(LoadMetadataRepositoryJob.java:102)
	at org.eclipse.equinox.internal.p2.ui.sdk.PreloadingRepositoryHandler$2.runModal(PreloadingRepositoryHandler.java:83)
	at org.eclipse.equinox.p2.operations.ProvisioningJob.run(ProvisioningJob.java:177)
	at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54)
"main":
	at org.eclipse.equinox.internal.p2.core.ProvisioningAgent.getService(ProvisioningAgent.java:49)
	- waiting to lock <0x00000007232a9570> (a java.util.Collections$SynchronizedMap)
	at org.eclipse.equinox.p2.ui.ProvisioningUI.getRepositoryTracker(ProvisioningUI.java:118)
	at org.eclipse.equinox.internal.p2.ui.dialogs.RepositorySelectionGroup.getLocalSites(RepositorySelectionGroup.java:436)
	at org.eclipse.equinox.internal.p2.ui.dialogs.RepositorySelectionGroup.repoComboSelectionChanged(RepositorySelectionGroup.java:634)
	at org.eclipse.equinox.internal.p2.ui.dialogs.RepositorySelectionGroup$10.run(RepositorySelectionGroup.java:368)
	at org.eclipse.equinox.internal.p2.ui.dialogs.RepositorySelectionGroup.fillRepoCombo(RepositorySelectionGroup.java:374)
	at org.eclipse.equinox.internal.p2.ui.dialogs.RepositorySelectionGroup$14.repositoryAdded(RepositorySelectionGroup.java:497)
	at org.eclipse.equinox.internal.p2.ui.ProvUIProvisioningListener.handleRepositoryEvent(ProvUIProvisioningListener.java:113)
	at org.eclipse.equinox.internal.p2.ui.ProvUIProvisioningListener.notify(ProvUIProvisioningListener.java:79)
	at org.eclipse.equinox.internal.p2.core.ProvisioningEventBus.dispatchEvent(ProvisioningEventBus.java:108)
	at org.eclipse.equinox.internal.p2.core.ProvisioningEventBus.dispatchEvent(ProvisioningEventBus.java:1)
	at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230)
	at org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:148)
	at org.eclipse.equinox.internal.p2.core.ProvisioningEventBus.publishEvent(ProvisioningEventBus.java:85)
	- locked <0x0000000728fea4a0> (a org.eclipse.osgi.framework.eventmgr.CopyOnWriteIdentityMap)
	at org.eclipse.equinox.p2.ui.ProvisioningUI.signalRepositoryOperationComplete(ProvisioningUI.java:420)
	at org.eclipse.equinox.internal.p2.ui.ColocatedRepositoryTracker.addRepository(ColocatedRepositoryTracker.java:74)
	at org.eclipse.equinox.internal.p2.ui.dialogs.RepositorySelectionGroup$16.run(RepositorySelectionGroup.java:587)
	at org.eclipse.jface.operation.ModalContext.runInCurrentThread(ModalContext.java:466)
	at org.eclipse.jface.operation.ModalContext.run(ModalContext.java:374)
	at org.eclipse.jface.wizard.WizardDialog.run(WizardDialog.java:1059)
	at org.eclipse.equinox.internal.p2.ui.dialogs.RepositorySelectionGroup.addRepository(RepositorySelectionGroup.java:567)
	at org.eclipse.equinox.internal.p2.ui.dialogs.RepositorySelectionGroup$2.keyPressed(RepositorySelectionGroup.java:138)
	at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:167)
	at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
	at org.eclipse.swt.widgets.Display.sendEvent(Display.java:4199)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1467)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1490)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1475)
	at org.eclipse.swt.widgets.Widget.sendKeyEvent(Widget.java:1504)
	at org.eclipse.swt.widgets.Widget.sendKeyEvent(Widget.java:1500)
	at org.eclipse.swt.widgets.Combo.sendKeyEvent(Combo.java:1413)
	at org.eclipse.swt.widgets.Control.doCommandBySelector(Control.java:1060)
	at org.eclipse.swt.widgets.Display.windowProc(Display.java:5730)
	at org.eclipse.swt.internal.cocoa.OS.objc_msgSendSuper(Native Method)
	at org.eclipse.swt.widgets.Widget.callSuper(Widget.java:221)
	at org.eclipse.swt.widgets.Widget.superKeyDown(Widget.java:1908)
	at org.eclipse.swt.widgets.Widget.keyDown(Widget.java:1085)
	at org.eclipse.swt.widgets.Control.keyDown(Control.java:2400)
	at org.eclipse.swt.widgets.Composite.keyDown(Composite.java:607)
	at org.eclipse.swt.widgets.Display.windowProc(Display.java:5640)
	at org.eclipse.swt.internal.cocoa.OS.objc_msgSendSuper(Native Method)
	at org.eclipse.swt.widgets.Widget.callSuper(Widget.java:221)
	at org.eclipse.swt.widgets.Widget.windowSendEvent(Widget.java:2105)
	at org.eclipse.swt.widgets.Shell.windowSendEvent(Shell.java:2329)
	at org.eclipse.swt.widgets.Display.windowProc(Display.java:5702)
	at org.eclipse.swt.internal.cocoa.OS.objc_msgSendSuper(Native Method)
	at org.eclipse.swt.widgets.Display.applicationSendEvent(Display.java:5139)
	at org.eclipse.swt.widgets.Display.applicationProc(Display.java:5288)
	at org.eclipse.swt.internal.cocoa.OS.objc_msgSend(Native Method)
	at org.eclipse.swt.internal.cocoa.NSApplication.sendEvent(NSApplication.java:128)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3666)
	at org.eclipse.jface.window.Window.runEventLoop(Window.java:832)
	at org.eclipse.jface.window.Window.open(Window.java:808)
	at org.eclipse.equinox.p2.ui.ProvisioningUI.openInstallWizard(ProvisioningUI.java:226)
	at org.eclipse.equinox.p2.ui.ProvisioningUI.openInstallWizard(ProvisioningUI.java:202)
	at org.eclipse.equinox.internal.p2.ui.sdk.InstallNewSoftwareHandler.doExecute(InstallNewSoftwareHandler.java:31)
	at org.eclipse.equinox.internal.p2.ui.sdk.PreloadingRepositoryHandler.doExecuteAndLoad(PreloadingRepositoryHandler.java:121)
	at org.eclipse.equinox.internal.p2.ui.sdk.PreloadingRepositoryHandler$1.run(PreloadingRepositoryHandler.java:68)
	at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70)
	at org.eclipse.equinox.internal.p2.ui.sdk.PreloadingRepositoryHandler.execute(PreloadingRepositoryHandler.java:66)
	at org.eclipse.ui.internal.handlers.HandlerProxy.execute(HandlerProxy.java:294)
	at org.eclipse.ui.internal.handlers.E4HandlerProxy.execute(E4HandlerProxy.java:90)
	at sun.reflect.GeneratedMethodAccessor42.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:497)
	at org.eclipse.e4.core.internal.di.MethodRequestor.execute(MethodRequestor.java:55)
	at org.eclipse.e4.core.internal.di.InjectorImpl.invokeUsingClass(InjectorImpl.java:247)
	at org.eclipse.e4.core.internal.di.InjectorImpl.invoke(InjectorImpl.java:229)
	at org.eclipse.e4.core.contexts.ContextInjectionFactory.invoke(ContextInjectionFactory.java:132)
	at org.eclipse.e4.core.commands.internal.HandlerServiceHandler.execute(HandlerServiceHandler.java:149)
	at org.eclipse.core.commands.Command.executeWithChecks(Command.java:499)
	at org.eclipse.core.commands.ParameterizedCommand.executeWithChecks(ParameterizedCommand.java:508)
	at org.eclipse.e4.core.commands.internal.HandlerServiceImpl.executeHandler(HandlerServiceImpl.java:210)
	at org.eclipse.ui.internal.handlers.LegacyHandlerService.executeCommand(LegacyHandlerService.java:343)
	at org.eclipse.ui.internal.quickaccess.CommandElement.execute(CommandElement.java:71)
	at org.eclipse.ui.internal.quickaccess.SearchField$2.handleElementSelected(SearchField.java:179)
	at org.eclipse.ui.internal.quickaccess.QuickAccessContents.handleSelection(QuickAccessContents.java:461)
	at org.eclipse.ui.internal.quickaccess.QuickAccessContents.access$0(QuickAccessContents.java:451)
	at org.eclipse.ui.internal.quickaccess.QuickAccessContents$1.keyPressed(QuickAccessContents.java:496)
	at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:167)
	at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
	at org.eclipse.swt.widgets.Display.sendEvent(Display.java:4199)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1467)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1490)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1475)
	at org.eclipse.swt.widgets.Widget.sendKeyEvent(Widget.java:1504)
	at org.eclipse.swt.widgets.Text.sendKeyEvent(Text.java:1634)
	at org.eclipse.swt.widgets.Widget.sendKeyEvent(Widget.java:1500)
	at org.eclipse.swt.widgets.Text.sendKeyEvent(Text.java:1600)
	at org.eclipse.swt.widgets.Control.doCommandBySelector(Control.java:1060)
	at org.eclipse.swt.widgets.Display.windowProc(Display.java:5730)
	at org.eclipse.swt.internal.cocoa.OS.objc_msgSendSuper(Native Method)
	at org.eclipse.swt.widgets.Widget.callSuper(Widget.java:221)
	at org.eclipse.swt.widgets.Widget.superKeyDown(Widget.java:1908)
	at org.eclipse.swt.widgets.Widget.keyDown(Widget.java:1085)
	at org.eclipse.swt.widgets.Control.keyDown(Control.java:2400)
	at org.eclipse.swt.widgets.Display.windowProc(Display.java:5640)
	at org.eclipse.swt.internal.cocoa.OS.objc_msgSendSuper(Native Method)
	at org.eclipse.swt.widgets.Widget.callSuper(Widget.java:221)
	at org.eclipse.swt.widgets.Widget.windowSendEvent(Widget.java:2105)
	at org.eclipse.swt.widgets.Shell.windowSendEvent(Shell.java:2329)
	at org.eclipse.swt.widgets.Display.windowProc(Display.java:5702)
	at org.eclipse.swt.internal.cocoa.OS.objc_msgSendSuper(Native Method)
	at org.eclipse.swt.widgets.Display.applicationSendEvent(Display.java:5139)
	at org.eclipse.swt.widgets.Display.applicationProc(Display.java:5288)
	at org.eclipse.swt.internal.cocoa.OS.objc_msgSend(Native Method)
	at org.eclipse.swt.internal.cocoa.NSApplication.sendEvent(NSApplication.java:128)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3666)
	at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$9.run(PartRenderingEngine.java:1151)
	at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
	at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1032)
	at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:148)
	at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:636)
	at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
	at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:579)
	at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:150)
	at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:135)
	at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:134)
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:104)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:380)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:235)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:497)
	at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:648)
	at org.eclipse.equinox.launcher.Main.basicRun(Main.java:603)
	at org.eclipse.equinox.launcher.Main.run(Main.java:1465)

Found 1 deadlock.
Comment 8 Eclipse Genie CLA 2019-05-21 05:36:25 EDT
This bug hasn't had any activity in quite some time. Maybe the problem got resolved, was a duplicate of something else, or became less pressing for some reason - or maybe it's still relevant but just hasn't been looked at yet.

If you have further information on the current state of the bug, please add it. The information can be, for example, that the problem still occurs, that you still want the feature, that more information is needed, or that the bug is (for whatever reason) no longer relevant.

--
The automated Eclipse Genie.