Modify

Opened 16 years ago

Closed 16 years ago

#4382 closed defect (fixed)

JOSM hangs at "Fetching a package of relations" when doing "Update selection" for ~150k nodes

Reported by: avarab@… Owned by: team
Priority: major Milestone:
Component: Core Version: latest
Keywords: quadbuckets Cc:

Description

  1. Select ~150k nodes
  2. Do "Update selection"
  3. JOSM seemingly updates all the nodes
  4. JOSM hangs with "Fetching a package of relations". Closing the dialog or pressing "Cancel" does nothing

Heres' kill -QUIT output:

2010-01-17 01:04:33
Full thread dump Java HotSpot(TM) Server VM (14.2-b01 mixed mode):

"Map Status Collector" daemon prio=10 tid=0x6dcc9400 nid=0x5ae9 in Object.wait() [0x6e647000]
   java.lang.Thread.State: WAITING (on object monitor)
	at java.lang.Object.wait(Native Method)
	- waiting on <0x7b480710> (a org.openstreetmap.josm.gui.MapStatus$Collector)
	at java.lang.Object.wait(Object.java:485)
	at org.openstreetmap.josm.gui.MapStatus$Collector.run(MapStatus.java:148)
	- locked <0x7b480710> (a org.openstreetmap.josm.gui.MapStatus$Collector)
	at java.lang.Thread.run(Thread.java:619)

"pool-1-thread-1" prio=10 tid=0x09f0e400 nid=0x59a9 in Object.wait() [0x6e73a000]
   java.lang.Thread.State: WAITING (on object monitor)
	at java.lang.Object.wait(Native Method)
	- waiting on <0x80604250> (a java.awt.EventQueue$1AWTInvocationLock)
	at java.lang.Object.wait(Object.java:485)
	at java.awt.EventQueue.invokeAndWait(EventQueue.java:992)
	- locked <0x80604250> (a java.awt.EventQueue$1AWTInvocationLock)
	at org.openstreetmap.josm.gui.PleaseWaitRunnable.doRealRun(PleaseWaitRunnable.java:86)
	at org.openstreetmap.josm.gui.PleaseWaitRunnable.run(PleaseWaitRunnable.java:123)
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
	at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
	at java.util.concurrent.FutureTask.run(FutureTask.java:138)
	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
	at java.lang.Thread.run(Thread.java:619)

"Timer-0" daemon prio=10 tid=0x09df3c00 nid=0x599f in Object.wait() [0x6e35c000]
   java.lang.Thread.State: WAITING (on object monitor)
	at java.lang.Object.wait(Native Method)
	- waiting on <0x747105e0> (a java.util.TaskQueue)
	at java.lang.Object.wait(Object.java:485)
	at java.util.TimerThread.mainLoop(Timer.java:483)
	- locked <0x747105e0> (a java.util.TaskQueue)
	at java.util.TimerThread.run(Timer.java:462)

"OSMJobThread 1" daemon prio=10 tid=0x6ea56c00 nid=0x599e waiting on condition [0x6e86f000]
   java.lang.Thread.State: WAITING (parking)
	at sun.misc.Unsafe.park(Native Method)
	- parking to wait for  <0x746ce0d0> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
	at java.util.concurrent.locks.LockSupport.park(LockSupport.java:158)
	at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1925)
	at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:358)
	at org.openstreetmap.gui.jmapviewer.JobDispatcher$JobThread.executeJobs(JobDispatcher.java:111)
	at org.openstreetmap.gui.jmapviewer.JobDispatcher$JobThread.run(JobDispatcher.java:98)

"DestroyJavaVM" prio=10 tid=0x09929000 nid=0x5979 waiting on condition [0x00000000]
   java.lang.Thread.State: RUNNABLE

"TimerQueue" daemon prio=10 tid=0x09b82000 nid=0x598d in Object.wait() [0x6e6e9000]
   java.lang.Thread.State: WAITING (on object monitor)
	at java.lang.Object.wait(Native Method)
	- waiting on <0x73b5d7a8> (a javax.swing.TimerQueue)
	at javax.swing.TimerQueue.run(TimerQueue.java:236)
	- locked <0x73b5d7a8> (a javax.swing.TimerQueue)
	at java.lang.Thread.run(Thread.java:619)

"AWT-EventQueue-0" prio=10 tid=0x6ea73c00 nid=0x5988 runnable [0x6e8c0000]
   java.lang.Thread.State: RUNNABLE
	at java.util.ArrayList.indexOf(ArrayList.java:216)
	at java.util.ArrayList.contains(ArrayList.java:199)
	at org.openstreetmap.josm.data.osm.QuadBuckets$QBLevel.find_exact(QuadBuckets.java:397)
	at org.openstreetmap.josm.data.osm.QuadBuckets$QBLevel.find_exact_child(QuadBuckets.java:410)
	at org.openstreetmap.josm.data.osm.QuadBuckets$QBLevel.find_exact(QuadBuckets.java:399)
	at org.openstreetmap.josm.data.osm.QuadBuckets$QBLevel.find_exact_child(QuadBuckets.java:410)
	at org.openstreetmap.josm.data.osm.QuadBuckets$QBLevel.find_exact(QuadBuckets.java:399)
	at org.openstreetmap.josm.data.osm.QuadBuckets$QBLevel.find_exact_child(QuadBuckets.java:410)
	at org.openstreetmap.josm.data.osm.QuadBuckets$QBLevel.find_exact(QuadBuckets.java:399)
	at org.openstreetmap.josm.data.osm.QuadBuckets$QBLevel.find_exact_child(QuadBuckets.java:410)
	at org.openstreetmap.josm.data.osm.QuadBuckets$QBLevel.find_exact(QuadBuckets.java:399)
	at org.openstreetmap.josm.data.osm.QuadBuckets$QBLevel.find_exact_child(QuadBuckets.java:410)
	at org.openstreetmap.josm.data.osm.QuadBuckets$QBLevel.find_exact(QuadBuckets.java:399)
	at org.openstreetmap.josm.data.osm.QuadBuckets$QBLevel.find_exact_child(QuadBuckets.java:410)
	at org.openstreetmap.josm.data.osm.QuadBuckets$QBLevel.find_exact(QuadBuckets.java:399)
	at org.openstreetmap.josm.data.osm.QuadBuckets$QBLevel.find_exact_child(QuadBuckets.java:410)
	at org.openstreetmap.josm.data.osm.QuadBuckets$QBLevel.find_exact(QuadBuckets.java:399)
	at org.openstreetmap.josm.data.osm.QuadBuckets$QBLevel.find_exact_child(QuadBuckets.java:410)
	at org.openstreetmap.josm.data.osm.QuadBuckets$QBLevel.find_exact(QuadBuckets.java:399)
	at org.openstreetmap.josm.data.osm.QuadBuckets$QBLevel.find_exact_child(QuadBuckets.java:410)
	at org.openstreetmap.josm.data.osm.QuadBuckets$QBLevel.find_exact(QuadBuckets.java:399)
	at org.openstreetmap.josm.data.osm.QuadBuckets$QBLevel.find_exact_child(QuadBuckets.java:410)
	at org.openstreetmap.josm.data.osm.QuadBuckets$QBLevel.find_exact(QuadBuckets.java:399)
	at org.openstreetmap.josm.data.osm.QuadBuckets$QBLevel.find_exact_child(QuadBuckets.java:410)
	at org.openstreetmap.josm.data.osm.QuadBuckets$QBLevel.find_exact(QuadBuckets.java:399)
	at org.openstreetmap.josm.data.osm.QuadBuckets$QBLevel.find_exact_child(QuadBuckets.java:410)
	at org.openstreetmap.josm.data.osm.QuadBuckets$QBLevel.find_exact(QuadBuckets.java:399)
	at org.openstreetmap.josm.data.osm.QuadBuckets$QBLevel.find_exact_child(QuadBuckets.java:410)
	at org.openstreetmap.josm.data.osm.QuadBuckets$QBLevel.find_exact(QuadBuckets.java:399)
	at org.openstreetmap.josm.data.osm.QuadBuckets$QBLevel.find_exact_child(QuadBuckets.java:410)
	at org.openstreetmap.josm.data.osm.QuadBuckets$QBLevel.find_exact(QuadBuckets.java:399)
	at org.openstreetmap.josm.data.osm.QuadBuckets$QBLevel.find_exact_child(QuadBuckets.java:410)
	at org.openstreetmap.josm.data.osm.QuadBuckets$QBLevel.find_exact(QuadBuckets.java:399)
	at org.openstreetmap.josm.data.osm.QuadBuckets$QBLevel.find_exact_child(QuadBuckets.java:410)
	at org.openstreetmap.josm.data.osm.QuadBuckets$QBLevel.find_exact(QuadBuckets.java:399)
	at org.openstreetmap.josm.data.osm.QuadBuckets$QBLevel.find_exact_child(QuadBuckets.java:410)
	at org.openstreetmap.josm.data.osm.QuadBuckets$QBLevel.find_exact(QuadBuckets.java:399)
	at org.openstreetmap.josm.data.osm.QuadBuckets.remove(QuadBuckets.java:789)
	at org.openstreetmap.josm.data.osm.DataSet.reindexNode(DataSet.java:789)
	at org.openstreetmap.josm.data.osm.DataSet.fireNodeMoved(DataSet.java:872)
	at org.openstreetmap.josm.data.osm.Node.setCoor(Node.java:26)
	at org.openstreetmap.josm.data.osm.Node.mergeFrom(Node.java:136)
	at org.openstreetmap.josm.data.osm.DataSetMerger.mergeById(DataSetMerger.java:325)
	at org.openstreetmap.josm.data.osm.DataSetMerger.mergePrimitive(DataSetMerger.java:82)
	at org.openstreetmap.josm.data.osm.DataSetMerger.merge(DataSetMerger.java:367)
	at org.openstreetmap.josm.gui.layer.OsmDataLayer.mergeFrom(OsmDataLayer.java:283)
	at org.openstreetmap.josm.gui.io.UpdatePrimitivesTask$1.run(UpdatePrimitivesTask.java:87)
	at org.openstreetmap.josm.gui.io.UpdatePrimitivesTask.finish(UpdatePrimitivesTask.java:93)
	at org.openstreetmap.josm.gui.PleaseWaitRunnable$1.run(PleaseWaitRunnable.java:88)
	at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:199)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:597)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:178)
	at java.awt.Dialog$1.run(Dialog.java:1045)
	at java.awt.Dialog$3.run(Dialog.java:1097)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.awt.Dialog.show(Dialog.java:1095)
	at java.awt.Component.show(Component.java:1563)
	at java.awt.Component.setVisible(Component.java:1515)
	at java.awt.Window.setVisible(Window.java:841)
	at java.awt.Dialog.setVisible(Dialog.java:985)
	at org.openstreetmap.josm.gui.progress.PleaseWaitProgressMonitor$3.run(PleaseWaitProgressMonitor.java:83)
	at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:597)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
	at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)

"AWT-Shutdown" prio=10 tid=0x6ea73400 nid=0x5987 in Object.wait() [0x6e992000]
   java.lang.Thread.State: WAITING (on object monitor)
	at java.lang.Object.wait(Native Method)
	- waiting on <0x73a74ac8> (a java.lang.Object)
	at java.lang.Object.wait(Object.java:485)
	at sun.awt.AWTAutoShutdown.run(AWTAutoShutdown.java:259)
	- locked <0x73a74ac8> (a java.lang.Object)
	at java.lang.Thread.run(Thread.java:619)

"AWT-XAWT" daemon prio=10 tid=0x6ea45400 nid=0x5985 runnable [0x6e9e3000]
   java.lang.Thread.State: RUNNABLE
	at sun.awt.X11.XToolkit.waitForEvents(Native Method)
	at sun.awt.X11.XToolkit.run(XToolkit.java:548)
	at sun.awt.X11.XToolkit.run(XToolkit.java:523)
	at java.lang.Thread.run(Thread.java:619)

"Java2D Disposer" daemon prio=10 tid=0x6ea04400 nid=0x5984 in Object.wait() [0x6eb6c000]
   java.lang.Thread.State: WAITING (on object monitor)
	at java.lang.Object.wait(Native Method)
	- waiting on <0x73a49c30> (a java.lang.ref.ReferenceQueue$Lock)
	at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:118)
	- locked <0x73a49c30> (a java.lang.ref.ReferenceQueue$Lock)
	at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:134)
	at sun.java2d.Disposer.run(Disposer.java:125)
	at java.lang.Thread.run(Thread.java:619)

"Low Memory Detector" daemon prio=10 tid=0x099c4400 nid=0x5982 runnable [0x00000000]
   java.lang.Thread.State: RUNNABLE

"CompilerThread1" daemon prio=10 tid=0x099c2800 nid=0x5981 waiting on condition [0x00000000]
   java.lang.Thread.State: RUNNABLE

"CompilerThread0" daemon prio=10 tid=0x099bf800 nid=0x5980 waiting on condition [0x00000000]
   java.lang.Thread.State: RUNNABLE

"Signal Dispatcher" daemon prio=10 tid=0x099be000 nid=0x597f waiting on condition [0x00000000]
   java.lang.Thread.State: RUNNABLE

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

"Reference Handler" daemon prio=10 tid=0x099a9400 nid=0x597d in Object.wait() [0x6f1c9000]
   java.lang.Thread.State: WAITING (on object monitor)
	at java.lang.Object.wait(Native Method)
	- waiting on <0x73a50e38> (a java.lang.ref.Reference$Lock)
	at java.lang.Object.wait(Object.java:485)
	at java.lang.ref.Reference$ReferenceHandler.run(Reference.java:116)
	- locked <0x73a50e38> (a java.lang.ref.Reference$Lock)

"VM Thread" prio=10 tid=0x099a5400 nid=0x597c runnable 

"GC task thread#0 (ParallelGC)" prio=10 tid=0x0992fc00 nid=0x597a runnable 

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

"VM Periodic Task Thread" prio=10 tid=0x099c6400 nid=0x5983 waiting on condition 

JNI global references: 5587

Heap
 PSYoungGen      total 46848K, used 35984K [0xac760000, 0xb2770000, 0xb3920000)
  eden space 41600K, 73% used [0xac760000,0xae564230,0xaf000000)
  from space 5248K, 100% used [0xaf000000,0xaf520000,0xaf520000)
  to   space 28160K, 0% used [0xb0bf0000,0xb0bf0000,0xb2770000)
 PSOldGen        total 260544K, used 218593K [0x73920000, 0x83790000, 0xac760000)
  object space 260544K, 83% used [0x73920000,0x80e98718,0x83790000)
 PSPermGen       total 25088K, used 21124K [0x6f920000, 0x711a0000, 0x73920000)
  object space 25088K, 84% used [0x6f920000,0x70dc1018,0x711a0000)

Attachments (0)

Change History (1)

comment:1 by jttt, 16 years ago

Resolution: fixed
Status: newclosed

Josm doesn't hang, it only takes too long to reindex nodes because QuadBuckets.remove method was too slow. That's fixed in r3154

Modify Ticket

Change Properties
Set your email in Preferences
Action
as closed The owner will remain team.
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.