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

Reply via email to