2013/1/13 Jody Garnett <[email protected]>: > My prime suspects are: > - Blackboard (this is where the deadlock is occurring) > - EditFeature (this is the class that was introduced to make form work > easier)
I the past we had several issues with blackboardImpl and I created a pull request in the past that fixed issues if different threads accessing the blackboard: * https://github.com/uDig/udig-platform/pull/132 (Fix for threading Issues for UDIG-1930 and UDIG-1931) * https://github.com/uDig/udig-platform/pull/135 (used ReentrantLock instead of synchronized blocks) Looking at the stacktrace that has been posted last year it seems to be the ReentrantLock comming from pull request 135. I'll have a look at it later this week. Do we got an JIRA report already? Cheers, Frank 2012/11/22 Jody Garnett <[email protected]>: > I have run into the following deadlock when testing walkthrough 2 (page > HoleCutter.html ): > > Thread [Worker-0] (Suspended) > Unsafe.park(boolean, long) line: not available [native method] > LockSupport.park(Object) line: 156 > ReentrantLock$NonfairSync(AbstractQueuedSynchronizer).parkAndCheckInterrupt() > line: 811 > ReentrantLock$NonfairSync(AbstractQueuedSynchronizer).acquireQueued(AbstractQueuedSynchronizer$Node, > int) line: 842 > ReentrantLock$NonfairSync(AbstractQueuedSynchronizer).acquire(int) line: > 1178 > ReentrantLock$NonfairSync.lock() line: 186 > ReentrantLock.lock() line: 262 > BlackboardImpl.get(String) line: 212 > EditToolHandler.getLock() line: 358 > EditToolHandler.getCurrentState() line: 347 > SelectFeatureBehaviour.isValid(EditToolHandler, MapMouseEvent, EventType) > line: 141 > EventBehaviourCommand.execute(IProgressMonitor) line: 54 > CommandManager$Executor.execute(Command, IProgressMonitor) line: 395 > CommandManager$Executor.run(IProgressMonitor, CommandManager$Request) line: > 326 > CommandManager$Executor.run(IProgressMonitor) line: 312 > Worker.run() line: 54 > > Thread [pool-1-thread-1] (Suspended) > Unsafe.park(boolean, long) line: not available [native method] > LockSupport.park(Object) line: 156 > AbstractQueuedSynchronizer$ConditionObject.await() line: 1987 > LinkedBlockingQueue<E>.take() line: 399 > ThreadPoolExecutor.getTask() line: 947 > ThreadPoolExecutor$Worker.run() line: 907 > Thread.run() line: 680 > > > -- > Jody Garnett > > > _______________________________________________ > User-friendly Desktop Internet GIS (uDig) > http://udig.refractions.net > http://lists.refractions.net/mailman/listinfo/udig-devel > _______________________________________________ User-friendly Desktop Internet GIS (uDig) http://udig.refractions.net http://lists.refractions.net/mailman/listinfo/udig-devel
