Modify

Opened 9 years ago

Closed 9 years ago

Last modified 8 years ago

#11689 closed defect (fixed)

JOSM hangs when removing last data layer when validation layer is present

Reported by: aceman Owned by: aceman
Priority: major Milestone: 15.08
Component: Core Version: latest
Keywords: Cc: michael2402

Description

When I finish my editing and upload the changeset, I try to remove the data layer (clicking the trashcan icon in layers pane). Then JOSM frequently hangs there.

There is nothing relevant in the console:

INFO: PUT https://api.openstreetmap.org/api/0.6/changeset/32614331/close...
INFO: OK


When I kill the java process then the console output continues:

[INFO] CompositeCacheManager - Shutdown hook activated. Shutdown was not called. Shutting down JCS.
[INFO] ElementEventQueue - Element event queue destroyed: org.apache.commons.jcs.engine.control.event.ElementEventQueue@cedeef
[INFO] CompositeCache - In DISPOSE, [mapillary] fromRemote [false]
[INFO] CompositeCache - In DISPOSE, [mapillary] auxiliary [mapillary]
[INFO] CompositeCache - In DISPOSE, [mapillary] put 0 into auxiliary mapillary
[INFO] AbstractDiskCache - No longer waiting for event queue to finish: Cache Event Queue
Working = true
Alive = false
Empty = true
Size = 0
[INFO] AbstractDiskCache - In dispose, destroying event queue.
[INFO] CacheEventQueue - Destroy was called after queue was destroyed. Doing nothing. Stats = Cache Event Queue
Working = true
Alive = false
Empty = true
Size = 0
[INFO] IndexedDiskCache - Region [mapillary] Saving keys to: mapillary, key count: 20
[INFO] IndexedDiskCache - Region [mapillary] Finished saving keys.
[INFO] IndexedDiskCache - Region [mapillary] Shutdown complete.
[INFO] CompositeCache - In DISPOSE, [mapillary] disposing of memory cache.
[INFO] AbstractMemoryCache - Memory Cache dispose called.
[INFO] CompositeCache - In DISPOSE, [TMS] fromRemote [false]
[INFO] CompositeCache - In DISPOSE, [TMS] auxiliary [TMS]
[INFO] CompositeCache - In DISPOSE, [TMS] put 199 into auxiliary TMS
[INFO] AbstractDiskCache - No longer waiting for event queue to finish: Cache Event Queue
Working = true
Alive = false
Empty = true
Size = 0
[INFO] AbstractDiskCache - In dispose, destroying event queue.
[INFO] CacheEventQueue - Destroy was called after queue was destroyed. Doing nothing. Stats = Cache Event Queue
Working = true
Alive = false
Empty = true
Size = 0
[INFO] IndexedDiskCache - Region [TMS] Beginning Optimization #1
[INFO] IndexedDiskCache - Region [TMS] Defragmentation took 929ms.. File Size (before=126697216) (after=126697216) (truncating to 91313750)
[INFO] IndexedDisk - Truncating file homenew/inet/.josm/cache/tiles/TMS.data to 91313750
[INFO] IndexedDiskCache - Region [TMS] Finished #1 Optimization took 972ms.
[INFO] IndexedDiskCache - Region [TMS] Saving keys to: TMS, key count: 7591
[INFO] IndexedDiskCache - Region [TMS] Finished saving keys.
[INFO] IndexedDiskCache - Region [TMS] Shutdown complete.
[INFO] CompositeCache - In DISPOSE, [TMS] disposing of memory cache.
[INFO] AbstractMemoryCache - Memory Cache dispose called.

So it looks like JOSM is not dead (it shuts down when killed) just hangs/loops in the UI somewhere.

Revision: 8595
Repository Root: http://josm.openstreetmap.de/svn
Relative URL: /trunk
Last Changed Author: Don-vip
Last Changed Date: 2015-07-10 22:36:42 +0200 (Fri, 10 Jul 2015)
Build-Date: 2015-07-11 01:32:07
URL: http://josm.openstreetmap.de/svn/trunk
Repository UUID: 0c6e7542-c601-0410-84e7-c038aed88b3b
Last Changed Rev: 8595

Identification: JOSM/1.5 (8595 sk) Linux Slackware 14.0
Memory Usage: 374 MB / 910 MB (280 MB allocated, but free)
Java version: 1.8.0_45, Oracle Corporation, Java HotSpot(TM) Server VM

Plugins:

  • DirectDownload (31241)
  • FixAddresses (31241)
  • HouseNumberTaggingTool (31241)
  • Mapillary (31331)
  • OpeningHoursEditor (31241)
  • buildings_tools (31361)
  • commons-imaging (31241)
  • freemapkapor (unknown)
  • graphview (31241)
  • imagery_offset_db (31241)
  • kendzi3d (1.0.184)
  • kendzi3d-jogl (37)
  • log4j (31231)
  • plastic_laf (31126)
  • reverter (31241)
  • routing (31241)
  • turnrestrictions (31241)
  • undelete (31241)
  • utilsplugin2 (31241)
  • wikipedia (31241)

Last errors/warnings:

  • W: Could not get presets icon styles/standard/misc/landmark/water_tower.svg
  • E: Zlyhala lokalizácia obrázku 'presets/recycling.png'
  • W: Could not get presets icon presets/recycling.png
  • E: Zlyhala lokalizácia obrázku 'presets/marina.png'
  • W: Could not get presets icon presets/marina.png

Attachments (4)

Change History (30)

comment:1 by wiktorn, 9 years ago

Owner: changed from team to aceman
Status: newneedinfo

When the hang occurs - can you try to send the process signal 3 (with kill -3 <pid>) to obtain the "Thread dump"

Or alternatively - use Visual VM:
https://visualvm.java.net/

Open VisualVM when the hang occurs, choose JOSM process, move to Threads tab, and click the button "Thread dump".

Please, post the result here, this I hope, will give a clue, what's going on.

comment:2 by hjart, 9 years ago

I'm experiencing this too. Thread dump follows:

Full thread dump OpenJDK 64-Bit Server VM (25.45-b02 mixed mode):

"Keep-Alive-Timer" #2323 daemon prio=8 os_prio=0 tid=0x00007fb8c4005800 nid=0x3602 waiting on condition [0x00007fb82b75a000]
   java.lang.Thread.State: TIMED_WAITING (sleeping)
        at java.lang.Thread.sleep(Native Method)
        at sun.net.www.http.KeepAliveCache.run(KeepAliveCache.java:172)
        at java.lang.Thread.run(Thread.java:745)

"pool-4-thread-8" #162 prio=5 os_prio=0 tid=0x00007fb8bc3b3800 nid=0x2550 waiting on condition [0x00007fb889129000]
   java.lang.Thread.State: WAITING (parking)
        at sun.misc.Unsafe.park(Native Method)
        - parking to wait for  <0x00000000a4708048> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
        at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
        at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)
        at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)
        at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1067)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
        at java.lang.Thread.run(Thread.java:745)

"pool-4-thread-7" #161 prio=5 os_prio=0 tid=0x00007fb8bc3b2000 nid=0x254f waiting on condition [0x00007fb889028000]
   java.lang.Thread.State: WAITING (parking)
        at sun.misc.Unsafe.park(Native Method)
        - parking to wait for  <0x00000000a4708048> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
        at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
        at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)
        at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)
        at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1067)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
        at java.lang.Thread.run(Thread.java:745)

"pool-4-thread-6" #160 prio=5 os_prio=0 tid=0x00007fb8bc3b1000 nid=0x254e waiting on condition [0x00007fb88952d000]
   java.lang.Thread.State: WAITING (parking)
        at sun.misc.Unsafe.park(Native Method)
        - parking to wait for  <0x00000000a4708048> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
        at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
        at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)
        at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)
        at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1067)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
        at java.lang.Thread.run(Thread.java:745)

"pool-4-thread-5" #159 prio=5 os_prio=0 tid=0x00007fb8bc3af800 nid=0x254d waiting on condition [0x00007fb88942c000]
   java.lang.Thread.State: WAITING (parking)
        at sun.misc.Unsafe.park(Native Method)
        - parking to wait for  <0x00000000a4708048> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
        at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
        at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)
        at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)
        at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1067)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
        at java.lang.Thread.run(Thread.java:745)

"pool-4-thread-4" #158 prio=5 os_prio=0 tid=0x00007fb8bc3ae000 nid=0x254c waiting on condition [0x00007fb88932b000]
   java.lang.Thread.State: WAITING (parking)
        at sun.misc.Unsafe.park(Native Method)
        - parking to wait for  <0x00000000a4708048> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
        at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
        at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)
        at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)
        at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1067)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
        at java.lang.Thread.run(Thread.java:745)

"pool-4-thread-3" #157 prio=5 os_prio=0 tid=0x00007fb8bc3ad000 nid=0x254b waiting on condition [0x00007fb88922a000]
   java.lang.Thread.State: WAITING (parking)
        at sun.misc.Unsafe.park(Native Method)
        - parking to wait for  <0x00000000a4708048> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
        at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
        at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)
        at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)
        at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1067)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
        at java.lang.Thread.run(Thread.java:745)

"pool-4-thread-2" #156 prio=5 os_prio=0 tid=0x00007fb8bc3ac800 nid=0x254a waiting on condition [0x00007fb88bdfe000]
   java.lang.Thread.State: WAITING (parking)
        at sun.misc.Unsafe.park(Native Method)
        - parking to wait for  <0x00000000a4708048> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
        at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
        at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)
        at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)
        at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1067)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
        at java.lang.Thread.run(Thread.java:745)

"pool-4-thread-1" #155 prio=5 os_prio=0 tid=0x00007fb8bc3ab800 nid=0x2549 waiting on condition [0x00007fb888f27000]
   java.lang.Thread.State: WAITING (parking)
        at sun.misc.Unsafe.park(Native Method)
        - parking to wait for  <0x00000000a4708048> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
        at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
        at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)
        at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)
        at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1067)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
        at java.lang.Thread.run(Thread.java:745)

"Thread-9" #153 prio=6 os_prio=0 tid=0x00007fb8bc366800 nid=0x2547 waiting on condition [0x00007fb88962e000]
   java.lang.Thread.State: TIMED_WAITING (sleeping)
        at java.lang.Thread.sleep(Native Method)
        at geochat.ChatServerConnection$LogRequest.run(ChatServerConnection.java:320)
        at java.lang.Thread.run(Thread.java:745)

"Map Status Collector" #152 daemon prio=6 os_prio=0 tid=0x00007fb8bc2f4800 nid=0x2546 in Object.wait() [0x00007fb88972f000]
   java.lang.Thread.State: WAITING (on object monitor)
        at java.lang.Object.wait(Native Method)
        at java.lang.Object.wait(Object.java:502)
        at java.awt.EventQueue.invokeAndWait(EventQueue.java:1313)
        - locked <0x00000000e1467440> (a java.awt.EventQueue$1AWTInvocationLock)
        at java.awt.EventQueue.invokeAndWait(EventQueue.java:1294)
        at org.openstreetmap.josm.gui.MapStatus$Collector.run(MapStatus.java:384)
        at java.lang.Thread.run(Thread.java:745)

"Timer-2" #151 prio=6 os_prio=0 tid=0x00007fb8bc1b2800 nid=0x2545 in Object.wait() [0x00007fb889830000]
   java.lang.Thread.State: WAITING (on object monitor)
        at java.lang.Object.wait(Native Method)
        at java.lang.Object.wait(Object.java:502)
        at java.util.TimerThread.mainLoop(Timer.java:526)
        - locked <0x00000000a70cd0d0> (a java.util.TaskQueue)
        at java.util.TimerThread.run(Timer.java:505)

"TMS downloader" #70 prio=5 os_prio=0 tid=0x00007fb8bc2c6000 nid=0x24f2 waiting on condition [0x00007fb889b31000]
   java.lang.Thread.State: WAITING (parking)
        at sun.misc.Unsafe.park(Native Method)
        - parking to wait for  <0x00000000a712e9b8> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
        at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
        at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)
        at java.util.concurrent.LinkedBlockingDeque.takeFirst(LinkedBlockingDeque.java:492)
        at org.openstreetmap.josm.data.cache.HostLimitQueue.take(HostLimitQueue.java:85)
        at org.openstreetmap.josm.data.cache.HostLimitQueue.take(HostLimitQueue.java:30)
        at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1067)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
        at java.lang.Thread.run(Thread.java:745)

"TMS downloader" #69 prio=5 os_prio=0 tid=0x00007fb8bc2c4000 nid=0x24f1 waiting on condition [0x00007fb889c32000]
   java.lang.Thread.State: WAITING (parking)
        at sun.misc.Unsafe.park(Native Method)
        - parking to wait for  <0x00000000a712e9b8> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
        at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
        at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)
        at java.util.concurrent.LinkedBlockingDeque.takeFirst(LinkedBlockingDeque.java:492)
        at org.openstreetmap.josm.data.cache.HostLimitQueue.take(HostLimitQueue.java:85)
        at org.openstreetmap.josm.data.cache.HostLimitQueue.take(HostLimitQueue.java:30)
        at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1067)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
        at java.lang.Thread.run(Thread.java:745)

"TMS downloader" #68 prio=5 os_prio=0 tid=0x00007fb8bc2c2800 nid=0x24f0 waiting on condition [0x00007fb889d33000]
   java.lang.Thread.State: WAITING (parking)
        at sun.misc.Unsafe.park(Native Method)
        - parking to wait for  <0x00000000a712e9b8> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
        at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
        at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)
        at java.util.concurrent.LinkedBlockingDeque.takeFirst(LinkedBlockingDeque.java:492)
        at org.openstreetmap.josm.data.cache.HostLimitQueue.take(HostLimitQueue.java:85)
        at org.openstreetmap.josm.data.cache.HostLimitQueue.take(HostLimitQueue.java:30)
        at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1067)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
        at java.lang.Thread.run(Thread.java:745)

"TMS downloader" #67 prio=5 os_prio=0 tid=0x00007fb8bc2c0800 nid=0x24ef waiting on condition [0x00007fb889e34000]
   java.lang.Thread.State: WAITING (parking)
        at sun.misc.Unsafe.park(Native Method)
        - parking to wait for  <0x00000000a712e9b8> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
        at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
        at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)
        at java.util.concurrent.LinkedBlockingDeque.takeFirst(LinkedBlockingDeque.java:492)
        at org.openstreetmap.josm.data.cache.HostLimitQueue.take(HostLimitQueue.java:85)
        at org.openstreetmap.josm.data.cache.HostLimitQueue.take(HostLimitQueue.java:30)
        at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1067)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
        at java.lang.Thread.run(Thread.java:745)

"TMS downloader" #66 prio=5 os_prio=0 tid=0x00007fb8bc2bf000 nid=0x24ee waiting on condition [0x00007fb889f35000]
   java.lang.Thread.State: WAITING (parking)
        at sun.misc.Unsafe.park(Native Method)
        - parking to wait for  <0x00000000a712e9b8> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
        at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
        at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)
        at java.util.concurrent.LinkedBlockingDeque.takeFirst(LinkedBlockingDeque.java:492)
        at org.openstreetmap.josm.data.cache.HostLimitQueue.take(HostLimitQueue.java:85)
        at org.openstreetmap.josm.data.cache.HostLimitQueue.take(HostLimitQueue.java:30)
        at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1067)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
        at java.lang.Thread.run(Thread.java:745)

"TMS downloader" #65 prio=5 os_prio=0 tid=0x00007fb8bc2bd000 nid=0x24ed waiting on condition [0x00007fb88a036000]
   java.lang.Thread.State: WAITING (parking)
        at sun.misc.Unsafe.park(Native Method)
        - parking to wait for  <0x00000000a712e9b8> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
        at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
        at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)
        at java.util.concurrent.LinkedBlockingDeque.takeFirst(LinkedBlockingDeque.java:492)
        at org.openstreetmap.josm.data.cache.HostLimitQueue.take(HostLimitQueue.java:85)
        at org.openstreetmap.josm.data.cache.HostLimitQueue.take(HostLimitQueue.java:30)
        at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1067)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
        at java.lang.Thread.run(Thread.java:745)

"TMS downloader" #64 prio=5 os_prio=0 tid=0x00007fb8bc2bb800 nid=0x24ec waiting on condition [0x00007fb88a137000]
   java.lang.Thread.State: WAITING (parking)
        at sun.misc.Unsafe.park(Native Method)
        - parking to wait for  <0x00000000a712e9b8> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
        at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
        at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)
        at java.util.concurrent.LinkedBlockingDeque.takeFirst(LinkedBlockingDeque.java:492)
        at org.openstreetmap.josm.data.cache.HostLimitQueue.take(HostLimitQueue.java:85)
        at org.openstreetmap.josm.data.cache.HostLimitQueue.take(HostLimitQueue.java:30)
        at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1067)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
        at java.lang.Thread.run(Thread.java:745)

"TMS downloader" #63 prio=5 os_prio=0 tid=0x00007fb8bc2b9800 nid=0x24eb waiting on condition [0x00007fb88a238000]
   java.lang.Thread.State: WAITING (parking)
        at sun.misc.Unsafe.park(Native Method)
        - parking to wait for  <0x00000000a712e9b8> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
        at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
        at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)
        at java.util.concurrent.LinkedBlockingDeque.takeFirst(LinkedBlockingDeque.java:492)
        at org.openstreetmap.josm.data.cache.HostLimitQueue.take(HostLimitQueue.java:85)
        at org.openstreetmap.josm.data.cache.HostLimitQueue.take(HostLimitQueue.java:30)
        at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1067)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
        at java.lang.Thread.run(Thread.java:745)

"TMS downloader" #62 prio=5 os_prio=0 tid=0x00007fb8bc2b7800 nid=0x24ea waiting on condition [0x00007fb88a339000]
   java.lang.Thread.State: WAITING (parking)
        at sun.misc.Unsafe.park(Native Method)
        - parking to wait for  <0x00000000a712e9b8> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
        at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
        at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)
        at java.util.concurrent.LinkedBlockingDeque.takeFirst(LinkedBlockingDeque.java:492)
        at org.openstreetmap.josm.data.cache.HostLimitQueue.take(HostLimitQueue.java:85)
        at org.openstreetmap.josm.data.cache.HostLimitQueue.take(HostLimitQueue.java:30)
        at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1067)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
        at java.lang.Thread.run(Thread.java:745)

"TMS downloader" #61 prio=5 os_prio=0 tid=0x00007fb8bc2b5800 nid=0x24e9 waiting on condition [0x00007fb88a43a000]
   java.lang.Thread.State: WAITING (parking)
        at sun.misc.Unsafe.park(Native Method)
        - parking to wait for  <0x00000000a712e9b8> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
        at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
        at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)
        at java.util.concurrent.LinkedBlockingDeque.takeFirst(LinkedBlockingDeque.java:492)
        at org.openstreetmap.josm.data.cache.HostLimitQueue.take(HostLimitQueue.java:85)
        at org.openstreetmap.josm.data.cache.HostLimitQueue.take(HostLimitQueue.java:30)
        at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1067)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
        at java.lang.Thread.run(Thread.java:745)

"TMS downloader" #60 prio=5 os_prio=0 tid=0x00007fb8bc2b3800 nid=0x24e8 waiting on condition [0x00007fb88a53b000]
   java.lang.Thread.State: WAITING (parking)
        at sun.misc.Unsafe.park(Native Method)
        - parking to wait for  <0x00000000a712e9b8> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
        at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
        at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)
        at java.util.concurrent.LinkedBlockingDeque.takeFirst(LinkedBlockingDeque.java:492)
        at org.openstreetmap.josm.data.cache.HostLimitQueue.take(HostLimitQueue.java:85)
        at org.openstreetmap.josm.data.cache.HostLimitQueue.take(HostLimitQueue.java:30)
        at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1067)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
        at java.lang.Thread.run(Thread.java:745)

"TMS downloader" #59 prio=5 os_prio=0 tid=0x00007fb8bc2b1800 nid=0x24e7 waiting on condition [0x00007fb88a63c000]
   java.lang.Thread.State: WAITING (parking)
        at sun.misc.Unsafe.park(Native Method)
        - parking to wait for  <0x00000000a712e9b8> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
        at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
        at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)
        at java.util.concurrent.LinkedBlockingDeque.takeFirst(LinkedBlockingDeque.java:492)
        at org.openstreetmap.josm.data.cache.HostLimitQueue.take(HostLimitQueue.java:85)
        at org.openstreetmap.josm.data.cache.HostLimitQueue.take(HostLimitQueue.java:30)
        at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1067)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
        at java.lang.Thread.run(Thread.java:745)

"TMS downloader" #58 prio=5 os_prio=0 tid=0x00007fb8bc2b0000 nid=0x24e6 waiting on condition [0x00007fb88a73d000]
   java.lang.Thread.State: WAITING (parking)
        at sun.misc.Unsafe.park(Native Method)
        - parking to wait for  <0x00000000a712e9b8> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
        at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
        at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)
        at java.util.concurrent.LinkedBlockingDeque.takeFirst(LinkedBlockingDeque.java:492)
        at org.openstreetmap.josm.data.cache.HostLimitQueue.take(HostLimitQueue.java:85)
        at org.openstreetmap.josm.data.cache.HostLimitQueue.take(HostLimitQueue.java:30)
        at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1067)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
        at java.lang.Thread.run(Thread.java:745)

"TMS downloader" #57 prio=5 os_prio=0 tid=0x00007fb8bc2ae000 nid=0x24e5 waiting on condition [0x00007fb88a83e000]
   java.lang.Thread.State: WAITING (parking)
        at sun.misc.Unsafe.park(Native Method)
        - parking to wait for  <0x00000000a712e9b8> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
        at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
        at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)
        at java.util.concurrent.LinkedBlockingDeque.takeFirst(LinkedBlockingDeque.java:492)
        at org.openstreetmap.josm.data.cache.HostLimitQueue.take(HostLimitQueue.java:85)
        at org.openstreetmap.josm.data.cache.HostLimitQueue.take(HostLimitQueue.java:30)
        at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1067)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
        at java.lang.Thread.run(Thread.java:745)

"TMS downloader" #56 prio=5 os_prio=0 tid=0x00007fb8bc2ac000 nid=0x24e4 waiting on condition [0x00007fb88a93f000]
   java.lang.Thread.State: WAITING (parking)
        at sun.misc.Unsafe.park(Native Method)
        - parking to wait for  <0x00000000a712e9b8> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
        at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
        at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)
        at java.util.concurrent.LinkedBlockingDeque.takeFirst(LinkedBlockingDeque.java:492)
        at org.openstreetmap.josm.data.cache.HostLimitQueue.take(HostLimitQueue.java:85)
        at org.openstreetmap.josm.data.cache.HostLimitQueue.take(HostLimitQueue.java:30)
        at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1067)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
        at java.lang.Thread.run(Thread.java:745)

"TMS downloader" #55 prio=5 os_prio=0 tid=0x00007fb8bc2aa800 nid=0x24e3 waiting on condition [0x00007fb88aa40000]
   java.lang.Thread.State: WAITING (parking)
        at sun.misc.Unsafe.park(Native Method)
        - parking to wait for  <0x00000000a712e9b8> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
        at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
        at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)
        at java.util.concurrent.LinkedBlockingDeque.takeFirst(LinkedBlockingDeque.java:492)
        at org.openstreetmap.josm.data.cache.HostLimitQueue.take(HostLimitQueue.java:85)
        at org.openstreetmap.josm.data.cache.HostLimitQueue.take(HostLimitQueue.java:30)
        at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1067)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
        at java.lang.Thread.run(Thread.java:745)

"TMS downloader" #54 prio=5 os_prio=0 tid=0x00007fb8bc2a9000 nid=0x24e2 waiting on condition [0x00007fb88ab41000]
   java.lang.Thread.State: WAITING (parking)
        at sun.misc.Unsafe.park(Native Method)
        - parking to wait for  <0x00000000a712e9b8> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
        at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
        at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)
        at java.util.concurrent.LinkedBlockingDeque.takeFirst(LinkedBlockingDeque.java:492)
        at org.openstreetmap.josm.data.cache.HostLimitQueue.take(HostLimitQueue.java:85)
        at org.openstreetmap.josm.data.cache.HostLimitQueue.take(HostLimitQueue.java:30)
        at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1067)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
        at java.lang.Thread.run(Thread.java:745)

"TMS downloader" #53 prio=5 os_prio=0 tid=0x00007fb8bc2a7000 nid=0x24e1 waiting on condition [0x00007fb88ac42000]
   java.lang.Thread.State: WAITING (parking)
        at sun.misc.Unsafe.park(Native Method)
        - parking to wait for  <0x00000000a712e9b8> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
        at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
        at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)
        at java.util.concurrent.LinkedBlockingDeque.takeFirst(LinkedBlockingDeque.java:492)
        at org.openstreetmap.josm.data.cache.HostLimitQueue.take(HostLimitQueue.java:85)
        at org.openstreetmap.josm.data.cache.HostLimitQueue.take(HostLimitQueue.java:30)
        at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1067)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
        at java.lang.Thread.run(Thread.java:745)

"TMS downloader" #52 prio=5 os_prio=0 tid=0x00007fb8bc2a5800 nid=0x24e0 waiting on condition [0x00007fb88ad43000]
   java.lang.Thread.State: WAITING (parking)
        at sun.misc.Unsafe.park(Native Method)
        - parking to wait for  <0x00000000a712e9b8> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
        at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
        at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)
        at java.util.concurrent.LinkedBlockingDeque.takeFirst(LinkedBlockingDeque.java:492)
        at org.openstreetmap.josm.data.cache.HostLimitQueue.take(HostLimitQueue.java:85)
        at org.openstreetmap.josm.data.cache.HostLimitQueue.take(HostLimitQueue.java:30)
        at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1067)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
        at java.lang.Thread.run(Thread.java:745)

"TMS downloader" #51 prio=5 os_prio=0 tid=0x00007fb8bc2a3800 nid=0x24df waiting on condition [0x00007fb88ae44000]
   java.lang.Thread.State: WAITING (parking)
        at sun.misc.Unsafe.park(Native Method)
        - parking to wait for  <0x00000000a712e9b8> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
        at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
        at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)
        at java.util.concurrent.LinkedBlockingDeque.takeFirst(LinkedBlockingDeque.java:492)
        at org.openstreetmap.josm.data.cache.HostLimitQueue.take(HostLimitQueue.java:85)
        at org.openstreetmap.josm.data.cache.HostLimitQueue.take(HostLimitQueue.java:30)
        at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1067)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
        at java.lang.Thread.run(Thread.java:745)

"TMS downloader" #50 prio=5 os_prio=0 tid=0x00007fb8bc2a2000 nid=0x24de waiting on condition [0x00007fb88af45000]
   java.lang.Thread.State: WAITING (parking)
        at sun.misc.Unsafe.park(Native Method)
        - parking to wait for  <0x00000000a712e9b8> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
        at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
        at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)
        at java.util.concurrent.LinkedBlockingDeque.takeFirst(LinkedBlockingDeque.java:492)
        at org.openstreetmap.josm.data.cache.HostLimitQueue.take(HostLimitQueue.java:85)
        at org.openstreetmap.josm.data.cache.HostLimitQueue.take(HostLimitQueue.java:30)
        at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1067)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
        at java.lang.Thread.run(Thread.java:745)

"TMS downloader" #49 prio=5 os_prio=0 tid=0x00007fb8bc2a0800 nid=0x24dd waiting on condition [0x00007fb88b046000]
   java.lang.Thread.State: WAITING (parking)
        at sun.misc.Unsafe.park(Native Method)
        - parking to wait for  <0x00000000a712e9b8> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
        at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
        at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)
        at java.util.concurrent.LinkedBlockingDeque.takeFirst(LinkedBlockingDeque.java:492)
        at org.openstreetmap.josm.data.cache.HostLimitQueue.take(HostLimitQueue.java:85)
        at org.openstreetmap.josm.data.cache.HostLimitQueue.take(HostLimitQueue.java:30)
        at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1067)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
        at java.lang.Thread.run(Thread.java:745)

"TMS downloader" #48 prio=5 os_prio=0 tid=0x00007fb8bc29d800 nid=0x24dc waiting on condition [0x00007fb88b147000]
   java.lang.Thread.State: WAITING (parking)
        at sun.misc.Unsafe.park(Native Method)
        - parking to wait for  <0x00000000a712e9b8> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
        at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
        at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)
        at java.util.concurrent.LinkedBlockingDeque.takeFirst(LinkedBlockingDeque.java:492)
        at org.openstreetmap.josm.data.cache.HostLimitQueue.take(HostLimitQueue.java:85)
        at org.openstreetmap.josm.data.cache.HostLimitQueue.take(HostLimitQueue.java:30)
        at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1067)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
        at java.lang.Thread.run(Thread.java:745)

"TMS downloader" #47 prio=5 os_prio=0 tid=0x00007fb8bc29c000 nid=0x24db waiting on condition [0x00007fb88b248000]
   java.lang.Thread.State: WAITING (parking)
        at sun.misc.Unsafe.park(Native Method)
        - parking to wait for  <0x00000000a712e9b8> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
        at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
        at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)
        at java.util.concurrent.LinkedBlockingDeque.takeFirst(LinkedBlockingDeque.java:492)
        at org.openstreetmap.josm.data.cache.HostLimitQueue.take(HostLimitQueue.java:85)
        at org.openstreetmap.josm.data.cache.HostLimitQueue.take(HostLimitQueue.java:30)
        at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1067)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
        at java.lang.Thread.run(Thread.java:745)

"TMS downloader" #46 prio=5 os_prio=0 tid=0x00007fb8bc298000 nid=0x24da waiting on condition [0x00007fb88b349000]
   java.lang.Thread.State: WAITING (parking)
        at sun.misc.Unsafe.park(Native Method)
        - parking to wait for  <0x00000000a712e9b8> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
        at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
        at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)
        at java.util.concurrent.LinkedBlockingDeque.takeFirst(LinkedBlockingDeque.java:492)
        at org.openstreetmap.josm.data.cache.HostLimitQueue.take(HostLimitQueue.java:85)
        at org.openstreetmap.josm.data.cache.HostLimitQueue.take(HostLimitQueue.java:30)
        at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1067)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
        at java.lang.Thread.run(Thread.java:745)

"Timer-1" #45 daemon prio=6 os_prio=0 tid=0x00007fb8bc170000 nid=0x24d9 in Object.wait() [0x00007fb88b44a000]
   java.lang.Thread.State: WAITING (on object monitor)
        at java.lang.Object.wait(Native Method)
        - waiting on <0x00000000a791cf20> (a java.util.TaskQueue)
        at java.lang.Object.wait(Object.java:502)
        at java.util.TimerThread.mainLoop(Timer.java:526)
        - locked <0x00000000a791cf20> (a java.util.TaskQueue)
        at java.util.TimerThread.run(Timer.java:505)

"OSMJobThread 1" #43 daemon prio=6 os_prio=0 tid=0x00007fb8bc1a2800 nid=0x24d7 waiting on condition [0x00007fb8d267d000]
   java.lang.Thread.State: WAITING (parking)
        at sun.misc.Unsafe.park(Native Method)
        - parking to wait for  <0x00000000a7329c20> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
        at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
        at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)
        at java.util.concurrent.LinkedBlockingDeque.takeFirst(LinkedBlockingDeque.java:492)
        at java.util.concurrent.LinkedBlockingDeque.take(LinkedBlockingDeque.java:680)
        at org.openstreetmap.gui.jmapviewer.JobDispatcher$JobThread.executeJobs(JobDispatcher.java:153)
        at org.openstreetmap.gui.jmapviewer.JobDispatcher$JobThread.run(JobDispatcher.java:134)

"pool-1-thread-1" #42 prio=5 os_prio=0 tid=0x00007fb8bc47a800 nid=0x24d6 waiting on condition [0x00007fb8d13fe000]
   java.lang.Thread.State: WAITING (parking)
        at sun.misc.Unsafe.park(Native Method)
        - parking to wait for  <0x00000000a366f230> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
        at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
        at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)
        at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)
        at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1067)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
        at java.lang.Thread.run(Thread.java:745)

"DestroyJavaVM" #40 prio=5 os_prio=0 tid=0x00007fb940007800 nid=0x249f waiting on condition [0x0000000000000000]
   java.lang.Thread.State: RUNNABLE

"pool-6-thread-1" #39 prio=5 os_prio=0 tid=0x00007fb940cdc000 nid=0x24d3 waiting on condition [0x00007fb8d0168000]
   java.lang.Thread.State: TIMED_WAITING (parking)
        at sun.misc.Unsafe.park(Native Method)
        - parking to wait for  <0x00000000a60d0e78> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
        at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:215)
        at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:2078)
        at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1093)
        at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:809)
        at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1067)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
        at java.lang.Thread.run(Thread.java:745)

"Timer-0" #37 daemon prio=6 os_prio=0 tid=0x00007fb8bc13b000 nid=0x24d1 in Object.wait() [0x00007fb8d0269000]
   java.lang.Thread.State: TIMED_WAITING (on object monitor)
        at java.lang.Object.wait(Native Method)
        at java.util.TimerThread.mainLoop(Timer.java:552)
        - locked <0x00000000a60fcc68> (a java.util.TaskQueue)
        at java.util.TimerThread.run(Timer.java:505)

"RemoteControl HTTP Server" #36 daemon prio=5 os_prio=0 tid=0x00007fb940cb3000 nid=0x24d0 runnable [0x00007fb8d036a000]
   java.lang.Thread.State: RUNNABLE
        at java.net.PlainSocketImpl.socketAccept(Native Method)
        at java.net.AbstractPlainSocketImpl.accept(AbstractPlainSocketImpl.java:404)
        at java.net.ServerSocket.implAccept(ServerSocket.java:545)
        at java.net.ServerSocket.accept(ServerSocket.java:513)
        at org.openstreetmap.josm.io.remotecontrol.RemoteControlHttpServer.run(RemoteControlHttpServer.java:101)

"RemoteControl HTTP Server" #35 daemon prio=5 os_prio=0 tid=0x00007fb940cae800 nid=0x24cf runnable [0x00007fb8d046b000]
   java.lang.Thread.State: RUNNABLE
        at java.net.PlainSocketImpl.socketAccept(Native Method)
        at java.net.AbstractPlainSocketImpl.accept(AbstractPlainSocketImpl.java:404)
        at java.net.ServerSocket.implAccept(ServerSocket.java:545)
        at java.net.ServerSocket.accept(ServerSocket.java:513)
        at org.openstreetmap.josm.io.remotecontrol.RemoteControlHttpServer.run(RemoteControlHttpServer.java:101)

"pool-2-thread-1" #32 prio=5 os_prio=0 tid=0x00007fb89c02c000 nid=0x24cd waiting on condition [0x00007fb8d2304000]
   java.lang.Thread.State: WAITING (parking)
        at sun.misc.Unsafe.park(Native Method)
        - parking to wait for  <0x00000000a39500d8> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
        at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
        at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)
        at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)
        at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1067)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
        at java.lang.Thread.run(Thread.java:745)

"pool-5-thread-5" #29 prio=5 os_prio=0 tid=0x00007fb940843000 nid=0x24cb waiting on condition [0x00007fb8d14ff000]
   java.lang.Thread.State: WAITING (parking)
        at sun.misc.Unsafe.park(Native Method)
        - parking to wait for  <0x00000000a415fa40> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
        at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
        at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)
        at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)
        at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1067)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
        at java.lang.Thread.run(Thread.java:745)

"pool-5-thread-4" #28 prio=5 os_prio=0 tid=0x00007fb940841800 nid=0x24ca waiting on condition [0x00007fb8d1600000]
   java.lang.Thread.State: WAITING (parking)
        at sun.misc.Unsafe.park(Native Method)
        - parking to wait for  <0x00000000a415fa40> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
        at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
        at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)
        at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)
        at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1067)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
        at java.lang.Thread.run(Thread.java:745)

"pool-5-thread-3" #27 prio=5 os_prio=0 tid=0x00007fb94083f800 nid=0x24c9 waiting on condition [0x00007fb8d1701000]
   java.lang.Thread.State: WAITING (parking)
        at sun.misc.Unsafe.park(Native Method)
        - parking to wait for  <0x00000000a415fa40> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
        at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
        at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)
        at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)
        at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1067)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
        at java.lang.Thread.run(Thread.java:745)

"pool-5-thread-2" #26 prio=5 os_prio=0 tid=0x00007fb94083e000 nid=0x24c8 waiting on condition [0x00007fb8d1a02000]
   java.lang.Thread.State: WAITING (parking)
        at sun.misc.Unsafe.park(Native Method)
        - parking to wait for  <0x00000000a415fa40> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
        at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
        at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)
        at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)
        at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1067)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
        at java.lang.Thread.run(Thread.java:745)

"pool-5-thread-1" #25 prio=5 os_prio=0 tid=0x00007fb94083d000 nid=0x24c7 waiting on condition [0x00007fb8d2203000]
   java.lang.Thread.State: WAITING (parking)
        at sun.misc.Unsafe.park(Native Method)
        - parking to wait for  <0x00000000a415fa40> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
        at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
        at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)
        at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)
        at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1067)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
        at java.lang.Thread.run(Thread.java:745)

"TimerQueue" #21 daemon prio=5 os_prio=0 tid=0x00007fb8bc080800 nid=0x24c3 waiting on condition [0x00007fb8d277e000]
   java.lang.Thread.State: WAITING (parking)
        at sun.misc.Unsafe.park(Native Method)
        - parking to wait for  <0x00000000a39504a0> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
        at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
        at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)
        at java.util.concurrent.DelayQueue.take(DelayQueue.java:211)
        at javax.swing.TimerQueue.run(TimerQueue.java:171)
        at java.lang.Thread.run(Thread.java:745)

"AWT-EventQueue-0" #18 prio=6 os_prio=0 tid=0x00007fb940707800 nid=0x24c2 waiting on condition [0x00007fb8d2c7d000]
   java.lang.Thread.State: WAITING (parking)
        at sun.misc.Unsafe.park(Native Method)
        - parking to wait for  <0x00000000a6f471f8> (a java.util.concurrent.locks.ReentrantReadWriteLock$NonfairSync)
        at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
        at java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt(AbstractQueuedSynchronizer.java:836)
        at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireQueued(AbstractQueuedSynchronizer.java:870)
        at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquire(AbstractQueuedSynchronizer.java:1199)
        at java.util.concurrent.locks.ReentrantReadWriteLock$WriteLock.lock(ReentrantReadWriteLock.java:943)
        at org.openstreetmap.josm.gui.MapView.removeLayer(MapView.java:533)
        at org.openstreetmap.josm.Main.removeLayer(Main.java:522)
        - locked <0x00000000a4224500> (a org.openstreetmap.josm.gui.MainApplication)
        at org.openstreetmap.josm.data.validation.OsmValidator.layerRemoved(OsmValidator.java:357)
        at org.openstreetmap.josm.gui.MapView.fireLayerRemoved(MapView.java:220)
        at org.openstreetmap.josm.gui.MapView.removeLayer(MapView.java:563)
        at org.openstreetmap.josm.Main.removeLayer(Main.java:522)
        - locked <0x00000000a4224500> (a org.openstreetmap.josm.gui.MainApplication)
        at org.openstreetmap.josm.gui.dialogs.LayerListDialog$DeleteLayerAction.actionPerformed(LayerListDialog.java:409)
        at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022)
        at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2346)
        at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
        at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
        at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
        at java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:289)
        at java.awt.Component.processMouseEvent(Component.java:6525)
        at javax.swing.JComponent.processMouseEvent(JComponent.java:3324)
        at java.awt.Component.processEvent(Component.java:6290)
        at java.awt.Container.processEvent(Container.java:2234)
        at java.awt.Component.dispatchEventImpl(Component.java:4881)
        at java.awt.Container.dispatchEventImpl(Container.java:2292)
        at java.awt.Component.dispatchEvent(Component.java:4703)
        at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4898)
        at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4533)
        at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4462)
        at java.awt.Container.dispatchEventImpl(Container.java:2278)
        at java.awt.Window.dispatchEventImpl(Window.java:2750)
        at java.awt.Component.dispatchEvent(Component.java:4703)
        at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)
        at java.awt.EventQueue.access$500(EventQueue.java:97)
        at java.awt.EventQueue$3.run(EventQueue.java:709)
        at java.awt.EventQueue$3.run(EventQueue.java:703)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75)
        at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:86)
        at java.awt.EventQueue$4.run(EventQueue.java:731)
        at java.awt.EventQueue$4.run(EventQueue.java:729)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75)
        at java.awt.EventQueue.dispatchEvent(EventQueue.java:728)
        at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
        at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
        at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)

"AWT-Shutdown" #19 prio=5 os_prio=0 tid=0x00007fb940706800 nid=0x24c1 in Object.wait() [0x00007fb8d381b000]
   java.lang.Thread.State: WAITING (on object monitor)
        at java.lang.Object.wait(Native Method)
        at java.lang.Object.wait(Object.java:502)
        at sun.awt.AWTAutoShutdown.run(AWTAutoShutdown.java:295)
        - locked <0x00000000a3950680> (a java.lang.Object)
        at java.lang.Thread.run(Thread.java:745)

"AWT-XAWT" #14 daemon prio=6 os_prio=0 tid=0x00007fb940563800 nid=0x24b5 runnable [0x00007fb8d3df8000]
   java.lang.Thread.State: RUNNABLE
        at sun.awt.X11.XToolkit.waitForEvents(Native Method)
        at sun.awt.X11.XToolkit.run(XToolkit.java:568)
        at sun.awt.X11.XToolkit.run(XToolkit.java:532)
        at java.lang.Thread.run(Thread.java:745)

"Java2D Disposer" #12 daemon prio=10 os_prio=0 tid=0x00007fb940539800 nid=0x24b4 in Object.wait() [0x00007fb9083ea000]
   java.lang.Thread.State: WAITING (on object monitor)
        at java.lang.Object.wait(Native Method)
        at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:143)
        - locked <0x00000000a38f2238> (a java.lang.ref.ReferenceQueue$Lock)
        at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:164)
        at sun.java2d.Disposer.run(Disposer.java:148)
        at java.lang.Thread.run(Thread.java:745)

"File Watcher" #11 prio=5 os_prio=0 tid=0x00007fb94048d800 nid=0x24b3 waiting on condition [0x00007fb90a2d4000]
   java.lang.Thread.State: WAITING (parking)
        at sun.misc.Unsafe.park(Native Method)
        - parking to wait for  <0x00000000a3954fb0> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
        at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
        at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)
        at java.util.concurrent.LinkedBlockingDeque.takeFirst(LinkedBlockingDeque.java:492)
        at java.util.concurrent.LinkedBlockingDeque.take(LinkedBlockingDeque.java:680)
        at sun.nio.fs.AbstractWatchService.take(AbstractWatchService.java:118)
        at org.openstreetmap.josm.io.FileWatcher.processEvents(FileWatcher.java:109)
        at org.openstreetmap.josm.io.FileWatcher.access$000(FileWatcher.java:30)
        at org.openstreetmap.josm.io.FileWatcher$1.run(FileWatcher.java:46)
        at java.lang.Thread.run(Thread.java:745)

"Thread-0" #10 daemon prio=5 os_prio=0 tid=0x00007fb94048b800 nid=0x24b2 runnable [0x00007fb90a3d5000]
   java.lang.Thread.State: RUNNABLE
        at sun.nio.fs.LinuxWatchService.poll(Native Method)
        at sun.nio.fs.LinuxWatchService.access$600(LinuxWatchService.java:47)
        at sun.nio.fs.LinuxWatchService$Poller.run(LinuxWatchService.java:314)
        at java.lang.Thread.run(Thread.java:745)

"Service Thread" #9 daemon prio=9 os_prio=0 tid=0x00007fb940348800 nid=0x24b0 runnable [0x0000000000000000]
   java.lang.Thread.State: RUNNABLE

"C1 CompilerThread3" #8 daemon prio=9 os_prio=0 tid=0x00007fb94032b800 nid=0x24af waiting on condition [0x0000000000000000]
   java.lang.Thread.State: RUNNABLE

"C2 CompilerThread2" #7 daemon prio=9 os_prio=0 tid=0x00007fb940329800 nid=0x24ae waiting on condition [0x0000000000000000]
   java.lang.Thread.State: RUNNABLE

"C2 CompilerThread1" #6 daemon prio=9 os_prio=0 tid=0x00007fb940327800 nid=0x24ad waiting on condition [0x0000000000000000]
   java.lang.Thread.State: RUNNABLE

"C2 CompilerThread0" #5 daemon prio=9 os_prio=0 tid=0x00007fb940325000 nid=0x24ac waiting on condition [0x0000000000000000]
   java.lang.Thread.State: RUNNABLE

"Signal Dispatcher" #4 daemon prio=9 os_prio=0 tid=0x00007fb940323800 nid=0x24ab waiting on condition [0x0000000000000000]
   java.lang.Thread.State: RUNNABLE

"Finalizer" #3 daemon prio=8 os_prio=0 tid=0x00007fb9402e7800 nid=0x24aa in Object.wait() [0x00007fb90b136000]
   java.lang.Thread.State: WAITING (on object monitor)
        at java.lang.Object.wait(Native Method)
        at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:143)
        - locked <0x00000000a373c360> (a java.lang.ref.ReferenceQueue$Lock)
        at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:164)
        at java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:209)

"Reference Handler" #2 daemon prio=10 os_prio=0 tid=0x00007fb9402e5000 nid=0x24a9 in Object.wait() [0x00007fb90b237000]
   java.lang.Thread.State: WAITING (on object monitor)
        at java.lang.Object.wait(Native Method)
        at java.lang.Object.wait(Object.java:502)
        at java.lang.ref.Reference$ReferenceHandler.run(Reference.java:157)
        - locked <0x00000000a37b4a68> (a java.lang.ref.Reference$Lock)

"VM Thread" os_prio=0 tid=0x00007fb9402e0000 nid=0x24a8 runnable 

"GC task thread#0 (ParallelGC)" os_prio=0 tid=0x00007fb94001c800 nid=0x24a0 runnable 

"GC task thread#1 (ParallelGC)" os_prio=0 tid=0x00007fb94001e800 nid=0x24a1 runnable 

"GC task thread#2 (ParallelGC)" os_prio=0 tid=0x00007fb940020000 nid=0x24a2 runnable 

"GC task thread#3 (ParallelGC)" os_prio=0 tid=0x00007fb940022000 nid=0x24a3 runnable 

"GC task thread#4 (ParallelGC)" os_prio=0 tid=0x00007fb940023800 nid=0x24a4 runnable 

"GC task thread#5 (ParallelGC)" os_prio=0 tid=0x00007fb940025800 nid=0x24a5 runnable 

"GC task thread#6 (ParallelGC)" os_prio=0 tid=0x00007fb940027000 nid=0x24a6 runnable 

"GC task thread#7 (ParallelGC)" os_prio=0 tid=0x00007fb940029000 nid=0x24a7 runnable 

"VM Periodic Task Thread" os_prio=0 tid=0x00007fb94034b000 nid=0x24b1 waiting on condition 

JNI global references: 29918

Heap
 PSYoungGen      total 329216K, used 49051K [0x00000000e0e00000, 0x00000000f8500000, 0x0000000100000000)
  eden space 322048K, 13% used [0x00000000e0e00000,0x00000000e3730778,0x00000000f4880000)
  from space 7168K, 95% used [0x00000000f7e00000,0x00000000f84b6530,0x00000000f8500000)
  to   space 29696K, 0% used [0x00000000f4b00000,0x00000000f4b00000,0x00000000f6800000)
 ParOldGen       total 481280K, used 379356K [0x00000000a2a00000, 0x00000000c0000000, 0x00000000e0e00000)
  object space 481280K, 78% used [0x00000000a2a00000,0x00000000b9c77130,0x00000000c0000000)
 Metaspace       used 63636K, capacity 65630K, committed 66136K, reserved 1107968K
  class space    used 7742K, capacity 8343K, committed 8536K, reserved 1048576K

Hope this is what you're asking for.

comment:3 by aceman, 9 years ago

Happened again with 8605, this is my output from kill -3 on the java process:

INFO: PUT https://api.openstreetmap.org/api/0.6/changeset/32735723/close...
INFO: OK
2015-07-19 18:10:35
Full thread dump Java HotSpot(TM) Server VM (25.45-b02 mixed mode):

"pool-4-thread-4" #147 prio=5 os_prio=0 tid=0xa07a7800 nid=0xb7d waiting on condition [0x9d121000]

java.lang.Thread.State: WAITING (parking)

at sun.misc.Unsafe.park(Native Method)

  • parking to wait for <0xa89b77a0> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject) at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175) at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039) at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442) at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1067) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745)

"pool-4-thread-3" #146 prio=5 os_prio=0 tid=0xa075e400 nid=0xb7c waiting on condition [0x9e0fe000]

java.lang.Thread.State: WAITING (parking)

at sun.misc.Unsafe.park(Native Method)

  • parking to wait for <0xa89b77a0> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject) at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175) at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039) at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442) at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1067) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745)

"pool-4-thread-2" #145 prio=5 os_prio=0 tid=0xa075d000 nid=0xb7b waiting on condition [0x9d0d1000]

java.lang.Thread.State: WAITING (parking)

at sun.misc.Unsafe.park(Native Method)

  • parking to wait for <0xa89b77a0> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject) at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175) at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039) at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442) at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1067) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745)

"pool-4-thread-1" #144 prio=5 os_prio=0 tid=0xa075cc00 nid=0xb7a waiting on condition [0x9ce47000]

java.lang.Thread.State: WAITING (parking)

at sun.misc.Unsafe.park(Native Method)

  • parking to wait for <0xa89b77a0> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject) at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175) at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039) at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442) at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1067) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745)

"Map Status Collector" #143 daemon prio=6 os_prio=0 tid=0xa13f4c00 nid=0xb79 in Object.wait() [0x9d256000]

java.lang.Thread.State: WAITING (on object monitor)

at java.lang.Object.wait(Native Method)
at java.lang.Object.wait(Object.java:502)
at java.awt.EventQueue.invokeAndWait(EventQueue.java:1313)

  • locked <0xd74fae78> (a java.awt.EventQueue$1AWTInvocationLock) at java.awt.EventQueue.invokeAndWait(EventQueue.java:1294) at org.openstreetmap.josm.gui.MapStatus$Collector.run(MapStatus.java:384) at java.lang.Thread.run(Thread.java:745)

"Timer-3" #142 prio=6 os_prio=0 tid=0xa0727800 nid=0xb78 in Object.wait() [0x9cdf7000]

java.lang.Thread.State: WAITING (on object monitor)

at java.lang.Object.wait(Native Method)
at java.lang.Object.wait(Object.java:502)
at java.util.TimerThread.mainLoop(Timer.java:526)

  • locked <0xabe52418> (a java.util.TaskQueue) at java.util.TimerThread.run(Timer.java:505)

"pool-1-thread-1" #140 prio=5 os_prio=0 tid=0xa1c86000 nid=0xb74 waiting on condition [0x9cda7000]

java.lang.Thread.State: WAITING (parking)

at sun.misc.Unsafe.park(Native Method)

  • parking to wait for <0xa75b0228> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject) at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175) at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039) at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442) at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1067) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745)

"TMS downloader" #57 prio=5 os_prio=0 tid=0x9fdd8c00 nid=0xae0 waiting on condition [0x9cf97000]

java.lang.Thread.State: WAITING (parking)

at sun.misc.Unsafe.park(Native Method)

  • parking to wait for <0xa98a0188> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject) at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175) at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039) at java.util.concurrent.LinkedBlockingDeque.takeFirst(LinkedBlockingDeque.java:492) at org.openstreetmap.josm.data.cache.HostLimitQueue.take(HostLimitQueue.java:85) at org.openstreetmap.josm.data.cache.HostLimitQueue.take(HostLimitQueue.java:30) at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1067) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745)

"TMS downloader" #56 prio=5 os_prio=0 tid=0x9fdd7800 nid=0xadf waiting on condition [0x9cfe7000]

java.lang.Thread.State: WAITING (parking)

at sun.misc.Unsafe.park(Native Method)

  • parking to wait for <0xa98a0188> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject) at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175) at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039) at java.util.concurrent.LinkedBlockingDeque.takeFirst(LinkedBlockingDeque.java:492) at org.openstreetmap.josm.data.cache.HostLimitQueue.take(HostLimitQueue.java:85) at org.openstreetmap.josm.data.cache.HostLimitQueue.take(HostLimitQueue.java:30) at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1067) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745)

"TMS downloader" #55 prio=5 os_prio=0 tid=0x9fdd6400 nid=0xade waiting on condition [0x9d037000]

java.lang.Thread.State: WAITING (parking)

at sun.misc.Unsafe.park(Native Method)

  • parking to wait for <0xa98a0188> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject) at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175) at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039) at java.util.concurrent.LinkedBlockingDeque.takeFirst(LinkedBlockingDeque.java:492) at org.openstreetmap.josm.data.cache.HostLimitQueue.take(HostLimitQueue.java:85) at org.openstreetmap.josm.data.cache.HostLimitQueue.take(HostLimitQueue.java:30) at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1067) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745)

"TMS downloader" #54 prio=5 os_prio=0 tid=0x9fdd4c00 nid=0xadd waiting on condition [0x9d2f6000]

java.lang.Thread.State: WAITING (parking)

at sun.misc.Unsafe.park(Native Method)

  • parking to wait for <0xa98a0188> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject) at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175) at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039) at java.util.concurrent.LinkedBlockingDeque.takeFirst(LinkedBlockingDeque.java:492) at org.openstreetmap.josm.data.cache.HostLimitQueue.take(HostLimitQueue.java:85) at org.openstreetmap.josm.data.cache.HostLimitQueue.take(HostLimitQueue.java:30) at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1067) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745)

"TMS downloader" #53 prio=5 os_prio=0 tid=0x9fdd0800 nid=0xadc waiting on condition [0x9d346000]

java.lang.Thread.State: WAITING (parking)

at sun.misc.Unsafe.park(Native Method)

  • parking to wait for <0xa98a0188> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject) at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175) at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039) at java.util.concurrent.LinkedBlockingDeque.takeFirst(LinkedBlockingDeque.java:492) at org.openstreetmap.josm.data.cache.HostLimitQueue.take(HostLimitQueue.java:85) at org.openstreetmap.josm.data.cache.HostLimitQueue.take(HostLimitQueue.java:30) at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1067) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745)

"TMS downloader" #52 prio=5 os_prio=0 tid=0x9fdc5800 nid=0xadb waiting on condition [0x9d396000]

java.lang.Thread.State: WAITING (parking)

at sun.misc.Unsafe.park(Native Method)

  • parking to wait for <0xa98a0188> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject) at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175) at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039) at java.util.concurrent.LinkedBlockingDeque.takeFirst(LinkedBlockingDeque.java:492) at org.openstreetmap.josm.data.cache.HostLimitQueue.take(HostLimitQueue.java:85) at org.openstreetmap.josm.data.cache.HostLimitQueue.take(HostLimitQueue.java:30) at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1067) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745)

"TMS downloader" #51 prio=5 os_prio=0 tid=0x9fdc4400 nid=0xada waiting on condition [0x9d3e6000]

java.lang.Thread.State: WAITING (parking)

at sun.misc.Unsafe.park(Native Method)

  • parking to wait for <0xa98a0188> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject) at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175) at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039) at java.util.concurrent.LinkedBlockingDeque.takeFirst(LinkedBlockingDeque.java:492) at org.openstreetmap.josm.data.cache.HostLimitQueue.take(HostLimitQueue.java:85) at org.openstreetmap.josm.data.cache.HostLimitQueue.take(HostLimitQueue.java:30) at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1067) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745)

"TMS downloader" #50 prio=5 os_prio=0 tid=0x9fdc3000 nid=0xad9 waiting on condition [0x9d436000]

java.lang.Thread.State: WAITING (parking)

at sun.misc.Unsafe.park(Native Method)

  • parking to wait for <0xa98a0188> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject) at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175) at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039) at java.util.concurrent.LinkedBlockingDeque.takeFirst(LinkedBlockingDeque.java:492) at org.openstreetmap.josm.data.cache.HostLimitQueue.take(HostLimitQueue.java:85) at org.openstreetmap.josm.data.cache.HostLimitQueue.take(HostLimitQueue.java:30) at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1067) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745)

"TMS downloader" #49 prio=5 os_prio=0 tid=0x9fdc1c00 nid=0xad8 waiting on condition [0x9d486000]

java.lang.Thread.State: WAITING (parking)

at sun.misc.Unsafe.park(Native Method)

  • parking to wait for <0xa98a0188> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject) at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175) at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039) at java.util.concurrent.LinkedBlockingDeque.takeFirst(LinkedBlockingDeque.java:492) at org.openstreetmap.josm.data.cache.HostLimitQueue.take(HostLimitQueue.java:85) at org.openstreetmap.josm.data.cache.HostLimitQueue.take(HostLimitQueue.java:30) at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1067) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745)

"TMS downloader" #48 prio=5 os_prio=0 tid=0x9fdc0c00 nid=0xad7 waiting on condition [0x9e05e000]

java.lang.Thread.State: WAITING (parking)

at sun.misc.Unsafe.park(Native Method)

  • parking to wait for <0xa98a0188> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject) at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175) at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039) at java.util.concurrent.LinkedBlockingDeque.takeFirst(LinkedBlockingDeque.java:492) at org.openstreetmap.josm.data.cache.HostLimitQueue.take(HostLimitQueue.java:85) at org.openstreetmap.josm.data.cache.HostLimitQueue.take(HostLimitQueue.java:30) at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1067) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745)

"Timer-2" #47 daemon prio=6 os_prio=0 tid=0xa0aef400 nid=0xacd in Object.wait() [0x9e0ae000]

java.lang.Thread.State: WAITING (on object monitor)

at java.lang.Object.wait(Native Method)

  • waiting on <0xa9bb32d0> (a java.util.TaskQueue) at java.lang.Object.wait(Object.java:502) at java.util.TimerThread.mainLoop(Timer.java:526)
  • locked <0xa9bb32d0> (a java.util.TaskQueue) at java.util.TimerThread.run(Timer.java:505)

"OSMJobThread 1" #45 daemon prio=6 os_prio=0 tid=0xa34c3000 nid=0xaca waiting on condition [0xa01b1000]

java.lang.Thread.State: WAITING (parking)

at sun.misc.Unsafe.park(Native Method)

  • parking to wait for <0xa9bb7048> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject) at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175) at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039) at java.util.concurrent.LinkedBlockingDeque.takeFirst(LinkedBlockingDeque.java:492) at java.util.concurrent.LinkedBlockingDeque.take(LinkedBlockingDeque.java:680) at org.openstreetmap.gui.jmapviewer.JobDispatcher$JobThread.executeJobs(JobDispatcher.java:153) at org.openstreetmap.gui.jmapviewer.JobDispatcher$JobThread.run(JobDispatcher.java:134)

"DestroyJavaVM" #42 prio=5 os_prio=0 tid=0xf6607000 nid=0xa7a waiting on condition [0x00000000]

java.lang.Thread.State: RUNNABLE

"Timer-1" #40 daemon prio=6 os_prio=0 tid=0xa1cdf000 nid=0xab7 waiting on condition [0x9fcae000]

java.lang.Thread.State: WAITING (parking)

at sun.misc.Unsafe.park(Native Method)

  • parking to wait for <0xac0216f8> (a java.util.concurrent.locks.ReentrantReadWriteLock$NonfairSync) at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175) at java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt(AbstractQueuedSynchronizer.java:836) at java.util.concurrent.locks.AbstractQueuedSynchronizer.doAcquireShared(AbstractQueuedSynchronizer.java:967) at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireShared(AbstractQueuedSynchronizer.java:1283) at java.util.concurrent.locks.ReentrantReadWriteLock$ReadLock.lock(ReentrantReadWriteLock.java:727) at org.openstreetmap.josm.gui.MapView.getAllLayersAsList(MapView.java:889) at org.openstreetmap.josm.gui.dialogs.LayerListDialog$LayerListModel.getLayers(LayerListDialog.java:1446) at org.openstreetmap.josm.gui.dialogs.LayerListDialog$LayerListModel.propertyChange(LayerListDialog.java:1582) at java.beans.PropertyChangeSupport.fire(PropertyChangeSupport.java:335) at java.beans.PropertyChangeSupport.firePropertyChange(PropertyChangeSupport.java:327) at java.beans.PropertyChangeSupport.firePropertyChange(PropertyChangeSupport.java:263) at java.beans.PropertyChangeSupport.firePropertyChange(PropertyChangeSupport.java:303) at org.openstreetmap.josm.gui.layer.OsmDataLayer.setRequiresSaveToFile(OsmDataLayer.java:124) at org.openstreetmap.josm.gui.layer.OsmDataLayer.onPostSaveToFile(OsmDataLayer.java:797) at org.openstreetmap.josm.io.OsmExporter.save(OsmExporter.java:98) at org.openstreetmap.josm.io.OsmExporter.exportData(OsmExporter.java:67) at org.openstreetmap.josm.data.AutosaveTask.savelayer(AutosaveTask.java:191) at org.openstreetmap.josm.data.AutosaveTask.run(AutosaveTask.java:212)
  • locked <0xa9c79928> (a java.lang.Object) at java.util.TimerThread.mainLoop(Timer.java:555) at java.util.TimerThread.run(Timer.java:505)

"RemoteControl HTTPS Server" #39 daemon prio=5 os_prio=0 tid=0x9d719800 nid=0xab6 runnable [0x9fcfe000]

java.lang.Thread.State: RUNNABLE

at java.net.PlainSocketImpl.socketAccept(Native Method)
at java.net.AbstractPlainSocketImpl.accept(AbstractPlainSocketImpl.java:404)
at java.net.ServerSocket.implAccept(ServerSocket.java:545)
at sun.security.ssl.SSLServerSocketImpl.accept(SSLServerSocketImpl.java:348)
at org.openstreetmap.josm.io.remotecontrol.RemoteControlHttpsServer.run(RemoteControlHttpsServer.java:418)

"RemoteControl HTTP Server" #37 daemon prio=5 os_prio=0 tid=0x9d716000 nid=0xab5 runnable [0xa0161000]

java.lang.Thread.State: RUNNABLE

at java.net.PlainSocketImpl.socketAccept(Native Method)
at java.net.AbstractPlainSocketImpl.accept(AbstractPlainSocketImpl.java:404)
at java.net.ServerSocket.implAccept(ServerSocket.java:545)
at java.net.ServerSocket.accept(ServerSocket.java:513)
at org.openstreetmap.josm.io.remotecontrol.RemoteControlHttpServer.run(RemoteControlHttpServer.java:101)

"com.google.inject.internal.util.$Finalizer" #33 daemon prio=5 os_prio=0 tid=0x9e8d8400 nid=0xab0 in Object.wait() [0xa239b000]

java.lang.Thread.State: WAITING (on object monitor)

at java.lang.Object.wait(Native Method)

  • waiting on <0xa926f1e8> (a java.lang.ref.ReferenceQueue$Lock) at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:143)
  • locked <0xa926f1e8> (a java.lang.ref.ReferenceQueue$Lock) at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:164) at com.google.inject.internal.util.$Finalizer.run(Finalizer.java:114)

"Timer-0" #30 prio=5 os_prio=0 tid=0x9f74f800 nid=0xaa8 waiting on condition [0xa2571000]

java.lang.Thread.State: WAITING (parking)

at sun.misc.Unsafe.park(Native Method)

  • parking to wait for <0xac0216f8> (a java.util.concurrent.locks.ReentrantReadWriteLock$NonfairSync) at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175) at java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt(AbstractQueuedSynchronizer.java:836) at java.util.concurrent.locks.AbstractQueuedSynchronizer.doAcquireShared(AbstractQueuedSynchronizer.java:967) at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireShared(AbstractQueuedSynchronizer.java:1283) at java.util.concurrent.locks.ReentrantReadWriteLock$ReadLock.lock(ReentrantReadWriteLock.java:727) at org.openstreetmap.josm.gui.MapView.getAllLayers(MapView.java:877) at org.openstreetmap.josm.gui.MapView.getLayersOfType(MapView.java:909) at iodb.ImageryOffsetTools.getTopImageryLayer(ImageryOffsetTools.java:32) at iodb.ImageryOffsetWatcher.checkOffset(ImageryOffsetWatcher.java:94)
  • locked <0xa90acb80> (a iodb.ImageryOffsetWatcher) at iodb.ImageryOffsetWatcher.access$300(ImageryOffsetWatcher.java:18) at iodb.ImageryOffsetWatcher$IntervalOffsetChecker.run(ImageryOffsetWatcher.java:243) at java.util.TimerThread.mainLoop(Timer.java:555) at java.util.TimerThread.run(Timer.java:505)

"pool-2-thread-1" #29 prio=5 os_prio=0 tid=0xa158f800 nid=0xaa5 waiting on condition [0xa25fe000]

java.lang.Thread.State: WAITING (parking)

at sun.misc.Unsafe.park(Native Method)

  • parking to wait for <0xa7ce1bf8> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject) at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175) at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039) at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442) at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1067) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745)

"pool-5-thread-4" #27 prio=5 os_prio=0 tid=0xa0ff5000 nid=0xaa1 waiting on condition [0xa1d5d000]

java.lang.Thread.State: WAITING (parking)

at sun.misc.Unsafe.park(Native Method)

  • parking to wait for <0xa84758a0> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject) at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175) at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039) at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442) at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1067) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745)

"pool-5-thread-3" #26 prio=5 os_prio=0 tid=0xa0ff2400 nid=0xaa0 waiting on condition [0xa1fc1000]

java.lang.Thread.State: WAITING (parking)

at sun.misc.Unsafe.park(Native Method)

  • parking to wait for <0xa84758a0> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject) at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175) at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039) at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442) at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1067) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745)

"pool-5-thread-2" #25 prio=5 os_prio=0 tid=0xa0ff1400 nid=0xa9f waiting on condition [0xa2011000]

java.lang.Thread.State: WAITING (parking)

at sun.misc.Unsafe.park(Native Method)

  • parking to wait for <0xa84758a0> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject) at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175) at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039) at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442) at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1067) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745)

"pool-5-thread-1" #24 prio=5 os_prio=0 tid=0xa0ff0000 nid=0xa9e waiting on condition [0xa234b000]

java.lang.Thread.State: WAITING (parking)

at sun.misc.Unsafe.park(Native Method)

  • parking to wait for <0xa84758a0> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject) at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175) at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039) at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442) at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1067) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745)

"TimerQueue" #19 daemon prio=5 os_prio=0 tid=0xa1b25800 nid=0xa96 waiting on condition [0xa1dad000]

java.lang.Thread.State: WAITING (parking)

at sun.misc.Unsafe.park(Native Method)

  • parking to wait for <0xa7dc6318> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject) at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175) at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039) at java.util.concurrent.DelayQueue.take(DelayQueue.java:211) at javax.swing.TimerQueue.run(TimerQueue.java:171) at java.lang.Thread.run(Thread.java:745)

"AWT-EventQueue-0" #16 prio=6 os_prio=0 tid=0xa27a5000 nid=0xa95 waiting on condition [0xa1f25000]

java.lang.Thread.State: WAITING (parking)

at sun.misc.Unsafe.park(Native Method)

  • parking to wait for <0xac0216f8> (a java.util.concurrent.locks.ReentrantReadWriteLock$NonfairSync) at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175) at java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt(AbstractQueuedSynchronizer.java:836) at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireQueued(AbstractQueuedSynchronizer.java:870) at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquire(AbstractQueuedSynchronizer.java:1199) at java.util.concurrent.locks.ReentrantReadWriteLock$WriteLock.lock(ReentrantReadWriteLock.java:943) at org.openstreetmap.josm.gui.MapView.removeLayer(MapView.java:533) at org.openstreetmap.josm.Main.removeLayer(Main.java:522)
  • locked <0xa8226158> (a org.openstreetmap.josm.gui.MainApplication) at org.openstreetmap.josm.data.validation.OsmValidator.layerRemoved(OsmValidator.java:357) at org.openstreetmap.josm.gui.MapView.fireLayerRemoved(MapView.java:220) at org.openstreetmap.josm.gui.MapView.removeLayer(MapView.java:563) at org.openstreetmap.josm.Main.removeLayer(Main.java:522)
  • locked <0xa8226158> (a org.openstreetmap.josm.gui.MainApplication) at org.openstreetmap.josm.gui.dialogs.LayerListDialog$DeleteLayerAction.actionPerformed(LayerListDialog.java:409) at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022) at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2346) at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402) at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259) at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252) at java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:289) at java.awt.Component.processMouseEvent(Component.java:6525) at javax.swing.JComponent.processMouseEvent(JComponent.java:3324) at java.awt.Component.processEvent(Component.java:6290) at java.awt.Container.processEvent(Container.java:2234) at java.awt.Component.dispatchEventImpl(Component.java:4881) at java.awt.Container.dispatchEventImpl(Container.java:2292) at java.awt.Component.dispatchEvent(Component.java:4703) at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4898) at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4533) at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4462) at java.awt.Container.dispatchEventImpl(Container.java:2278) at java.awt.Window.dispatchEventImpl(Window.java:2750) at java.awt.Component.dispatchEvent(Component.java:4703) at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758) at java.awt.EventQueue.access$500(EventQueue.java:97) at java.awt.EventQueue$3.run(EventQueue.java:709) at java.awt.EventQueue$3.run(EventQueue.java:703) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75) at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:86) at java.awt.EventQueue$4.run(EventQueue.java:731) at java.awt.EventQueue$4.run(EventQueue.java:729) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75) at java.awt.EventQueue.dispatchEvent(EventQueue.java:728) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93) at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)

"AWT-Shutdown" #17 prio=5 os_prio=0 tid=0xa27a8000 nid=0xa94 in Object.wait() [0xa289a000]

java.lang.Thread.State: WAITING (on object monitor)

at java.lang.Object.wait(Native Method)
at java.lang.Object.wait(Object.java:502)
at sun.awt.AWTAutoShutdown.run(AWTAutoShutdown.java:295)

  • locked <0xa7dceb48> (a java.lang.Object) at java.lang.Thread.run(Thread.java:745)

"AWT-XAWT" #13 daemon prio=6 os_prio=0 tid=0xa31e6000 nid=0xa8d runnable [0xa2a5c000]

java.lang.Thread.State: RUNNABLE

at sun.awt.X11.XToolkit.waitForEvents(Native Method)
at sun.awt.X11.XToolkit.run(XToolkit.java:568)
at sun.awt.X11.XToolkit.run(XToolkit.java:532)
at java.lang.Thread.run(Thread.java:745)

"Java2D Disposer" #11 daemon prio=10 os_prio=0 tid=0xa31d6000 nid=0xa8c in Object.wait() [0xa2aac000]

java.lang.Thread.State: WAITING (on object monitor)

at java.lang.Object.wait(Native Method)
at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:143)

  • locked <0xa7dc40f8> (a java.lang.ref.ReferenceQueue$Lock) at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:164) at sun.java2d.Disposer.run(Disposer.java:148) at java.lang.Thread.run(Thread.java:745)

"File Watcher" #10 prio=5 os_prio=0 tid=0xa3155c00 nid=0xa89 waiting on condition [0xa3574000]

java.lang.Thread.State: WAITING (parking)

at sun.misc.Unsafe.park(Native Method)

  • parking to wait for <0xa7de3fc8> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject) at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175) at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039) at java.util.concurrent.LinkedBlockingDeque.takeFirst(LinkedBlockingDeque.java:492) at java.util.concurrent.LinkedBlockingDeque.take(LinkedBlockingDeque.java:680) at sun.nio.fs.AbstractWatchService.take(AbstractWatchService.java:118) at org.openstreetmap.josm.io.FileWatcher.processEvents(FileWatcher.java:109) at org.openstreetmap.josm.io.FileWatcher.access$000(FileWatcher.java:30) at org.openstreetmap.josm.io.FileWatcher$1.run(FileWatcher.java:46) at java.lang.Thread.run(Thread.java:745)

"Thread-0" #9 daemon prio=5 os_prio=0 tid=0xa3154800 nid=0xa88 runnable [0xa35c4000]

java.lang.Thread.State: RUNNABLE

at sun.nio.fs.LinuxWatchService.poll(Native Method)
at sun.nio.fs.LinuxWatchService.access$600(LinuxWatchService.java:47)
at sun.nio.fs.LinuxWatchService$Poller.run(LinuxWatchService.java:314)
at java.lang.Thread.run(Thread.java:745)

"Service Thread" #8 daemon prio=9 os_prio=0 tid=0xa3baa800 nid=0xa86 runnable [0x00000000]

java.lang.Thread.State: RUNNABLE

"C1 CompilerThread2" #7 daemon prio=9 os_prio=0 tid=0xa3ba7400 nid=0xa85 waiting on condition [0x00000000]

java.lang.Thread.State: RUNNABLE

"C2 CompilerThread1" #6 daemon prio=9 os_prio=0 tid=0xa3ba5c00 nid=0xa84 waiting on condition [0x00000000]

java.lang.Thread.State: RUNNABLE

"C2 CompilerThread0" #5 daemon prio=9 os_prio=0 tid=0xa3ba4000 nid=0xa83 waiting on condition [0x00000000]

java.lang.Thread.State: RUNNABLE

"Signal Dispatcher" #4 daemon prio=9 os_prio=0 tid=0xa3ba2800 nid=0xa82 waiting on condition [0x00000000]

java.lang.Thread.State: RUNNABLE

"Finalizer" #3 daemon prio=8 os_prio=0 tid=0xa3b85800 nid=0xa81 in Object.wait() [0xa3c89000]

java.lang.Thread.State: WAITING (on object monitor)

at java.lang.Object.wait(Native Method)
at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:143)

  • locked <0xa7c386b8> (a java.lang.ref.ReferenceQueue$Lock) at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:164) at java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:209)

"Reference Handler" #2 daemon prio=10 os_prio=0 tid=0xa3b84000 nid=0xa80 in Object.wait() [0xa3cd9000]

java.lang.Thread.State: WAITING (on object monitor)

at java.lang.Object.wait(Native Method)
at java.lang.Object.wait(Object.java:502)
at java.lang.ref.Reference$ReferenceHandler.run(Reference.java:157)

  • locked <0xa7bf0488> (a java.lang.ref.Reference$Lock)

"VM Thread" os_prio=0 tid=0xa3b80c00 nid=0xa7f runnable

"GC task thread#0 (ParallelGC)" os_prio=0 tid=0xf6610800 nid=0xa7b runnable

"GC task thread#1 (ParallelGC)" os_prio=0 tid=0xf6611c00 nid=0xa7c runnable

"GC task thread#2 (ParallelGC)" os_prio=0 tid=0xf6613000 nid=0xa7d runnable

"GC task thread#3 (ParallelGC)" os_prio=0 tid=0xf6614400 nid=0xa7e runnable

"VM Periodic Task Thread" os_prio=0 tid=0xa3bb5800 nid=0xa87 waiting on condition

JNI global references: 157100

Heap

PSYoungGen total 299264K, used 152803K [0xd1ac0000, 0xe6c80000, 0xe7000000)

eden space 252672K, 48% used [0xd1ac0000,0xd91724f0,0xe1180000)
from space 46592K, 67% used [0xe1180000,0xe3006868,0xe3f00000)
to space 45568K, 0% used [0xe4000000,0xe4000000,0xe6c80000)

ParOldGen total 192256K, used 149235K [0xa7000000, 0xb2bc0000, 0xd1ac0000)

object space 192256K, 77% used [0xa7000000,0xb01bce90,0xb2bc0000)

Metaspace used 43548K, capacity 45595K, committed 45720K, reserved 46384K

comment:4 by wiktorn, 9 years ago

@aceman, @hjart:
Can you reproduce this problem also with ImageryOffset plugin disabled?

It looks like the threads are waiting for layerLock in MapView. I do not have a clue, why this lock wasn't released. Findbugs reports problems, that locks might be not released, but in my opinion, they are false positives.

Anyway, below patch to get rid of these warnings. It just moves the acquire of the locks closer to the try:

### Eclipse Workspace Patch 1.0
#P JOSM
diff --git src/org/openstreetmap/josm/gui/MapView.java src/org/openstreetmap/josm/gui/MapView.java
index a0b161d..cb08565 100644
--- src/org/openstreetmap/josm/gui/MapView.java
+++ src/org/openstreetmap/josm/gui/MapView.java
@@ -405,11 +405,12 @@
      */
     public void addLayer(Layer layer) {
         boolean isOsmDataLayer = layer instanceof OsmDataLayer;
-        layerLock.writeLock().lock();
-        layerLock.readLock().lock();
         EnumSet<LayerListenerType> listenersToFire = EnumSet.noneOf(LayerListenerType.class);
         Layer oldActiveLayer = activeLayer;
         OsmDataLayer oldEditLayer = editLayer;
+
+        layerLock.writeLock().lock();
+        layerLock.readLock().lock();
         try {
             try {
                 if (layer instanceof MarkerLayer && playHeadMarker == null) {
@@ -530,12 +531,12 @@
      * @param layer The layer to remove
      */
     public void removeLayer(Layer layer) {
-        layerLock.writeLock().lock();
-        layerLock.readLock().lock();
-
         EnumSet<LayerListenerType> listenersToFire = EnumSet.noneOf(LayerListenerType.class);
         Layer oldActiveLayer = activeLayer;
         OsmDataLayer oldEditLayer = editLayer;
+
+        layerLock.writeLock().lock();
+        layerLock.readLock().lock();
         try {
             try {
                 List<Layer> layersList = new ArrayList<>(layers);
@@ -601,11 +602,12 @@
      * @param pos       The new position of the layer
      */
     public void moveLayer(Layer layer, int pos) {
-        layerLock.writeLock().lock();
-        layerLock.readLock().lock();
         EnumSet<LayerListenerType> listenersToFire;
         Layer oldActiveLayer = activeLayer;
         OsmDataLayer oldEditLayer = editLayer;
+
+        layerLock.writeLock().lock();
+        layerLock.readLock().lock();
         try {
             try {
                 int curLayerPos = layers.indexOf(layer);

comment:5 by hjart, 9 years ago

@wiktorn I do not have an ImageryOffset plugin installed.
It seems that only when I try to remove the last datalayer do I experience the hangs.

comment:6 by wiktorn, 9 years ago

I've just got the hang by myself. The interesting thread looks the same:

"AWT-EventQueue-0" prio=6 tid=0x000000000c6e6800 nid=0x1670 waiting on condition [0x000000000d1ec000]
   java.lang.Thread.State: WAITING (parking)
	at sun.misc.Unsafe.park(Native Method)
	- parking to wait for  <0x00000000c4609bc8> (a java.util.concurrent.locks.ReentrantReadWriteLock$NonfairSync)
	at java.util.concurrent.locks.LockSupport.park(LockSupport.java:186)
	at java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt(AbstractQueuedSynchronizer.java:834)
	at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireQueued(AbstractQueuedSynchronizer.java:867)
	at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquire(AbstractQueuedSynchronizer.java:1197)
	at java.util.concurrent.locks.ReentrantReadWriteLock$WriteLock.lock(ReentrantReadWriteLock.java:945)
	at org.openstreetmap.josm.gui.MapView.removeLayer(MapView.java:532)
	at org.openstreetmap.josm.Main.removeLayer(Main.java:522)
	- locked <0x00000000c054bee8> (a org.openstreetmap.josm.gui.MainApplication)
	at org.openstreetmap.josm.data.validation.OsmValidator.layerRemoved(OsmValidator.java:357)
	at org.openstreetmap.josm.gui.MapView.fireLayerRemoved(MapView.java:220)
	at org.openstreetmap.josm.gui.MapView.removeLayer(MapView.java:562)
	at org.openstreetmap.josm.Main.removeLayer(Main.java:522)
	- locked <0x00000000c054bee8> (a org.openstreetmap.josm.gui.MainApplication)
	at org.openstreetmap.josm.gui.dialogs.LayerListDialog$DeleteLayerAction.actionPerformed(LayerListDialog.java:409)
	at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018)
	at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341)
	at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
	at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
	at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
	at java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:289)
	at java.awt.Component.processMouseEvent(Component.java:6516)
	at javax.swing.JComponent.processMouseEvent(JComponent.java:3321)
	at java.awt.Component.processEvent(Component.java:6281)
	at java.awt.Container.processEvent(Container.java:2229)
	at java.awt.Component.dispatchEventImpl(Component.java:4872)
	at java.awt.Container.dispatchEventImpl(Container.java:2287)
	at java.awt.Component.dispatchEvent(Component.java:4698)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832)
	at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492)
	at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)
	at java.awt.Container.dispatchEventImpl(Container.java:2273)
	at java.awt.Window.dispatchEventImpl(Window.java:2719)
	at java.awt.Component.dispatchEvent(Component.java:4698)
	at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:747)
	at java.awt.EventQueue.access$300(EventQueue.java:103)
	at java.awt.EventQueue$3.run(EventQueue.java:706)
	at java.awt.EventQueue$3.run(EventQueue.java:704)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
	at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
	at java.awt.EventQueue$4.run(EventQueue.java:720)
	at java.awt.EventQueue$4.run(EventQueue.java:718)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:717)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
	at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)

And no signs of the lock owner.

The hard thing about this, is it was third or fourth layer that I was removing, until the problem occurred.

Interesting is that I've got EDT violations from Mapillary just before. Not sure, if they were related (see #11730)

comment:7 by wiktorn, 9 years ago

In 8631/josm:

Move lock aquires closer to try/catch/finally, to silent FindBugs warnings. Addresses: #11689

comment:8 by bastiK, 9 years ago

Cc: michael2402 added

Changes to the synchronization of layers in MapView happened in #11631 and #11632.

comment:9 by michael2402, 9 years ago

Those locks guard the access to the josm layer. The problem is that a read lock is held while a write lock is requested by removeLayer.

        at org.openstreetmap.josm.gui.MapView.removeLayer(MapView.java:533)
        at org.openstreetmap.josm.Main.removeLayer(Main.java:522)
        - locked <0x00000000a4224500> (a org.openstreetmap.josm.gui.MainApplication)
        at org.openstreetmap.josm.data.validation.OsmValidator.layerRemoved(OsmValidator.java:357)
        at org.openstreetmap.josm.gui.MapView.fireLayerRemoved(MapView.java:220)
        at org.openstreetmap.josm.gui.MapView.removeLayer(MapView.java:563)

I'll look into it next week.

The problem with synchronizing the layer access is that many plugins have assumptions on the listeners called (order, ...) and even run tasks on other threads that call methods from MapView (like to get all layers) that need to be synchronized.

In this case, the OsmValidator removes a layer in it's layerRemoved listener.

So when removing l1 and l2 and having layer listeners a and b, we get:

  • a.layerRemoved(l1) -> calls removeLayer(l2)
  • a.layerRemoved(l2)
  • b.layerRemoved(l2) -> Might assume that l1 is still in the list of layers.
  • b.layerRemoved(l1)

Allowing this may not be a problem in this case, but with the edit layer change listeners, this may be a bigger problem (like removing the acitve edit layer).

My first version of synchronizing this used two mutexes:

  • One mutex to guard the data structures, both read and write access
  • One mutex that prevented multiple removeLayer/...-methods to be called in multiple threads. This whould allow them to be called recursively in the same thread.

comment:10 by wiktorn, 9 years ago

I don't think that we have an extensive lock contention on adding/removing layers. So maybe we can simplify approach here, and use only monitors/simple reentrant locks?

Is there any gain from added complication?

comment:11 by aceman, 9 years ago

I got the hang again with 8637 (Java 8u51):

Full thread dump Java HotSpot(TM) Server VM (25.51-b03 mixed mode):

"pool-20-thread-1" #190 prio=5 os_prio=0 tid=0xa38a8400 nid=0x22a7 waiting on condition [0x9e38d000]

java.lang.Thread.State: WAITING (parking)

at sun.misc.Unsafe.park(Native Method)

  • parking to wait for <0xae441c40> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject) at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175) at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039) at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442) at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1067) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745)

"TMS downloader" #76 prio=5 os_prio=0 tid=0x9fa91c00 nid=0x2b21 waiting on condition [0x9d72e000]

java.lang.Thread.State: WAITING (parking)

at sun.misc.Unsafe.park(Native Method)

  • parking to wait for <0xa9a1fa80> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject) at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175) at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039) at java.util.concurrent.LinkedBlockingDeque.takeFirst(LinkedBlockingDeque.java:492) at org.openstreetmap.josm.data.cache.HostLimitQueue.take(HostLimitQueue.java:85) at org.openstreetmap.josm.data.cache.HostLimitQueue.take(HostLimitQueue.java:30) at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1067) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745)

"TMS downloader" #75 prio=5 os_prio=0 tid=0x9daef800 nid=0x2b20 waiting on condition [0x9d77e000]

java.lang.Thread.State: WAITING (parking)

at sun.misc.Unsafe.park(Native Method)

  • parking to wait for <0xa9a1fa80> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject) at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175) at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039) at java.util.concurrent.LinkedBlockingDeque.takeFirst(LinkedBlockingDeque.java:492) at org.openstreetmap.josm.data.cache.HostLimitQueue.take(HostLimitQueue.java:85) at org.openstreetmap.josm.data.cache.HostLimitQueue.take(HostLimitQueue.java:30) at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1067) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745)

"TMS downloader" #74 prio=5 os_prio=0 tid=0xa0680000 nid=0x2b1f waiting on condition [0x9d7ce000]

java.lang.Thread.State: WAITING (parking)

at sun.misc.Unsafe.park(Native Method)

  • parking to wait for <0xa9a1fa80> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject) at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175) at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039) at java.util.concurrent.LinkedBlockingDeque.takeFirst(LinkedBlockingDeque.java:492) at org.openstreetmap.josm.data.cache.HostLimitQueue.take(HostLimitQueue.java:85) at org.openstreetmap.josm.data.cache.HostLimitQueue.take(HostLimitQueue.java:30) at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1067) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745)

"TMS downloader" #73 prio=5 os_prio=0 tid=0xa06f3400 nid=0x2b1e waiting on condition [0x9d81e000]

java.lang.Thread.State: WAITING (parking)

at sun.misc.Unsafe.park(Native Method)

  • parking to wait for <0xa9a1fa80> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject) at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175) at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039) at java.util.concurrent.LinkedBlockingDeque.takeFirst(LinkedBlockingDeque.java:492) at org.openstreetmap.josm.data.cache.HostLimitQueue.take(HostLimitQueue.java:85) at org.openstreetmap.josm.data.cache.HostLimitQueue.take(HostLimitQueue.java:30) at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1067) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745)

"TMS downloader" #72 prio=5 os_prio=0 tid=0x9d345000 nid=0x2b1d waiting on condition [0x9d86e000]

java.lang.Thread.State: WAITING (parking)

at sun.misc.Unsafe.park(Native Method)

  • parking to wait for <0xa9a1fa80> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject) at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175) at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039) at java.util.concurrent.LinkedBlockingDeque.takeFirst(LinkedBlockingDeque.java:492) at org.openstreetmap.josm.data.cache.HostLimitQueue.take(HostLimitQueue.java:85) at org.openstreetmap.josm.data.cache.HostLimitQueue.take(HostLimitQueue.java:30) at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1067) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745)

"TMS downloader" #69 prio=5 os_prio=0 tid=0x9d344000 nid=0x2b1a waiting on condition [0x9d8be000]

java.lang.Thread.State: WAITING (parking)

at sun.misc.Unsafe.park(Native Method)

  • parking to wait for <0xa9a1fa80> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject) at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175) at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039) at java.util.concurrent.LinkedBlockingDeque.takeFirst(LinkedBlockingDeque.java:492) at org.openstreetmap.josm.data.cache.HostLimitQueue.take(HostLimitQueue.java:85) at org.openstreetmap.josm.data.cache.HostLimitQueue.take(HostLimitQueue.java:30) at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1067) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745)

"TMS downloader" #68 prio=5 os_prio=0 tid=0x9e63d000 nid=0x2b19 waiting on condition [0x9cfc4000]

java.lang.Thread.State: WAITING (parking)

at sun.misc.Unsafe.park(Native Method)

  • parking to wait for <0xa9a1fa80> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject) at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175) at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039) at java.util.concurrent.LinkedBlockingDeque.takeFirst(LinkedBlockingDeque.java:492) at org.openstreetmap.josm.data.cache.HostLimitQueue.take(HostLimitQueue.java:85) at org.openstreetmap.josm.data.cache.HostLimitQueue.take(HostLimitQueue.java:30) at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1067) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745)

"Timer-4" #67 daemon prio=6 os_prio=0 tid=0x9da2e000 nid=0x2b18 in Object.wait() [0x9d45e000]

java.lang.Thread.State: WAITING (on object monitor)

at java.lang.Object.wait(Native Method)
at java.lang.Object.wait(Object.java:502)
at java.util.TimerThread.mainLoop(Timer.java:526)

  • locked <0xab227070> (a java.util.TaskQueue) at java.util.TimerThread.run(Timer.java:505)

"OSMJobThread 1" #64 daemon prio=6 os_prio=0 tid=0x9da4c000 nid=0x2b15 waiting on condition [0x9d66e000]

java.lang.Thread.State: WAITING (parking)

at sun.misc.Unsafe.park(Native Method)

  • parking to wait for <0xab1e16b0> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject) at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175) at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039) at java.util.concurrent.LinkedBlockingDeque.takeFirst(LinkedBlockingDeque.java:492) at java.util.concurrent.LinkedBlockingDeque.take(LinkedBlockingDeque.java:680) at org.openstreetmap.gui.jmapviewer.JobDispatcher$JobThread.executeJobs(JobDispatcher.java:161) at org.openstreetmap.gui.jmapviewer.JobDispatcher$JobThread.run(JobDispatcher.java:142)

"TMS downloader" #61 prio=5 os_prio=0 tid=0xa06e8800 nid=0x2b0d waiting on condition [0x9e95e000]

java.lang.Thread.State: WAITING (parking)

at sun.misc.Unsafe.park(Native Method)

  • parking to wait for <0xa9a1fa80> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject) at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175) at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039) at java.util.concurrent.LinkedBlockingDeque.takeFirst(LinkedBlockingDeque.java:492) at org.openstreetmap.josm.data.cache.HostLimitQueue.take(HostLimitQueue.java:85) at org.openstreetmap.josm.data.cache.HostLimitQueue.take(HostLimitQueue.java:30) at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1067) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745)

"TMS downloader" #60 prio=5 os_prio=0 tid=0xa06e7400 nid=0x2b0c waiting on condition [0x9e9ae000]

java.lang.Thread.State: WAITING (parking)

at sun.misc.Unsafe.park(Native Method)

  • parking to wait for <0xa9a1fa80> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject) at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175) at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039) at java.util.concurrent.LinkedBlockingDeque.takeFirst(LinkedBlockingDeque.java:492) at org.openstreetmap.josm.data.cache.HostLimitQueue.take(HostLimitQueue.java:85) at org.openstreetmap.josm.data.cache.HostLimitQueue.take(HostLimitQueue.java:30) at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1067) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745)

"TMS downloader" #59 prio=5 os_prio=0 tid=0xa06ed800 nid=0x2b0b waiting on condition [0x9e9fe000]

java.lang.Thread.State: WAITING (parking)

at sun.misc.Unsafe.park(Native Method)

  • parking to wait for <0xa9a1fa80> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject) at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175) at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039) at java.util.concurrent.LinkedBlockingDeque.takeFirst(LinkedBlockingDeque.java:492) at org.openstreetmap.josm.data.cache.HostLimitQueue.take(HostLimitQueue.java:85) at org.openstreetmap.josm.data.cache.HostLimitQueue.take(HostLimitQueue.java:30) at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1067) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745)

"pool-4-thread-4" #58 prio=5 os_prio=0 tid=0xa0648000 nid=0x2b08 waiting on condition [0x9e4ae000]

java.lang.Thread.State: WAITING (parking)

at sun.misc.Unsafe.park(Native Method)

  • parking to wait for <0xa7d88dc0> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject) at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175) at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039) at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442) at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1067) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745)

"pool-4-thread-3" #57 prio=5 os_prio=0 tid=0xa0646c00 nid=0x2b07 waiting on condition [0x9e4fe000]

java.lang.Thread.State: WAITING (parking)

at sun.misc.Unsafe.park(Native Method)

  • parking to wait for <0xa7d88dc0> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject) at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175) at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039) at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442) at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1067) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745)

"pool-4-thread-2" #56 prio=5 os_prio=0 tid=0xa0645000 nid=0x2b06 waiting on condition [0x9e764000]

java.lang.Thread.State: WAITING (parking)

at sun.misc.Unsafe.park(Native Method)

  • parking to wait for <0xa7d88dc0> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject) at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175) at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039) at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442) at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1067) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745)

"pool-4-thread-1" #55 prio=5 os_prio=0 tid=0xa0643c00 nid=0x2b05 waiting on condition [0x9e7b4000]

java.lang.Thread.State: WAITING (parking)

at sun.misc.Unsafe.park(Native Method)

  • parking to wait for <0xa7d88dc0> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject) at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175) at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039) at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442) at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1067) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745)

"Map Status Collector" #54 daemon prio=6 os_prio=0 tid=0xa0671800 nid=0x2b04 in Object.wait() [0x9e42d000]

java.lang.Thread.State: WAITING (on object monitor)

at java.lang.Object.wait(Native Method)
at java.lang.Object.wait(Object.java:502)
at java.awt.EventQueue.invokeAndWait(EventQueue.java:1313)

  • locked <0xe5422210> (a java.awt.EventQueue$1AWTInvocationLock) at java.awt.EventQueue.invokeAndWait(EventQueue.java:1294) at org.openstreetmap.josm.gui.MapStatus$Collector.run(MapStatus.java:384) at java.lang.Thread.run(Thread.java:745)

"Timer-3" #53 prio=6 os_prio=0 tid=0xa09b5000 nid=0x2b02 in Object.wait() [0x9f0fe000]

java.lang.Thread.State: WAITING (on object monitor)

at java.lang.Object.wait(Native Method)

  • waiting on <0xaa10b868> (a java.util.TaskQueue) at java.lang.Object.wait(Object.java:502) at java.util.TimerThread.mainLoop(Timer.java:526)
  • locked <0xaa10b868> (a java.util.TaskQueue) at java.util.TimerThread.run(Timer.java:505)

"pool-1-thread-1" #52 prio=5 os_prio=0 tid=0x9e062800 nid=0x2b01 waiting on condition [0x9f0ae000]

java.lang.Thread.State: WAITING (parking)

at sun.misc.Unsafe.park(Native Method)

  • parking to wait for <0xa7a83ec8> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject) at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175) at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039) at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442) at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1067) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745)

"DestroyJavaVM" #44 prio=5 os_prio=0 tid=0xf6507000 nid=0x2aa4 waiting on condition [0x00000000]

java.lang.Thread.State: RUNNABLE

"RemoteControl HTTPS Server" #41 daemon prio=5 os_prio=0 tid=0x9eeed800 nid=0x2ada runnable [0x9e904000]

java.lang.Thread.State: RUNNABLE

at java.net.PlainSocketImpl.socketAccept(Native Method)
at java.net.AbstractPlainSocketImpl.accept(AbstractPlainSocketImpl.java:404)
at java.net.ServerSocket.implAccept(ServerSocket.java:545)
at sun.security.ssl.SSLServerSocketImpl.accept(SSLServerSocketImpl.java:348)
at org.openstreetmap.josm.io.remotecontrol.RemoteControlHttpsServer.run(RemoteControlHttpsServer.java:418)

"Timer-2" #42 daemon prio=6 os_prio=0 tid=0x9fb26000 nid=0x2ad9 waiting on condition [0x9ef55000]

java.lang.Thread.State: WAITING (parking)

at sun.misc.Unsafe.park(Native Method)

  • parking to wait for <0xa9c95ec0> (a java.util.concurrent.locks.ReentrantReadWriteLock$NonfairSync) at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175) at java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt(AbstractQueuedSynchronizer.java:836) at java.util.concurrent.locks.AbstractQueuedSynchronizer.doAcquireShared(AbstractQueuedSynchronizer.java:967) at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireShared(AbstractQueuedSynchronizer.java:1283) at java.util.concurrent.locks.ReentrantReadWriteLock$ReadLock.lock(ReentrantReadWriteLock.java:727) at org.openstreetmap.josm.gui.MapView.getAllLayersAsList(MapView.java:892) at org.openstreetmap.josm.gui.dialogs.LayerListDialog$LayerListModel.getLayers(LayerListDialog.java:1446) at org.openstreetmap.josm.gui.dialogs.LayerListDialog$LayerListModel.propertyChange(LayerListDialog.java:1582) at java.beans.PropertyChangeSupport.fire(PropertyChangeSupport.java:335) at java.beans.PropertyChangeSupport.firePropertyChange(PropertyChangeSupport.java:327) at java.beans.PropertyChangeSupport.firePropertyChange(PropertyChangeSupport.java:263) at java.beans.PropertyChangeSupport.firePropertyChange(PropertyChangeSupport.java:303) at org.openstreetmap.josm.gui.layer.OsmDataLayer.setRequiresSaveToFile(OsmDataLayer.java:124) at org.openstreetmap.josm.gui.layer.OsmDataLayer.onPostSaveToFile(OsmDataLayer.java:797) at org.openstreetmap.josm.io.OsmExporter.save(OsmExporter.java:98) at org.openstreetmap.josm.io.OsmExporter.exportData(OsmExporter.java:67) at org.openstreetmap.josm.data.AutosaveTask.savelayer(AutosaveTask.java:191) at org.openstreetmap.josm.data.AutosaveTask.run(AutosaveTask.java:212)
  • locked <0xaa10ab00> (a java.lang.Object) at java.util.TimerThread.mainLoop(Timer.java:555) at java.util.TimerThread.run(Timer.java:505)

"RemoteControl HTTP Server" #38 daemon prio=5 os_prio=0 tid=0x9ee12000 nid=0x2ad7 runnable [0x9f26c000]

java.lang.Thread.State: RUNNABLE

at java.net.PlainSocketImpl.socketAccept(Native Method)
at java.net.AbstractPlainSocketImpl.accept(AbstractPlainSocketImpl.java:404)
at java.net.ServerSocket.implAccept(ServerSocket.java:545)
at java.net.ServerSocket.accept(ServerSocket.java:513)
at org.openstreetmap.josm.io.remotecontrol.RemoteControlHttpServer.run(RemoteControlHttpServer.java:101)

"com.google.inject.internal.util.$Finalizer" #34 daemon prio=5 os_prio=0 tid=0x9f1b5800 nid=0x2ad2 in Object.wait() [0x9f3fe000]

java.lang.Thread.State: WAITING (on object monitor)

at java.lang.Object.wait(Native Method)

  • waiting on <0xa933ccd8> (a java.lang.ref.ReferenceQueue$Lock) at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:143)
  • locked <0xa933ccd8> (a java.lang.ref.ReferenceQueue$Lock) at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:164) at com.google.inject.internal.util.$Finalizer.run(Finalizer.java:114)

"Timer-1" #30 daemon prio=5 os_prio=0 tid=0x9f8bac00 nid=0x2ad0 in Object.wait() [0x9f961000]

java.lang.Thread.State: WAITING (on object monitor)

at java.lang.Object.wait(Native Method)
at java.lang.Object.wait(Object.java:502)
at java.util.TimerThread.mainLoop(Timer.java:526)

  • locked <0xa893abc0> (a java.util.TaskQueue) at java.util.TimerThread.run(Timer.java:505)

"WeakCollectionCleaner" #29 daemon prio=8 os_prio=0 tid=0x9f867800 nid=0x2acf in Object.wait() [0x9f9b1000]

java.lang.Thread.State: WAITING (on object monitor)

at java.lang.Object.wait(Native Method)

  • waiting on <0xa84b2288> (a java.lang.ref.ReferenceQueue$Lock) at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:143)
  • locked <0xa84b2288> (a java.lang.ref.ReferenceQueue$Lock) at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:164) at org.geotools.util.WeakCollectionCleaner.run(WeakCollectionCleaner.java:72)

"Timer-0" #28 prio=5 os_prio=0 tid=0xa0142000 nid=0x2acd waiting on condition [0xa1cef000]

java.lang.Thread.State: WAITING (parking)

at sun.misc.Unsafe.park(Native Method)

  • parking to wait for <0xa9c95ec0> (a java.util.concurrent.locks.ReentrantReadWriteLock$NonfairSync) at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175) at java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt(AbstractQueuedSynchronizer.java:836) at java.util.concurrent.locks.AbstractQueuedSynchronizer.doAcquireShared(AbstractQueuedSynchronizer.java:967) at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireShared(AbstractQueuedSynchronizer.java:1283) at java.util.concurrent.locks.ReentrantReadWriteLock$ReadLock.lock(ReentrantReadWriteLock.java:727) at org.openstreetmap.josm.gui.MapView.getAllLayers(MapView.java:880) at org.openstreetmap.josm.gui.MapView.getLayersOfType(MapView.java:912) at iodb.ImageryOffsetTools.getTopImageryLayer(ImageryOffsetTools.java:32) at iodb.ImageryOffsetWatcher.checkOffset(ImageryOffsetWatcher.java:94)
  • locked <0xa8994438> (a iodb.ImageryOffsetWatcher) at iodb.ImageryOffsetWatcher.access$300(ImageryOffsetWatcher.java:18) at iodb.ImageryOffsetWatcher$IntervalOffsetChecker.run(ImageryOffsetWatcher.java:243) at java.util.TimerThread.mainLoop(Timer.java:555) at java.util.TimerThread.run(Timer.java:505)

"pool-2-thread-1" #27 prio=5 os_prio=0 tid=0x08948400 nid=0x2acc waiting on condition [0xa1db0000]

java.lang.Thread.State: WAITING (parking)

at sun.misc.Unsafe.park(Native Method)

  • parking to wait for <0xa7fdced8> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject) at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175) at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039) at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442) at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1067) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745)

"pool-5-thread-4" #25 prio=5 os_prio=0 tid=0xa0c0ec00 nid=0x2ac7 waiting on condition [0xa1f52000]

java.lang.Thread.State: WAITING (parking)

at sun.misc.Unsafe.park(Native Method)

  • parking to wait for <0xa89b48c0> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject) at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175) at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039) at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442) at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1067) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745)

"pool-5-thread-3" #24 prio=5 os_prio=0 tid=0xa0c0a000 nid=0x2ac6 waiting on condition [0xa20f2000]

java.lang.Thread.State: WAITING (parking)

at sun.misc.Unsafe.park(Native Method)

  • parking to wait for <0xa89b48c0> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject) at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175) at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039) at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442) at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1067) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745)

"pool-5-thread-2" #23 prio=5 os_prio=0 tid=0xa0c09800 nid=0x2ac5 waiting on condition [0xa2186000]

java.lang.Thread.State: WAITING (parking)

at sun.misc.Unsafe.park(Native Method)

  • parking to wait for <0xa89b48c0> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject) at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175) at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039) at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442) at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1067) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745)

"pool-5-thread-1" #22 prio=5 os_prio=0 tid=0xa0c09000 nid=0x2ac4 waiting on condition [0xa1a65000]

java.lang.Thread.State: WAITING (parking)

at sun.misc.Unsafe.park(Native Method)

  • parking to wait for <0xa89b48c0> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject) at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175) at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039) at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442) at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1067) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745)

"TimerQueue" #19 daemon prio=5 os_prio=0 tid=0xa1969000 nid=0x2abd waiting on condition [0xa1ab5000]

java.lang.Thread.State: WAITING (parking)

at sun.misc.Unsafe.park(Native Method)

  • parking to wait for <0xa7f64380> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject) at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175) at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039) at java.util.concurrent.DelayQueue.take(DelayQueue.java:211) at javax.swing.TimerQueue.run(TimerQueue.java:171) at java.lang.Thread.run(Thread.java:745)

"AWT-EventQueue-0" #16 prio=6 os_prio=0 tid=0xa2682000 nid=0x2abc waiting on condition [0xa1c53000]

java.lang.Thread.State: WAITING (parking)

at sun.misc.Unsafe.park(Native Method)

  • parking to wait for <0xa9c95ec0> (a java.util.concurrent.locks.ReentrantReadWriteLock$NonfairSync) at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175) at java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt(AbstractQueuedSynchronizer.java:836) at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireQueued(AbstractQueuedSynchronizer.java:870) at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquire(AbstractQueuedSynchronizer.java:1199) at java.util.concurrent.locks.ReentrantReadWriteLock$WriteLock.lock(ReentrantReadWriteLock.java:943) at org.openstreetmap.josm.gui.MapView.removeLayer(MapView.java:537) at org.openstreetmap.josm.Main.removeLayer(Main.java:522)
  • locked <0xa7f64c10> (a org.openstreetmap.josm.gui.MainApplication) at org.openstreetmap.josm.data.validation.OsmValidator.layerRemoved(OsmValidator.java:357) at org.openstreetmap.josm.gui.MapView.fireLayerRemoved(MapView.java:220) at org.openstreetmap.josm.gui.MapView.removeLayer(MapView.java:563) at org.openstreetmap.josm.Main.removeLayer(Main.java:522)
  • locked <0xa7f64c10> (a org.openstreetmap.josm.gui.MainApplication) at org.openstreetmap.josm.gui.dialogs.LayerListDialog$DeleteLayerAction.actionPerformed(LayerListDialog.java:409) at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022) at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2346) at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402) at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259) at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252) at java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:289) at java.awt.Component.processMouseEvent(Component.java:6525) at javax.swing.JComponent.processMouseEvent(JComponent.java:3324) at java.awt.Component.processEvent(Component.java:6290) at java.awt.Container.processEvent(Container.java:2234) at java.awt.Component.dispatchEventImpl(Component.java:4881) at java.awt.Container.dispatchEventImpl(Container.java:2292) at java.awt.Component.dispatchEvent(Component.java:4703) at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4898) at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4533) at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4462) at java.awt.Container.dispatchEventImpl(Container.java:2278) at java.awt.Window.dispatchEventImpl(Window.java:2750) at java.awt.Component.dispatchEvent(Component.java:4703) at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758) at java.awt.EventQueue.access$500(EventQueue.java:97) at java.awt.EventQueue$3.run(EventQueue.java:709) at java.awt.EventQueue$3.run(EventQueue.java:703) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75) at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:86) at java.awt.EventQueue$4.run(EventQueue.java:731) at java.awt.EventQueue$4.run(EventQueue.java:729) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75) at java.awt.EventQueue.dispatchEvent(EventQueue.java:728) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93) at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)

"AWT-Shutdown" #17 prio=5 os_prio=0 tid=0xa2680800 nid=0x2abb in Object.wait() [0xa22fe000]

java.lang.Thread.State: WAITING (on object monitor)

at java.lang.Object.wait(Native Method)
at java.lang.Object.wait(Object.java:502)
at sun.awt.AWTAutoShutdown.run(AWTAutoShutdown.java:295)

  • locked <0xa7c82ff0> (a java.lang.Object) at java.lang.Thread.run(Thread.java:745)

"AWT-XAWT" #13 daemon prio=6 os_prio=0 tid=0xa30efc00 nid=0x2ab5 runnable [0xa28f7000]

java.lang.Thread.State: RUNNABLE

at sun.awt.X11.XToolkit.waitForEvents(Native Method)
at sun.awt.X11.XToolkit.run(XToolkit.java:568)
at sun.awt.X11.XToolkit.run(XToolkit.java:532)
at java.lang.Thread.run(Thread.java:745)

"Java2D Disposer" #11 daemon prio=10 os_prio=0 tid=0xa30df000 nid=0x2ab4 in Object.wait() [0xa2947000]

java.lang.Thread.State: WAITING (on object monitor)

at java.lang.Object.wait(Native Method)
at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:143)

  • locked <0xa7dc7198> (a java.lang.ref.ReferenceQueue$Lock) at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:164) at sun.java2d.Disposer.run(Disposer.java:148) at java.lang.Thread.run(Thread.java:745)

"File Watcher" #10 prio=5 os_prio=0 tid=0xa305ec00 nid=0x2ab3 waiting on condition [0xa2fae000]

java.lang.Thread.State: WAITING (parking)

at sun.misc.Unsafe.park(Native Method)

  • parking to wait for <0xa7d90a08> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject) at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175) at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039) at java.util.concurrent.LinkedBlockingDeque.takeFirst(LinkedBlockingDeque.java:492) at java.util.concurrent.LinkedBlockingDeque.take(LinkedBlockingDeque.java:680) at sun.nio.fs.AbstractWatchService.take(AbstractWatchService.java:118) at org.openstreetmap.josm.io.FileWatcher.processEvents(FileWatcher.java:109) at org.openstreetmap.josm.io.FileWatcher.access$000(FileWatcher.java:30) at org.openstreetmap.josm.io.FileWatcher$1.run(FileWatcher.java:46) at java.lang.Thread.run(Thread.java:745)

"Thread-0" #9 daemon prio=5 os_prio=0 tid=0xa305d800 nid=0x2ab2 runnable [0xa2ffe000]

java.lang.Thread.State: RUNNABLE

at sun.nio.fs.LinuxWatchService.poll(Native Method)
at sun.nio.fs.LinuxWatchService.access$600(LinuxWatchService.java:47)
at sun.nio.fs.LinuxWatchService$Poller.run(LinuxWatchService.java:314)
at java.lang.Thread.run(Thread.java:745)

"Service Thread" #8 daemon prio=9 os_prio=0 tid=0xa3bab800 nid=0x2ab0 runnable [0x00000000]

java.lang.Thread.State: RUNNABLE

"C1 CompilerThread2" #7 daemon prio=9 os_prio=0 tid=0xa3ba8800 nid=0x2aaf waiting on condition [0x00000000]

java.lang.Thread.State: RUNNABLE

"C2 CompilerThread1" #6 daemon prio=9 os_prio=0 tid=0xa3ba7000 nid=0x2aae waiting on condition [0x00000000]

java.lang.Thread.State: RUNNABLE

"C2 CompilerThread0" #5 daemon prio=9 os_prio=0 tid=0xa3ba5000 nid=0x2aad waiting on condition [0x00000000]

java.lang.Thread.State: RUNNABLE

"Signal Dispatcher" #4 daemon prio=9 os_prio=0 tid=0xa3ba3800 nid=0x2aac waiting on condition [0x00000000]

java.lang.Thread.State: RUNNABLE

"Finalizer" #3 daemon prio=8 os_prio=0 tid=0xa3b85800 nid=0x2aab in Object.wait() [0xa3aae000]

java.lang.Thread.State: WAITING (on object monitor)

at java.lang.Object.wait(Native Method)
at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:143)

  • locked <0xa7c83fe0> (a java.lang.ref.ReferenceQueue$Lock) at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:164) at java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:209)

"Reference Handler" #2 daemon prio=10 os_prio=0 tid=0xa3b84000 nid=0x2aaa in Object.wait() [0xa3afe000]

java.lang.Thread.State: WAITING (on object monitor)

at java.lang.Object.wait(Native Method)
at java.lang.Object.wait(Object.java:502)
at java.lang.ref.Reference$ReferenceHandler.run(Reference.java:157)

  • locked <0xa7c841d0> (a java.lang.ref.Reference$Lock)

"VM Thread" os_prio=0 tid=0xa3b80c00 nid=0x2aa9 runnable

"GC task thread#0 (ParallelGC)" os_prio=0 tid=0xf6510800 nid=0x2aa5 runnable

"GC task thread#1 (ParallelGC)" os_prio=0 tid=0xf6511c00 nid=0x2aa6 runnable

"GC task thread#2 (ParallelGC)" os_prio=0 tid=0xf6513000 nid=0x2aa7 runnable

"GC task thread#3 (ParallelGC)" os_prio=0 tid=0xf6514400 nid=0x2aa8 runnable

"VM Periodic Task Thread" os_prio=0 tid=0xa3bae800 nid=0x2ab1 waiting on condition

JNI global references: 133009

Heap

PSYoungGen total 317184K, used 18134K [0xd1ac0000, 0xe6cc0000, 0xe7000000)

eden space 291328K, 5% used [0xd1ac0000,0xd2a79ad0,0xe3740000)
from space 25856K, 7% used [0xe5380000,0xe557c0e8,0xe6cc0000)
to space 27392K, 0% used [0xe3740000,0xe3740000,0xe5200000)

ParOldGen total 191232K, used 122965K [0xa7000000, 0xb2ac0000, 0xd1ac0000)

object space 191232K, 64% used [0xa7000000,0xae8155d0,0xb2ac0000)

Metaspace used 45197K, capacity 46831K, committed 47744K, reserved 48432K

comment:12 by wiktorn, 9 years ago

Summary: JOSM frequently hangs when removing a data layerJOSM hangs when removing last data layer when validation layer is present

If you remove manually validation errors layer, then no hangup occurs.

comment:13 by aceman, 9 years ago

Summary: JOSM hangs when removing last data layer when validation layer is presentJOSM frequently hangs when removing a data layer

Yes, that is quite possible. Usually I do that as I remove layers from the top, but I didn't do it this time and removed data layer directly.

comment:14 by aceman, 9 years ago

Summary: JOSM frequently hangs when removing a data layerJOSM hangs when removing last data layer when validation layer is present

comment:15 by wiktorn, 9 years ago

In 8642/josm:

Temporary fix lockups on data layer removal when Validation layer is present

Replace ReentrantReadWriteLock with Java Monitors.

Addresses: #11689

comment:16 by michael2402, 9 years ago

For me, this breaks the junit tests. I have a deadlock on:

[junit] Running org.openstreetmap.josm.actions.AlignInLineActionTest

The threads are AWT-EventQueue-0 / main:

2015-08-06 13:54:51
Full thread dump OpenJDK 64-Bit Server VM (24.79-b02 mixed mode):

"RMI TCP Connection(2)-127.0.0.1" daemon prio=10 tid=0x00007fe34c002800 nid=0x1398 runnable [0x00007fe384bb2000]
   java.lang.Thread.State: RUNNABLE
	at java.net.SocketInputStream.socketRead0(Native Method)
	at java.net.SocketInputStream.read(SocketInputStream.java:152)
	at java.net.SocketInputStream.read(SocketInputStream.java:122)
	at java.io.BufferedInputStream.fill(BufferedInputStream.java:235)
	at java.io.BufferedInputStream.read(BufferedInputStream.java:254)
	- locked <0x00000007b2302ea0> (a java.io.BufferedInputStream)
	at java.io.FilterInputStream.read(FilterInputStream.java:83)
	at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:549)
	at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:828)
	at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.access$400(TCPTransport.java:619)
	at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler$1.run(TCPTransport.java:684)
	at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler$1.run(TCPTransport.java:681)
	at java.security.AccessController.doPrivileged(Native Method)
	at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:681)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
	at java.lang.Thread.run(Thread.java:745)

   Locked ownable synchronizers:
	- <0x00000007b1e64d70> (a java.util.concurrent.ThreadPoolExecutor$Worker)

"JMX server connection timeout 33" daemon prio=10 tid=0x00007fe328010800 nid=0x1394 in Object.wait() [0x00007fe384cb4000]
   java.lang.Thread.State: TIMED_WAITING (on object monitor)
	at java.lang.Object.wait(Native Method)
	- waiting on <0x00000007b1ffc9b8> (a [I)
	at com.sun.jmx.remote.internal.ServerCommunicatorAdmin$Timeout.run(ServerCommunicatorAdmin.java:168)
	- locked <0x00000007b1ffc9b8> (a [I)
	at java.lang.Thread.run(Thread.java:745)

   Locked ownable synchronizers:
	- None

"RMI Scheduler(0)" daemon prio=10 tid=0x00007fe328002800 nid=0x1392 waiting on condition [0x00007fe384db5000]
   java.lang.Thread.State: TIMED_WAITING (parking)
	at sun.misc.Unsafe.park(Native Method)
	- parking to wait for  <0x00000007b1df01c0> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
	at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:226)
	at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:2082)
	at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1090)
	at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:807)
	at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1068)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
	at java.lang.Thread.run(Thread.java:745)

   Locked ownable synchronizers:
	- None

"RMI TCP Connection(1)-127.0.0.1" daemon prio=10 tid=0x00007fe34c001800 nid=0x1391 runnable [0x00007fe384eb5000]
   java.lang.Thread.State: RUNNABLE
	at java.net.SocketInputStream.socketRead0(Native Method)
	at java.net.SocketInputStream.read(SocketInputStream.java:152)
	at java.net.SocketInputStream.read(SocketInputStream.java:122)
	at java.io.BufferedInputStream.fill(BufferedInputStream.java:235)
	at java.io.BufferedInputStream.read(BufferedInputStream.java:254)
	- locked <0x00000007b1f66938> (a java.io.BufferedInputStream)
	at java.io.FilterInputStream.read(FilterInputStream.java:83)
	at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:549)
	at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:828)
	at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.access$400(TCPTransport.java:619)
	at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler$1.run(TCPTransport.java:684)
	at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler$1.run(TCPTransport.java:681)
	at java.security.AccessController.doPrivileged(Native Method)
	at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:681)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
	at java.lang.Thread.run(Thread.java:745)

   Locked ownable synchronizers:
	- <0x00000007b1e64810> (a java.util.concurrent.ThreadPoolExecutor$Worker)

"RMI TCP Accept-0" daemon prio=10 tid=0x00007fe358052000 nid=0x138e runnable [0x00007fe3852c5000]
   java.lang.Thread.State: RUNNABLE
	at java.net.PlainSocketImpl.socketAccept(Native Method)
	at java.net.AbstractPlainSocketImpl.accept(AbstractPlainSocketImpl.java:398)
	at java.net.ServerSocket.implAccept(ServerSocket.java:530)
	at java.net.ServerSocket.accept(ServerSocket.java:498)
	at sun.management.jmxremote.LocalRMIServerSocketFactory$1.accept(LocalRMIServerSocketFactory.java:52)
	at sun.rmi.transport.tcp.TCPTransport$AcceptLoop.executeAcceptLoop(TCPTransport.java:399)
	at sun.rmi.transport.tcp.TCPTransport$AcceptLoop.run(TCPTransport.java:371)
	at java.lang.Thread.run(Thread.java:745)

   Locked ownable synchronizers:
	- None

"Attach Listener" daemon prio=10 tid=0x00007fe37c001000 nid=0x138c waiting on condition [0x0000000000000000]
   java.lang.Thread.State: RUNNABLE

   Locked ownable synchronizers:
	- None

"Map Status Collector" daemon prio=10 tid=0x00007fe3c03db800 nid=0x12a3 in Object.wait() [0x00007fe3851c4000]
   java.lang.Thread.State: TIMED_WAITING (on object monitor)
	at java.lang.Object.wait(Native Method)
	- waiting on <0x00000007b11a1ad8> (a org.openstreetmap.josm.gui.MapStatus$Collector)
	at org.openstreetmap.josm.gui.MapStatus$Collector.run(MapStatus.java:367)
	- locked <0x00000007b11a1ad8> (a org.openstreetmap.josm.gui.MapStatus$Collector)
	at java.lang.Thread.run(Thread.java:745)

   Locked ownable synchronizers:
	- None

"Timer-0" prio=10 tid=0x00007fe3c04be000 nid=0x12a1 in Object.wait() [0x00007fe3853c6000]
   java.lang.Thread.State: WAITING (on object monitor)
	at java.lang.Object.wait(Native Method)
	- waiting on <0x00000007af56cc00> (a java.util.TaskQueue)
	at java.lang.Object.wait(Object.java:503)
	at java.util.TimerThread.mainLoop(Timer.java:526)
	- locked <0x00000007af56cc00> (a java.util.TaskQueue)
	at java.util.TimerThread.run(Timer.java:505)

   Locked ownable synchronizers:
	- None

"pool-3-thread-5" prio=10 tid=0x00007fe3c0815000 nid=0x12a0 waiting on condition [0x00007fe38595a000]
   java.lang.Thread.State: WAITING (parking)
	at sun.misc.Unsafe.park(Native Method)
	- parking to wait for  <0x00000007b4d452b8> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
	at java.util.concurrent.locks.LockSupport.park(LockSupport.java:186)
	at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2043)
	at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)
	at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1068)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
	at java.lang.Thread.run(Thread.java:745)

   Locked ownable synchronizers:
	- None

"pool-3-thread-4" prio=10 tid=0x00007fe3c0813800 nid=0x129f waiting on condition [0x00007fe385a5b000]
   java.lang.Thread.State: WAITING (parking)
	at sun.misc.Unsafe.park(Native Method)
	- parking to wait for  <0x00000007b4d452b8> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
	at java.util.concurrent.locks.LockSupport.park(LockSupport.java:186)
	at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2043)
	at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)
	at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1068)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
	at java.lang.Thread.run(Thread.java:745)

   Locked ownable synchronizers:
	- None

"pool-3-thread-3" prio=10 tid=0x00007fe3c0812000 nid=0x129e waiting on condition [0x00007fe385b5c000]
   java.lang.Thread.State: WAITING (parking)
	at sun.misc.Unsafe.park(Native Method)
	- parking to wait for  <0x00000007b4d452b8> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
	at java.util.concurrent.locks.LockSupport.park(LockSupport.java:186)
	at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2043)
	at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)
	at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1068)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
	at java.lang.Thread.run(Thread.java:745)

   Locked ownable synchronizers:
	- None

"pool-3-thread-2" prio=10 tid=0x00007fe3c0810000 nid=0x129d waiting on condition [0x00007fe385c5d000]
   java.lang.Thread.State: WAITING (parking)
	at sun.misc.Unsafe.park(Native Method)
	- parking to wait for  <0x00000007b4d452b8> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
	at java.util.concurrent.locks.LockSupport.park(LockSupport.java:186)
	at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2043)
	at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)
	at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1068)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
	at java.lang.Thread.run(Thread.java:745)

   Locked ownable synchronizers:
	- None

"pool-3-thread-1" prio=10 tid=0x00007fe3c080f000 nid=0x129c waiting on condition [0x00007fe385d5e000]
   java.lang.Thread.State: WAITING (parking)
	at sun.misc.Unsafe.park(Native Method)
	- parking to wait for  <0x00000007b4d452b8> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
	at java.util.concurrent.locks.LockSupport.park(LockSupport.java:186)
	at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2043)
	at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)
	at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1068)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
	at java.lang.Thread.run(Thread.java:745)

   Locked ownable synchronizers:
	- None

"TimerQueue" daemon prio=10 tid=0x00007fe354003800 nid=0x129b waiting on condition [0x00007fe387cad000]
   java.lang.Thread.State: WAITING (parking)
	at sun.misc.Unsafe.park(Native Method)
	- parking to wait for  <0x00000007b4ce3610> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
	at java.util.concurrent.locks.LockSupport.park(LockSupport.java:186)
	at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2043)
	at java.util.concurrent.DelayQueue.take(DelayQueue.java:209)
	at javax.swing.TimerQueue.run(TimerQueue.java:171)
	at java.lang.Thread.run(Thread.java:745)

   Locked ownable synchronizers:
	- <0x00000007b4ce3658> (a java.util.concurrent.locks.ReentrantLock$NonfairSync)

"AWT-EventQueue-0" prio=10 tid=0x00007fe3c06dc000 nid=0x1297 waiting for monitor entry [0x00007fe387dad000]
   java.lang.Thread.State: BLOCKED (on object monitor)
	at org.openstreetmap.josm.gui.MapView.getActiveLayer(MapView.java:962)
	- waiting to lock <0x00000007ae50ca10> (a java.util.ArrayList)
	at org.openstreetmap.josm.actions.SaveActionBase.updateEnabledState(SaveActionBase.java:119)
	at org.openstreetmap.josm.actions.JosmAction$LayerChangeAdapter$1.run(JosmAction.java:280)
	at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:312)
	at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:745)
	at java.awt.EventQueue.access$300(EventQueue.java:103)
	at java.awt.EventQueue$3.run(EventQueue.java:706)
	at java.awt.EventQueue$3.run(EventQueue.java:704)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:715)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
	at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)

   Locked ownable synchronizers:
	- None

"AWT-Shutdown" prio=10 tid=0x00007fe3c06db000 nid=0x1296 in Object.wait() [0x00007fe3a01fc000]
   java.lang.Thread.State: WAITING (on object monitor)
	at java.lang.Object.wait(Native Method)
	- waiting on <0x00000007b4d447d8> (a java.lang.Object)
	at java.lang.Object.wait(Object.java:503)
	at sun.awt.AWTAutoShutdown.run(AWTAutoShutdown.java:296)
	- locked <0x00000007b4d447d8> (a java.lang.Object)
	at java.lang.Thread.run(Thread.java:745)

   Locked ownable synchronizers:
	- None

"Java2D Disposer" daemon prio=10 tid=0x00007fe3c06a6800 nid=0x1295 in Object.wait() [0x00007fe3a02fd000]
   java.lang.Thread.State: WAITING (on object monitor)
	at java.lang.Object.wait(Native Method)
	- waiting on <0x00000007b48cb058> (a java.lang.ref.ReferenceQueue$Lock)
	at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:135)
	- locked <0x00000007b48cb058> (a java.lang.ref.ReferenceQueue$Lock)
	at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:151)
	at sun.java2d.Disposer.run(Disposer.java:145)
	at java.lang.Thread.run(Thread.java:745)

   Locked ownable synchronizers:
	- None

"File Watcher" prio=10 tid=0x00007fe3c0568000 nid=0x1292 waiting on condition [0x00007fe3a347b000]
   java.lang.Thread.State: WAITING (parking)
	at sun.misc.Unsafe.park(Native Method)
	- parking to wait for  <0x00000007b50082a0> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
	at java.util.concurrent.locks.LockSupport.park(LockSupport.java:186)
	at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2043)
	at java.util.concurrent.LinkedBlockingDeque.takeFirst(LinkedBlockingDeque.java:489)
	at java.util.concurrent.LinkedBlockingDeque.take(LinkedBlockingDeque.java:678)
	at sun.nio.fs.AbstractWatchService.take(AbstractWatchService.java:118)
	at org.openstreetmap.josm.io.FileWatcher.processEvents(FileWatcher.java:109)
	at org.openstreetmap.josm.io.FileWatcher.access$000(FileWatcher.java:30)
	at org.openstreetmap.josm.io.FileWatcher$1.run(FileWatcher.java:46)
	at java.lang.Thread.run(Thread.java:745)

   Locked ownable synchronizers:
	- None

"Thread-1" daemon prio=10 tid=0x00007fe3c0557800 nid=0x1291 runnable [0x00007fe3a357c000]
   java.lang.Thread.State: RUNNABLE
	at sun.nio.fs.LinuxWatchService.poll(Native Method)
	at sun.nio.fs.LinuxWatchService.access$600(LinuxWatchService.java:47)
	at sun.nio.fs.LinuxWatchService$Poller.run(LinuxWatchService.java:311)
	at java.lang.Thread.run(Thread.java:745)

   Locked ownable synchronizers:
	- None

"Service Thread" daemon prio=10 tid=0x00007fe3c03c0800 nid=0x128f runnable [0x0000000000000000]
   java.lang.Thread.State: RUNNABLE

   Locked ownable synchronizers:
	- None

"C2 CompilerThread1" daemon prio=10 tid=0x00007fe3c0495000 nid=0x128e waiting on condition [0x0000000000000000]
   java.lang.Thread.State: RUNNABLE

   Locked ownable synchronizers:
	- None

"C2 CompilerThread0" daemon prio=10 tid=0x00007fe3c0494000 nid=0x128d waiting on condition [0x0000000000000000]
   java.lang.Thread.State: RUNNABLE

   Locked ownable synchronizers:
	- None

"Signal Dispatcher" daemon prio=10 tid=0x00007fe3c01f9000 nid=0x128c runnable [0x0000000000000000]
   java.lang.Thread.State: RUNNABLE

   Locked ownable synchronizers:
	- None

"Finalizer" daemon prio=10 tid=0x00007fe3c01ce000 nid=0x128b in Object.wait() [0x00007fe3a9cbe000]
   java.lang.Thread.State: WAITING (on object monitor)
	at java.lang.Object.wait(Native Method)
	- waiting on <0x00000007b4c2b640> (a java.lang.ref.ReferenceQueue$Lock)
	at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:135)
	- locked <0x00000007b4c2b640> (a java.lang.ref.ReferenceQueue$Lock)
	at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:151)
	at java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:209)

   Locked ownable synchronizers:
	- None

"Reference Handler" daemon prio=10 tid=0x00007fe3c01cc000 nid=0x128a in Object.wait() [0x00007fe3a9dbf000]
   java.lang.Thread.State: WAITING (on object monitor)
	at java.lang.Object.wait(Native Method)
	- waiting on <0x00000007b4c289d0> (a java.lang.ref.Reference$Lock)
	at java.lang.Object.wait(Object.java:503)
	at java.lang.ref.Reference$ReferenceHandler.run(Reference.java:133)
	- locked <0x00000007b4c289d0> (a java.lang.ref.Reference$Lock)

   Locked ownable synchronizers:
	- None

"main" prio=10 tid=0x00007fe3c000c000 nid=0x1280 in Object.wait() [0x00007fe3c830f000]
   java.lang.Thread.State: WAITING (on object monitor)
	at java.lang.Object.wait(Native Method)
	- waiting on <0x00000007b17595e0> (a java.awt.EventQueue$1AWTInvocationLock)
	at java.lang.Object.wait(Object.java:503)
	at java.awt.EventQueue.invokeAndWait(EventQueue.java:1282)
	- locked <0x00000007b17595e0> (a java.awt.EventQueue$1AWTInvocationLock)
	at java.awt.EventQueue.invokeAndWait(EventQueue.java:1263)
	at javax.swing.SwingUtilities.invokeAndWait(SwingUtilities.java:1347)
	at org.openstreetmap.josm.gui.util.GuiHelper.runInEDTAndWait(GuiHelper.java:112)
	at org.openstreetmap.josm.gui.dialogs.LayerListDialog$ActivateLayerAction.updateEnabledState(LayerListDialog.java:699)
	at org.openstreetmap.josm.gui.dialogs.LayerListDialog$ActivateLayerAction.layerAdded(LayerListDialog.java:723)
	at org.openstreetmap.josm.gui.MapView.fireLayerAdded(MapView.java:210)
	at org.openstreetmap.josm.gui.MapView.addLayer(MapView.java:419)
	- locked <0x00000007ae50ca10> (a java.util.ArrayList)
	at org.openstreetmap.josm.Main.addLayer(Main.java:759)
	- locked <0x00000007b5008ab0> (a org.openstreetmap.josm.gui.MainApplication)
	at org.openstreetmap.josm.Main.addLayer(Main.java:741)
	- locked <0x00000007b5008ab0> (a org.openstreetmap.josm.gui.MainApplication)
	at org.openstreetmap.josm.Main.addLayer(Main.java:728)
	at org.openstreetmap.josm.actions.AlignInLineActionTest.nodesOpenWay(AlignInLineActionTest.java:58)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:606)
	at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47)
	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
	at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44)
	at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
	at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:271)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:70)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238)
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63)
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236)
	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53)
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229)
	at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:309)
	at junit.framework.JUnit4TestAdapter.run(JUnit4TestAdapter.java:38)
	at org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.run(JUnitTestRunner.java:532)
	at org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.launch(JUnitTestRunner.java:1165)
	at org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.main(JUnitTestRunner.java:988)

   Locked ownable synchronizers:
	- None

"VM Thread" prio=10 tid=0x00007fe3c01c7800 nid=0x1289 runnable 

"GC task thread#0 (ParallelGC)" prio=10 tid=0x00007fe3c0022000 nid=0x1281 runnable 

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

"GC task thread#2 (ParallelGC)" prio=10 tid=0x00007fe3c0026000 nid=0x1283 runnable 

"GC task thread#3 (ParallelGC)" prio=10 tid=0x00007fe3c0027800 nid=0x1284 runnable 

"GC task thread#4 (ParallelGC)" prio=10 tid=0x00007fe3c0029800 nid=0x1285 runnable 

"GC task thread#5 (ParallelGC)" prio=10 tid=0x00007fe3c002b800 nid=0x1286 runnable 

"GC task thread#6 (ParallelGC)" prio=10 tid=0x00007fe3c002d000 nid=0x1287 runnable 

"GC task thread#7 (ParallelGC)" prio=10 tid=0x00007fe3c002f000 nid=0x1288 runnable 

"VM Periodic Task Thread" prio=10 tid=0x00007fe3c0498800 nid=0x1290 waiting on condition 

JNI global references: 3246

Basically we would need a reverse of that patch:
https://github.com/michaelzangl/josm/commit/18354520a520d2a1268b2a6cba71387d403a31fa

I also reverted https://josm.openstreetmap.de/changeset/8631/josm/. It breaks locking because the locked datastructures (layers/activeLayer/...) are moved out of the lock block.

comment:17 by wiktorn, 9 years ago

Do I understand you correctly - we just go back to the version without synchronizations, so I rollback:
[8642], [8631], [8551]

As it was in pre 8551.

comment:18 by michael2402, 9 years ago

No, this is the version with synchromisation the way it was originally implemented by me to handle both such situations (recursing in the listeners and starting a EDT worker thread).

comment:19 by wiktorn, 9 years ago

I've did the merge of your changes here:
https://github.com/wiktorn/josm/blob/random_fix/src/org/openstreetmap/josm/gui/MapView.java

Can you have a look?

Also - can you explain, what was the use of creating Runnable objects in setActiveLayer and setEditLayer

by wiktorn, 9 years ago

comment:20 by wiktorn, 9 years ago

@michael2402:

Instead of your patches, I would like to consider attached patch. It moves the listeners notification outside of synchronized sections. My feeling is, that we don't need to keep monitors when notifying listeners, so I guess, that's the simplest solution we can use.

comment:21 by wiktorn, 9 years ago

In 8646/josm:

Move listeners notification outside synchronized sections.

Addresses: #11689

comment:22 by Don-vip, 9 years ago

Milestone: 15.08
Priority: normalmajor

comment:23 by wiktorn, 9 years ago

Resolution: fixed
Status: needinfoclosed

As [8646] mitigates this problem, I'm closing this one, an reopen #11631 - so we can verify, if synchronization present right now are sufficient.

This will better reflect situation in JOSM latest.

comment:24 by michael2402, 9 years ago

This is basically the solution I proposed. The difference is that I also locked removeLayer/addLayer/... with a separate lock so that no two of them may be called simultaneously. Since the listener code is locked by itself, I don't think it will crash if two listeners get informed simultaneously, but listeners should be made thread safe (we should at least mention that in the javadoc for the layer listeners).

comment:25 by michael2402, 9 years ago

@wiktorn

Sorry for the late reply. The merged version looks good for me. The Runnables are unused and can be removed.

comment:26 by Don-vip, 8 years ago

In 8925/josm:

see #11631 - see #11689 - remove commented code causing javadoc warnings

Modify Ticket

Change Properties
Set your email in Preferences
Action
as closed The owner will remain aceman.
as The resolution will be set.
The resolution will be deleted. Next status will be 'reopened'.

Add Comment


E-mail address and name can be saved in the Preferences .
 
Note: See TracTickets for help on using tickets.