#19638 closed defect (fixed)
ConcurrentModificationException in PluginListParser.addPluginInformation
Reported by: | JanVanBekkum | Owned by: | team |
---|---|---|---|
Priority: | normal | Milestone: | 20.08 |
Component: | Core | Version: | |
Keywords: | template_report | Cc: |
Description
What steps will reproduce the problem?
- Start JOSM
What is the expected result?
Initial screen
What happens instead?
Crash
Please provide any additional information below. Attach a screenshot if possible.
URL:https://josm.openstreetmap.de/svn/trunk Repository:UUID: 0c6e7542-c601-0410-84e7-c038aed88b3b Last:Changed Date: 2020-07-30 12:44:04 +0200 (Thu, 30 Jul 2020) Build-Date:2020-07-31 01:30:49 Revision:16812 Relative:URL: ^/trunk Identification: JOSM/1.5 (16812 en_GB) Windows 10 64-Bit OS Build number: Windows 10 Home 1909 (18363) Memory Usage: 247 MB / 989 MB (162 MB allocated, but free) Java version: 1.8.0_261-b12, Oracle Corporation, Java HotSpot(TM) Client VM Look and Feel: com.sun.java.swing.plaf.windows.WindowsLookAndFeel Screen: \Display0 3440x1440 (scaling 1.0x1.0), \Display1 1920x1080 (scaling 1.0x1.0) Maximum Screen Size: 3440x1440 Best cursor sizes: 16x16 -> 32x32, 32x32 -> 32x32 Plugins: + BuildingGeneralization (23) + CustomizePublicTransportStop (35248) + DirectUpload (35499) + Mapillary + OpeningHoursEditor (35414) + apache-commons (35362) + apache-http (35092) + areaselector (359) + austriaaddresshelper (57) + buildings_tools (35500) + ejml (35313) + imagery_offset_db (35405) + jna (35092) + log4j (35092) + public_transport (35405) + tageditor (35258) + turnrestrictions (35515) + utilsplugin2 (35487) Tagging presets: + D:\OneDrive\Open Streetmap\Campground Template.xml + https://josm.openstreetmap.de/josmfile?page=Presets/LaneAttributes&zip=1 Map paint styles: + https://josm.openstreetmap.de/josmfile?page=Styles/Lane_and_Road_Attributes&zip=1 Last errors/warnings: - E: Error - <html>Plug-in Mapillary requires a plug-in which was not found. The missing plug-in is:<ul><li>javafx</li></ul></html> - W: No plugin to download, operation canceled - E: Handled by bug report queue: java.util.ConcurrentModificationException === REPORTED CRASH DATA === BugReportExceptionHandler#handleException: No data collected. Warning issued by: BugReportExceptionHandler#handleException === STACK TRACE === Thread: AWT-EventQueue-0 (16) of main java.util.ConcurrentModificationException at java.util.LinkedList$ListItr.checkForComodification(Unknown Source) at java.util.LinkedList$ListItr.next(Unknown Source) at org.openstreetmap.josm.plugins.PluginListParser.addPluginInformation(PluginListParser.java:97) at org.openstreetmap.josm.plugins.PluginListParser.parse(PluginListParser.java:78) at org.openstreetmap.josm.plugins.ReadRemotePluginInformationTask.parsePluginListDocument(ReadRemotePluginInformationTask.java:300) at org.openstreetmap.josm.plugins.ReadRemotePluginInformationTask.realRun(ReadRemotePluginInformationTask.java:337) at org.openstreetmap.josm.gui.PleaseWaitRunnable.doRealRun(PleaseWaitRunnable.java:94) at org.openstreetmap.josm.gui.PleaseWaitRunnable.run(PleaseWaitRunnable.java:142) at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) at java.util.concurrent.FutureTask.run(Unknown Source) at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at java.lang.Thread.run(Unknown Source) === RUNNING THREADS === Thread: File Watcher (23) of main sun.misc.Unsafe.park(Native Method) java.util.concurrent.locks.LockSupport.park(Unknown Source) java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(Unknown Source) java.util.concurrent.LinkedBlockingDeque.takeFirst(Unknown Source) java.util.concurrent.LinkedBlockingDeque.take(Unknown Source) sun.nio.fs.AbstractWatchService.take(Unknown Source) org.openstreetmap.josm.io.FileWatcher.processEvents(FileWatcher.java:120) org.openstreetmap.josm.io.FileWatcher$$Lambda$175/30018916.run(Unknown Source) java.lang.Thread.run(Unknown Source) Thread: main (1) of main java.lang.Object.hashCode(Native Method) java.util.WeakHashMap.hash(Unknown Source) java.util.WeakHashMap.put(Unknown Source) java.util.zip.ZipFile.getInputStream(Unknown Source) java.util.jar.JarFile.getInputStream(Unknown Source) sun.misc.URLClassPath$JarLoader$2.getInputStream(Unknown Source) sun.misc.Resource.cachedInputStream(Unknown Source) sun.misc.Resource.getByteBuffer(Unknown Source) java.net.URLClassLoader.defineClass(Unknown Source) java.net.URLClassLoader.access$100(Unknown Source) java.net.URLClassLoader$1.run(Unknown Source) java.net.URLClassLoader$1.run(Unknown Source) java.security.AccessController.doPrivileged(Native Method) java.net.URLClassLoader.findClass(Unknown Source) java.lang.ClassLoader.loadClass(Unknown Source) org.openstreetmap.josm.plugins.PluginClassLoader.loadClass(PluginClassLoader.java:73) java.lang.ClassLoader.loadClass(Unknown Source) java.lang.Class.forName0(Native Method) java.lang.Class.forName(Unknown Source) org.openstreetmap.josm.plugins.PluginInformation.loadClass(PluginInformation.java:384) org.openstreetmap.josm.plugins.PluginHandler.loadPlugin(PluginHandler.java:801) org.openstreetmap.josm.plugins.PluginHandler.loadPlugins(PluginHandler.java:890) org.openstreetmap.josm.plugins.PluginHandler.loadLatePlugins(PluginHandler.java:933) org.openstreetmap.josm.gui.MainApplication.loadLatePlugins(MainApplication.java:1146) org.openstreetmap.josm.gui.MainApplication.mainJOSM(MainApplication.java:918) org.openstreetmap.josm.gui.MainApplication$3.processArguments(MainApplication.java:276) org.openstreetmap.josm.gui.MainApplication.main(MainApplication.java:713) Thread: Timer-0 (48) of main java.lang.Object.wait(Native Method) java.util.TimerThread.mainLoop(Unknown Source) java.util.TimerThread.run(Unknown Source) Thread: ForkJoinPool.commonPool-worker-1 (34) of main sun.misc.Unsafe.park(Native Method) java.util.concurrent.ForkJoinPool.awaitWork(Unknown Source) java.util.concurrent.ForkJoinPool.runWorker(Unknown Source) java.util.concurrent.ForkJoinWorkerThread.run(Unknown Source) Thread: Java2D Disposer (10) of system java.lang.Object.wait(Native Method) java.lang.ref.ReferenceQueue.remove(Unknown Source) java.lang.ref.ReferenceQueue.remove(Unknown Source) sun.java2d.Disposer.run(Unknown Source) java.lang.Thread.run(Unknown Source) Thread: AWT-Windows (13) of system sun.awt.windows.WToolkit.eventLoop(Native Method) sun.awt.windows.WToolkit.run(Unknown Source) java.lang.Thread.run(Unknown Source) Thread: Thread-5 (22) of main sun.nio.fs.WindowsNativeDispatcher.GetQueuedCompletionStatus0(Native Method) sun.nio.fs.WindowsNativeDispatcher.GetQueuedCompletionStatus(Unknown Source) sun.nio.fs.WindowsWatchService$Poller.run(Unknown Source) java.lang.Thread.run(Unknown Source) Thread: AWT-Shutdown (17) of system java.lang.Object.wait(Native Method) java.lang.Object.wait(Unknown Source) sun.awt.AWTAutoShutdown.run(Unknown Source) java.lang.Thread.run(Unknown Source) Thread: JCS-ElementEventQueue-Thread-7 (43) of main sun.misc.Unsafe.park(Native Method) java.util.concurrent.locks.LockSupport.park(Unknown Source) java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(Unknown Source) java.util.concurrent.LinkedBlockingQueue.take(Unknown Source) java.util.concurrent.ThreadPoolExecutor.getTask(Unknown Source) java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) java.lang.Thread.run(Unknown Source) Thread: ForkJoinPool.commonPool-worker-4 (37) of main sun.misc.Unsafe.park(Native Method) java.util.concurrent.ForkJoinPool.awaitWork(Unknown Source) java.util.concurrent.ForkJoinPool.runWorker(Unknown Source) java.util.concurrent.ForkJoinWorkerThread.run(Unknown Source) Thread: Keep-Alive-Timer (21) of system java.lang.Thread.sleep(Native Method) sun.net.www.http.KeepAliveCache.run(Unknown Source) java.lang.Thread.run(Unknown Source) Thread: main-worker-0 (45) of main sun.misc.Unsafe.park(Native Method) java.util.concurrent.locks.LockSupport.park(Unknown Source) java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(Unknown Source) java.util.concurrent.LinkedBlockingQueue.take(Unknown Source) java.util.concurrent.ThreadPoolExecutor.getTask(Unknown Source) java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) java.lang.Thread.run(Unknown Source) Thread: ForkJoinPool.commonPool-worker-3 (36) of main sun.misc.Unsafe.park(Native Method) java.util.concurrent.ForkJoinPool.awaitWork(Unknown Source) java.util.concurrent.ForkJoinPool.runWorker(Unknown Source) java.util.concurrent.ForkJoinWorkerThread.run(Unknown Source) Thread: Image Fetcher 0 (47) of main java.lang.Object.wait(Native Method) sun.awt.image.ImageFetcher.nextImage(Unknown Source) sun.awt.image.ImageFetcher.fetchloop(Unknown Source) sun.awt.image.ImageFetcher.run(Unknown Source) Thread: ForkJoinPool.commonPool-worker-2 (35) of main sun.misc.Unsafe.park(Native Method) java.util.concurrent.ForkJoinPool.awaitWork(Unknown Source) java.util.concurrent.ForkJoinPool.runWorker(Unknown Source) java.util.concurrent.ForkJoinWorkerThread.run(Unknown Source) Thread: Reference Handler (2) of system java.lang.Object.wait(Native Method) java.lang.Object.wait(Unknown Source) java.lang.ref.Reference.tryHandlePending(Unknown Source) java.lang.ref.Reference$ReferenceHandler.run(Unknown Source) Thread: Signal Dispatcher (4) of system Thread: Weak reference cleaner (24) of main java.lang.Object.wait(Native Method) java.lang.ref.ReferenceQueue.remove(Unknown Source) java.lang.ref.ReferenceQueue.remove(Unknown Source) org.openstreetmap.josm.tools.ListenableWeakReference.clean(ListenableWeakReference.java:60) org.openstreetmap.josm.tools.ListenableWeakReference$$Lambda$211/16476800.run(Unknown Source) java.lang.Thread.run(Unknown Source) Thread: TimerQueue (18) of system sun.misc.Unsafe.park(Native Method) java.util.concurrent.locks.LockSupport.parkNanos(Unknown Source) java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(Unknown Source) java.util.concurrent.DelayQueue.take(Unknown Source) javax.swing.TimerQueue.run(Unknown Source) java.lang.Thread.run(Unknown Source) Thread: AWT-EventQueue-0 (16) of main Stacktrace see above. Thread: ForkJoinPool.commonPool-worker-6 (38) of main sun.misc.Unsafe.park(Native Method) java.util.concurrent.ForkJoinPool.awaitWork(Unknown Source) java.util.concurrent.ForkJoinPool.runWorker(Unknown Source) java.util.concurrent.ForkJoinWorkerThread.run(Unknown Source) Thread: Finalizer (3) of system java.lang.Object.wait(Native Method) java.lang.ref.ReferenceQueue.remove(Unknown Source) java.lang.ref.ReferenceQueue.remove(Unknown Source) java.lang.ref.Finalizer$FinalizerThread.run(Unknown Source) Thread: ForkJoinPool.commonPool-worker-7 (40) of main sun.misc.Unsafe.park(Native Method) java.util.concurrent.ForkJoinPool.awaitWork(Unknown Source) java.util.concurrent.ForkJoinPool.runWorker(Unknown Source) java.util.concurrent.ForkJoinWorkerThread.run(Unknown Source) Thread: Attach Listener (5) of system
Attachments (2)
Change History (9)
follow-up: 4 comment:1 by , 5 years ago
Component: | Core → Plugin mapillary |
---|---|
Owner: | changed from | to
Version: | tested |
comment:2 by , 5 years ago
comment:3 by , 5 years ago
#19194 (for installing virtual plugins if they are missing).
I'll see if I can figure out how this happens, since this is the actual crasher:
Thread: AWT-EventQueue-0 (16) of main java.util.ConcurrentModificationException at java.util.LinkedList$ListItr.checkForComodification(Unknown Source) at java.util.LinkedList$ListItr.next(Unknown Source) at org.openstreetmap.josm.plugins.PluginListParser.addPluginInformation(PluginListParser.java:97) at org.openstreetmap.josm.plugins.PluginListParser.parse(PluginListParser.java:78) at org.openstreetmap.josm.plugins.ReadRemotePluginInformationTask.parsePluginListDocument(ReadRemotePluginInformationTask.java:300) at org.openstreetmap.josm.plugins.ReadRemotePluginInformationTask.realRun(ReadRemotePluginInformationTask.java:337) at org.openstreetmap.josm.gui.PleaseWaitRunnable.doRealRun(PleaseWaitRunnable.java:94) at org.openstreetmap.josm.gui.PleaseWaitRunnable.run(PleaseWaitRunnable.java:142) at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) at java.util.concurrent.FutureTask.run(Unknown Source) at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at java.lang.Thread.run(Unknown Source)
I don't think I'm making any modifications to the plugin list in the plugin.
by , 5 years ago
Attachment: | 19638.minimal.patch added |
---|
Minimal fix for concurrent modification exception (josm core)
by , 5 years ago
Attachment: | 19638.synchronized_collection.patch added |
---|
Make pluginList
a synchronized collection
comment:4 by , 5 years ago
Component: | Plugin mapillary → Core |
---|---|
Owner: | changed from | to
Replying to skyper:
I don't think this is a Mapillary specific problem. There are no references to pluginList
in Mapillary source code. Or any other plugin.
comment:5 by , 5 years ago
Summary: | JOSM crashed upon start → ConcurrentModificationException in PluginListParser.addPluginInformation |
---|
comment:7 by , 5 years ago
Milestone: | → 20.08 |
---|
Does manually installing the plugin "JavaFX" help?