Issue Type: Bug Bug
Affects Versions: 8.4
Assignee: Unassigned
Components: swing
Created: 16/Aug/13 7:32 AM
Description:

AbstractMapPane's getScreenToWorldTransform() method locks the following
two locks:

AbstractMapPane.paramsLock

and then

mapContent.monitor (mapContent.getViewport())

Mapcontent's addLayers() method locks:

mapContent.monitor

then fires an event change when AbstractMapPane.layerAdded() is called, which locks AbstractMapPane.paramsLock

With good timing, it causes deadlock.

See stack trace here:

Thread: MapLayerMsgHandler 6, Group=main, Prio=6, State=WAITING

sun.misc.Unsafe.park(Native Method)
java.util.concurrent.locks.LockSupport.park(LockSupport.java:186)
java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt(AbstractQueuedSynchronizer.java:834)
java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireQueued(AbstractQueuedSynchronizer.java:867)
java.util.concurrent.locks.AbstractQueuedSynchronizer.acquire(AbstractQueuedSynchronizer.java:1197)
java.util.concurrent.locks.ReentrantReadWriteLock$WriteLock.lock(ReentrantReadWriteLock.java:945)
org.geotools.swing.AbstractMapPane.layerAdded(AbstractMapPane.java:786) AbstractMapPane.paramsLock
com.siemens.pse.common.geo.modules.map.AVLSMapPane.layerAdded(AVLSMapPane.java:1105)
org.geotools.map.MapContent.fireLayerAdded(MapContent.java:467) MapContent.monitor.readLock()
org.geotools.map.MapContent$LayerList.addAllAbsent(MapContent.java:1042)
org.geotools.map.MapContent.addLayers(MapContent.java:388) MapContent.monitor.writeLock()
com.siemens.pse.common.geo.core.map.DefaultMap.addLayerWrapper(DefaultMap.java:153)
com.siemens.pse.common.geo.modules.map.MapDisplayHandler.handleAddLayers(MapDisplayHandler.java:191)
com.siemens.pse.common.geo.modules.map.MapDisplayHandler.handleLayerMessage(MapDisplayHandler.java:473)
com.siemens.pse.common.geo.modules.map.MapDisplayHandler.access$3(MapDisplayHandler.java:409)
com.siemens.pse.common.geo.modules.map.MapDisplayHandler$MapLayerMsgHandler.process(MapDisplayHandler.java:379)
com.siemens.pse.common.geo.modules.map.MapDisplayHandler$MapLayerMsgHandler.process(MapDisplayHandler.java:1)
com.siemens.pse.common.threading.SmartQueue.run(SmartQueue.java:287)

Thread: AWT-EventQueue-0, Group=main, Prio=6, State=WAITING

sun.misc.Unsafe.park(Native Method)
java.util.concurrent.locks.LockSupport.park(LockSupport.java:186)
java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt(AbstractQueuedSynchronizer.java:834)
java.util.concurrent.locks.AbstractQueuedSynchronizer.doAcquireShared(AbstractQueuedSynchronizer.java:964)
java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireShared(AbstractQueuedSynchronizer.java:1282)
java.util.concurrent.locks.ReentrantReadWriteLock$ReadLock.lock(ReentrantReadWriteLock.java:731)
org.geotools.map.MapContent.getViewport(MapContent.java:662) MapContent.monitor.readLock()
com.siemens.pse.common.geo.modules.map.AVLSMapPane.getScreenToWorldTransform(AVLSMapPane.java:1054) AbstractMapPane.paramsLock.readLock()
org.geotools.swing.event.DefaultMapMouseEventDispatcher.convertEvent(DefaultMapMouseEventDispatcher.java:222)
org.geotools.swing.event.DefaultMapMouseEventDispatcher.mouseMoved(DefaultMapMouseEventDispatcher.java:192)
java.awt.AWTEventMulticaster.mouseMoved(AWTEventMulticaster.java:330)

Environment: Windows 7, Java 7 latest
Project: GeoTools
Priority: Major Major
Reporter: Zsolt Sandor
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira
------------------------------------------------------------------------------
Get 100% visibility into Java/.NET code with AppDynamics Lite!
It's a free troubleshooting tool designed for production.
Get down to code-level detail for bottlenecks, with <2% overhead. 
Download for free and get started troubleshooting in minutes. 
http://pubads.g.doubleclick.net/gampad/clk?id=48897031&iu=/4140/ostg.clktrk
_______________________________________________
GeoTools-Devel mailing list
GeoTools-Devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/geotools-devel

Reply via email to