Modify

Opened 2 years ago

Closed 21 months ago

Last modified 12 months ago

#22317 closed defect (fixed)

[PATCH] Fastdraw: removing of starting point using shift--double-click on starting point - cause cycled crash messages

Reported by: pgavrilov Owned by: taylor.smock
Priority: normal Milestone:
Component: Plugin FastDraw Version:
Keywords: template_report Cc:

Description

What steps will reproduce the problem?

  1. Select Fastdraw mode
  2. draw line (not finish it by pressing Enter)
  3. Shift-click on drawn line, remove it
  4. then delete starting point by shift-double-click on it

What is the expected result?

You return to begin of using this mode.

What happens instead?

JOSM Crash message appears. If I close this message, it appears again.

Please provide any additional information below. Attach a screenshot if possible.

Revision:18531
Build-Date:2022-08-02 12:45:38

Identification: JOSM/1.5 (18531 ru) Windows 7 64-Bit
OS Build number: Windows 7 Professional (7601)
Memory Usage: 340 MB / 4078 MB (132 MB allocated, but free)
Java version: 17.0.4+8-LTS, Azul Systems, Inc., OpenJDK 64-Bit Server VM
Look and Feel: com.sun.java.swing.plaf.windows.WindowsLookAndFeel
Screen: \Display0 1920×1200 (scaling 1.00×1.00)
Maximum Screen Size: 1920×1200
Best cursor sizes: 16×16→32×32, 32×32→32×32
System property file.encoding: Cp1251
System property sun.jnu.encoding: Cp1251
Locale info: ru_RU
Numbers with default locale: 1234567890 -> 1234567890
VM arguments: [-Djpackage.app-version=1.5.18531, --add-modules=java.scripting,java.sql,javafx.controls,javafx.media,javafx.swing,javafx.web, --add-exports=java.base/sun.security.action=ALL-UNNAMED, --add-exports=java.desktop/com.sun.imageio.plugins.jpeg=ALL-UNNAMED, --add-exports=java.desktop/com.sun.imageio.spi=ALL-UNNAMED, --add-opens=java.base/java.lang=ALL-UNNAMED, --add-opens=java.base/java.nio=ALL-UNNAMED, --add-opens=java.base/jdk.internal.loader=ALL-UNNAMED, --add-opens=java.base/jdk.internal.ref=ALL-UNNAMED, --add-opens=java.desktop/javax.imageio.spi=ALL-UNNAMED, --add-opens=java.desktop/javax.swing.text.html=ALL-UNNAMED, --add-opens=java.prefs/java.util.prefs=ALL-UNNAMED, -Djpackage.app-path=%UserProfile%\AppData\Local\JOSM\JOSM.exe]
Dataset consistency test: No problems found

Plugins:
+ EasyPresets (1623509627)
+ FastDraw (35978)
+ ImproveWay (32)
+ apache-commons (36003)
+ apache-http (35924)
+ buildings_tools (36011)
+ hexgrid-generator (0.0.2)
+ imagery_offset_db (35978)
+ jna (36005)
+ photo_geotagging (35933)
+ reltoolbox (35976)
+ russia-address-helper (0.8.0)
+ tageditor (36011)
+ todo (30306)
+ turnlanes-tagging (v0.0.5)
+ turnrestrictions (36011)
+ utilsplugin2 (36011)

Tagging presets:
+ https://josm.openstreetmap.de/josmfile?page=Presets/Quick-highways&zip=1
+ C:\Program Files (x86)\JOSM\PG-JOSM-presets.xml
+ https://raw.githubusercontent.com/ruosm-presets/literan-moscow/master/russian_shops.xml
+ <josm.pref>/EasyPresets.xml

Map paint styles:
- https://josm.openstreetmap.de/josmfile?page=Styles/Lane_and_Road_Attributes&zip=1
- https://github.com/bastik/mapcss-tools/raw/osm/mapnik2mapcss/osm-results/mapnik.zip
- https://www.dropbox.com/s/qo3ai47fpv241jf/Styles_Fixme_and_Notes.zip?raw=1
- https://josm.openstreetmap.de/josmfile?page=Styles/Modified&zip=1
- %UserProfile%\JOSM Modifyed objects style

Last errors/warnings:
- 00008.659 E: C:\Program Files (x86)\JOSM\PG-JOSM-presets.xml
- 00009.023 E: Не удалось найти изображение «https://image.flaticon.com/icons/png/512/47/47421.png»
- 00009.032 W: [NODE, CLOSEDWAY, MULTIPOLYGON] Clothes dryer: Could not get presets icon https://image.flaticon.com/icons/png/512/47/47421.png
- 00026.051 E: Handled by bug report queue: java.lang.IndexOutOfBoundsException: Index: -1, Size: 1
- 00026.059 E: Handled by bug report queue: java.lang.IndexOutOfBoundsException: Index: -1, Size: 1
- 00026.107 E: Handled by bug report queue: java.lang.IndexOutOfBoundsException: Index: -1, Size: 1
- 00029.391 E: Handled by bug report queue: java.lang.IndexOutOfBoundsException: Index: -1, Size: 1
- 00031.073 E: Handled by bug report queue: java.lang.IndexOutOfBoundsException: Index: -1, Size: 1
- 00031.303 E: Handled by bug report queue: java.lang.IndexOutOfBoundsException: Index: -1, Size: 1
- 00031.457 E: Handled by bug report queue: java.lang.IndexOutOfBoundsException: Index: -1, Size: 1



=== REPORTED CRASH DATA ===
BugReportExceptionHandler#handleException:
No data collected.

Warning issued by: BugReportExceptionHandler#handleException

=== STACK TRACE ===
Thread: AWT-EventQueue-0 (23) of main
java.lang.IndexOutOfBoundsException: Index: -1, Size: 1
	at java.base/java.util.LinkedList.checkElementIndex(Unknown Source)
	at java.base/java.util.LinkedList.get(Unknown Source)
	at org.openstreetmap.josm.plugins.fastdraw.DrawnPolyLine.getLastPoint(DrawnPolyLine.java:125)
	at org.openstreetmap.josm.plugins.fastdraw.FastDrawingMode.paint(FastDrawingMode.java:231)
	at org.openstreetmap.josm.gui.MapView.drawTemporaryLayers(MapView.java:651)
	at org.openstreetmap.josm.gui.MapView.drawMapContent(MapView.java:588)
	at org.openstreetmap.josm.gui.MapView.paint(MapView.java:491)
	at java.desktop/javax.swing.JComponent.paintChildren(Unknown Source)
	at java.desktop/javax.swing.JComponent.paint(Unknown Source)
	at java.desktop/javax.swing.JComponent.paintToOffscreen(Unknown Source)
	at java.desktop/javax.swing.RepaintManager$PaintManager.paintDoubleBufferedImpl(Unknown Source)
	at java.desktop/javax.swing.RepaintManager$PaintManager.paintDoubleBuffered(Unknown Source)
	at java.desktop/javax.swing.RepaintManager$PaintManager.paint(Unknown Source)
	at java.desktop/javax.swing.RepaintManager.paint(Unknown Source)
	at java.desktop/javax.swing.JComponent._paintImmediately(Unknown Source)
	at java.desktop/javax.swing.JComponent.paintImmediately(Unknown Source)
	at java.desktop/javax.swing.RepaintManager$4.run(Unknown Source)
	at java.desktop/javax.swing.RepaintManager$4.run(Unknown Source)
	at java.base/java.security.AccessController.doPrivileged(Unknown Source)
	at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
	at java.desktop/javax.swing.RepaintManager.paintDirtyRegions(Unknown Source)
	at java.desktop/javax.swing.RepaintManager.paintDirtyRegions(Unknown Source)
	at java.desktop/javax.swing.RepaintManager.prePaintDirtyRegions(Unknown Source)
	at java.desktop/javax.swing.RepaintManager$ProcessingRunnable.run(Unknown Source)
	at java.desktop/java.awt.event.InvocationEvent.dispatch(Unknown Source)
	at java.desktop/java.awt.EventQueue.dispatchEventImpl(Unknown Source)
	at java.desktop/java.awt.EventQueue$4.run(Unknown Source)
	at java.desktop/java.awt.EventQueue$4.run(Unknown Source)
	at java.base/java.security.AccessController.doPrivileged(Unknown Source)
	at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
	at java.desktop/java.awt.EventQueue.dispatchEvent(Unknown Source)
	at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
	at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
	at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
	at java.desktop/java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.desktop/java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.desktop/java.awt.EventDispatchThread.run(Unknown Source)

=== RUNNING THREADS ===
Thread: changeset-updater-0 (64) of main
java.base@17.0.4/jdk.internal.misc.Unsafe.park(Native Method)
java.base@17.0.4/java.util.concurrent.locks.LockSupport.parkNanos(Unknown Source)
java.base@17.0.4/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(Unknown Source)
java.base@17.0.4/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(Unknown Source)
java.base@17.0.4/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(Unknown Source)
java.base@17.0.4/java.util.concurrent.ThreadPoolExecutor.getTask(Unknown Source)
java.base@17.0.4/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
java.base@17.0.4/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
java.base@17.0.4/java.lang.Thread.run(Unknown Source)

Thread: File Watcher (27) of main
java.base@17.0.4/jdk.internal.misc.Unsafe.park(Native Method)
java.base@17.0.4/java.util.concurrent.locks.LockSupport.park(Unknown Source)
java.base@17.0.4/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionNode.block(Unknown Source)
java.base@17.0.4/java.util.concurrent.ForkJoinPool.unmanagedBlock(Unknown Source)
java.base@17.0.4/java.util.concurrent.ForkJoinPool.managedBlock(Unknown Source)
java.base@17.0.4/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(Unknown Source)
java.base@17.0.4/java.util.concurrent.LinkedBlockingDeque.takeFirst(Unknown Source)
java.base@17.0.4/java.util.concurrent.LinkedBlockingDeque.take(Unknown Source)
java.base@17.0.4/sun.nio.fs.AbstractWatchService.take(Unknown Source)
app//org.openstreetmap.josm.io.FileWatcher.processEvents(FileWatcher.java:120)
app//org.openstreetmap.josm.io.FileWatcher$$Lambda$371/0x000000080039d208.run(Unknown Source)
java.base@17.0.4/java.lang.Thread.run(Unknown Source)

Thread: FileSystemWatchService (26) of main
java.base@17.0.4/sun.nio.fs.WindowsNativeDispatcher.GetQueuedCompletionStatus0(Native Method)
java.base@17.0.4/sun.nio.fs.WindowsNativeDispatcher.GetQueuedCompletionStatus(Unknown Source)
java.base@17.0.4/sun.nio.fs.WindowsWatchService$Poller.run(Unknown Source)
java.base@17.0.4/java.lang.Thread.run(Unknown Source)

Thread: ForkJoinPool.commonPool-worker-1 (33) of main
java.base@17.0.4/jdk.internal.misc.Unsafe.park(Native Method)
java.base@17.0.4/java.util.concurrent.locks.LockSupport.park(Unknown Source)
java.base@17.0.4/java.util.concurrent.ForkJoinPool.awaitWork(Unknown Source)
java.base@17.0.4/java.util.concurrent.ForkJoinPool.runWorker(Unknown Source)
java.base@17.0.4/java.util.concurrent.ForkJoinWorkerThread.run(Unknown Source)

Thread: JNA Cleaner (55) of main
java.base@17.0.4/java.lang.Object.wait(Native Method)
java.base@17.0.4/java.lang.ref.ReferenceQueue.remove(Unknown Source)
java.base@17.0.4/java.lang.ref.ReferenceQueue.remove(Unknown Source)
com.sun.jna.internal.Cleaner$1.run(Cleaner.java:58)

Thread: Map Status Collector (72) of main
java.base@17.0.4/jdk.internal.misc.Unsafe.park(Native Method)
java.base@17.0.4/java.util.concurrent.locks.LockSupport.park(Unknown Source)
java.base@17.0.4/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionNode.block(Unknown Source)
java.base@17.0.4/java.util.concurrent.ForkJoinPool.unmanagedBlock(Unknown Source)
java.base@17.0.4/java.util.concurrent.ForkJoinPool.managedBlock(Unknown Source)
java.base@17.0.4/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(Unknown Source)
java.base@17.0.4/java.util.concurrent.LinkedBlockingQueue.take(Unknown Source)
app//org.openstreetmap.josm.gui.MapStatus$Collector.run(MapStatus.java:438)
java.base@17.0.4/java.lang.Thread.run(Unknown Source)

Thread: styled-map-renderer-0 (73) of main
java.base@17.0.4/jdk.internal.misc.Unsafe.park(Native Method)
java.base@17.0.4/java.util.concurrent.locks.LockSupport.parkUntil(Unknown Source)
java.base@17.0.4/java.util.concurrent.ForkJoinPool.awaitWork(Unknown Source)
java.base@17.0.4/java.util.concurrent.ForkJoinPool.runWorker(Unknown Source)
java.base@17.0.4/java.util.concurrent.ForkJoinWorkerThread.run(Unknown Source)

Thread: Finalizer (3) of system
java.base@17.0.4/java.lang.Object.wait(Native Method)
java.base@17.0.4/java.lang.ref.ReferenceQueue.remove(Unknown Source)
java.base@17.0.4/java.lang.ref.ReferenceQueue.remove(Unknown Source)
java.base@17.0.4/java.lang.ref.Finalizer$FinalizerThread.run(Unknown Source)

Thread: AWT-EventQueue-0 (23) of main
Stacktrace see above.

Thread: ForkJoinPool.commonPool-worker-2 (34) of main
java.base@17.0.4/jdk.internal.misc.Unsafe.park(Native Method)
java.base@17.0.4/java.util.concurrent.locks.LockSupport.park(Unknown Source)
java.base@17.0.4/java.util.concurrent.ForkJoinPool.awaitWork(Unknown Source)
java.base@17.0.4/java.util.concurrent.ForkJoinPool.runWorker(Unknown Source)
java.base@17.0.4/java.util.concurrent.ForkJoinWorkerThread.run(Unknown Source)

Thread: CacheEventQueue.QProcessor-TMS_BLOCK_v2Thread-3 (57) of main
java.base@17.0.4/jdk.internal.misc.Unsafe.park(Native Method)
java.base@17.0.4/java.util.concurrent.locks.LockSupport.park(Unknown Source)
java.base@17.0.4/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionNode.block(Unknown Source)
java.base@17.0.4/java.util.concurrent.ForkJoinPool.unmanagedBlock(Unknown Source)
java.base@17.0.4/java.util.concurrent.ForkJoinPool.managedBlock(Unknown Source)
java.base@17.0.4/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(Unknown Source)
java.base@17.0.4/java.util.concurrent.LinkedBlockingQueue.take(Unknown Source)
java.base@17.0.4/java.util.concurrent.ThreadPoolExecutor.getTask(Unknown Source)
java.base@17.0.4/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
java.base@17.0.4/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
java.base@17.0.4/java.lang.Thread.run(Unknown Source)

Thread: message-notifier-0 (63) of main
java.base@17.0.4/jdk.internal.misc.Unsafe.park(Native Method)
java.base@17.0.4/java.util.concurrent.locks.LockSupport.parkNanos(Unknown Source)
java.base@17.0.4/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(Unknown Source)
java.base@17.0.4/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(Unknown Source)
java.base@17.0.4/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(Unknown Source)
java.base@17.0.4/java.util.concurrent.ThreadPoolExecutor.getTask(Unknown Source)
java.base@17.0.4/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
java.base@17.0.4/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
java.base@17.0.4/java.lang.Thread.run(Unknown Source)

Thread: Timer-2 (70) of main
java.base@17.0.4/java.lang.Object.wait(Native Method)
java.base@17.0.4/java.lang.Object.wait(Unknown Source)
java.base@17.0.4/java.util.TimerThread.mainLoop(Unknown Source)
java.base@17.0.4/java.util.TimerThread.run(Unknown Source)

Thread: Timer-0 (58) of main
java.base@17.0.4/java.lang.Object.wait(Native Method)
java.base@17.0.4/java.util.TimerThread.mainLoop(Unknown Source)
java.base@17.0.4/java.util.TimerThread.run(Unknown Source)

Thread: RemoteControl HTTP Server (62) of main
java.base@17.0.4/sun.nio.ch.Net.accept(Native Method)
java.base@17.0.4/sun.nio.ch.NioSocketImpl.accept(Unknown Source)
java.base@17.0.4/java.net.ServerSocket.implAccept(Unknown Source)
java.base@17.0.4/java.net.ServerSocket.platformImplAccept(Unknown Source)
java.base@17.0.4/java.net.ServerSocket.implAccept(Unknown Source)
java.base@17.0.4/java.net.ServerSocket.implAccept(Unknown Source)
java.base@17.0.4/java.net.ServerSocket.accept(Unknown Source)
app//org.openstreetmap.josm.io.remotecontrol.RemoteControlHttpServer.run(RemoteControlHttpServer.java:104)

Thread: Reference Handler (2) of system
java.base@17.0.4/java.lang.ref.Reference.waitForReferencePendingList(Native Method)
java.base@17.0.4/java.lang.ref.Reference.processPendingReferences(Unknown Source)
java.base@17.0.4/java.lang.ref.Reference$ReferenceHandler.run(Unknown Source)

Thread: Timer-1 (69) of main
java.base@17.0.4/java.lang.Object.wait(Native Method)
java.base@17.0.4/java.util.TimerThread.mainLoop(Unknown Source)
java.base@17.0.4/java.util.TimerThread.run(Unknown Source)

Thread: JCS-ElementEventQueue-Thread-2 (56) of main
java.base@17.0.4/jdk.internal.misc.Unsafe.park(Native Method)
java.base@17.0.4/java.util.concurrent.locks.LockSupport.park(Unknown Source)
java.base@17.0.4/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionNode.block(Unknown Source)
java.base@17.0.4/java.util.concurrent.ForkJoinPool.unmanagedBlock(Unknown Source)
java.base@17.0.4/java.util.concurrent.ForkJoinPool.managedBlock(Unknown Source)
java.base@17.0.4/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(Unknown Source)
java.base@17.0.4/java.util.concurrent.LinkedBlockingQueue.take(Unknown Source)
java.base@17.0.4/java.util.concurrent.ThreadPoolExecutor.getTask(Unknown Source)
java.base@17.0.4/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
java.base@17.0.4/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
java.base@17.0.4/java.lang.Thread.run(Unknown Source)

Thread: Attach Listener (5) of system

Thread: TimerQueue (24) of system
java.base@17.0.4/jdk.internal.misc.Unsafe.park(Native Method)
java.base@17.0.4/java.util.concurrent.locks.LockSupport.park(Unknown Source)
java.base@17.0.4/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionNode.block(Unknown Source)
java.base@17.0.4/java.util.concurrent.ForkJoinPool.unmanagedBlock(Unknown Source)
java.base@17.0.4/java.util.concurrent.ForkJoinPool.managedBlock(Unknown Source)
java.base@17.0.4/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(Unknown Source)
java.base@17.0.4/java.util.concurrent.DelayQueue.take(Unknown Source)
java.desktop@17.0.4/javax.swing.TimerQueue.run(Unknown Source)
java.base@17.0.4/java.lang.Thread.run(Unknown Source)

Thread: ForkJoinPool.commonPool-worker-6 (38) of main
java.base@17.0.4/jdk.internal.misc.Unsafe.park(Native Method)
java.base@17.0.4/java.util.concurrent.locks.LockSupport.park(Unknown Source)
java.base@17.0.4/java.util.concurrent.ForkJoinPool.awaitWork(Unknown Source)
java.base@17.0.4/java.util.concurrent.ForkJoinPool.runWorker(Unknown Source)
java.base@17.0.4/java.util.concurrent.ForkJoinWorkerThread.run(Unknown Source)

Thread: ForkJoinPool.commonPool-worker-4 (36) of main
java.base@17.0.4/jdk.internal.misc.Unsafe.park(Native Method)
java.base@17.0.4/java.util.concurrent.locks.LockSupport.park(Unknown Source)
java.base@17.0.4/java.util.concurrent.ForkJoinPool.awaitWork(Unknown Source)
java.base@17.0.4/java.util.concurrent.ForkJoinPool.runWorker(Unknown Source)
java.base@17.0.4/java.util.concurrent.ForkJoinWorkerThread.run(Unknown Source)

Thread: DestroyJavaVM (65) of main

Thread: main-worker-0 (22) of main
java.base@17.0.4/jdk.internal.misc.Unsafe.park(Native Method)
java.base@17.0.4/java.util.concurrent.locks.LockSupport.park(Unknown Source)
java.base@17.0.4/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionNode.block(Unknown Source)
java.base@17.0.4/java.util.concurrent.ForkJoinPool.unmanagedBlock(Unknown Source)
java.base@17.0.4/java.util.concurrent.ForkJoinPool.managedBlock(Unknown Source)
java.base@17.0.4/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(Unknown Source)
java.base@17.0.4/java.util.concurrent.LinkedBlockingQueue.take(Unknown Source)
java.base@17.0.4/java.util.concurrent.ThreadPoolExecutor.getTask(Unknown Source)
java.base@17.0.4/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
java.base@17.0.4/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
java.base@17.0.4/java.lang.Thread.run(Unknown Source)

Thread: ForkJoinPool.commonPool-worker-9 (41) of main
java.base@17.0.4/jdk.internal.misc.Unsafe.park(Native Method)
java.base@17.0.4/java.util.concurrent.locks.LockSupport.park(Unknown Source)
java.base@17.0.4/java.util.concurrent.ForkJoinPool.awaitWork(Unknown Source)
java.base@17.0.4/java.util.concurrent.ForkJoinPool.runWorker(Unknown Source)
java.base@17.0.4/java.util.concurrent.ForkJoinWorkerThread.run(Unknown Source)

Thread: D3D Screen Updater (61) of system
java.base@17.0.4/java.lang.Object.wait(Native Method)
java.desktop@17.0.4/sun.java2d.d3d.D3DScreenUpdateManager.run(Unknown Source)
java.base@17.0.4/java.lang.Thread.run(Unknown Source)

Thread: ForkJoinPool.commonPool-worker-11 (43) of main
java.base@17.0.4/jdk.internal.misc.Unsafe.park(Native Method)
java.base@17.0.4/java.util.concurrent.locks.LockSupport.parkUntil(Unknown Source)
java.base@17.0.4/java.util.concurrent.ForkJoinPool.awaitWork(Unknown Source)
java.base@17.0.4/java.util.concurrent.ForkJoinPool.runWorker(Unknown Source)
java.base@17.0.4/java.util.concurrent.ForkJoinWorkerThread.run(Unknown Source)

Thread: RemoteControl HTTP Server (60) of main
java.base@17.0.4/sun.nio.ch.Net.accept(Native Method)
java.base@17.0.4/sun.nio.ch.NioSocketImpl.accept(Unknown Source)
java.base@17.0.4/java.net.ServerSocket.implAccept(Unknown Source)
java.base@17.0.4/java.net.ServerSocket.platformImplAccept(Unknown Source)
java.base@17.0.4/java.net.ServerSocket.implAccept(Unknown Source)
java.base@17.0.4/java.net.ServerSocket.implAccept(Unknown Source)
java.base@17.0.4/java.net.ServerSocket.accept(Unknown Source)
app//org.openstreetmap.josm.io.remotecontrol.RemoteControlHttpServer.run(RemoteControlHttpServer.java:104)

Thread: ForkJoinPool.commonPool-worker-5 (37) of main
java.base@17.0.4/jdk.internal.misc.Unsafe.park(Native Method)
java.base@17.0.4/java.util.concurrent.locks.LockSupport.park(Unknown Source)
java.base@17.0.4/java.util.concurrent.ForkJoinPool.awaitWork(Unknown Source)
java.base@17.0.4/java.util.concurrent.ForkJoinPool.runWorker(Unknown Source)
java.base@17.0.4/java.util.concurrent.ForkJoinWorkerThread.run(Unknown Source)

Thread: Notification Thread (14) of system

Thread: AWT-Shutdown (18) of system
java.base@17.0.4/java.lang.Object.wait(Native Method)
java.base@17.0.4/java.lang.Object.wait(Unknown Source)
java.desktop@17.0.4/sun.awt.AWTAutoShutdown.run(Unknown Source)
java.base@17.0.4/java.lang.Thread.run(Unknown Source)

Thread: ForkJoinPool.commonPool-worker-10 (42) of main
java.base@17.0.4/jdk.internal.misc.Unsafe.park(Native Method)
java.base@17.0.4/java.util.concurrent.locks.LockSupport.park(Unknown Source)
java.base@17.0.4/java.util.concurrent.ForkJoinPool.awaitWork(Unknown Source)
java.base@17.0.4/java.util.concurrent.ForkJoinPool.runWorker(Unknown Source)
java.base@17.0.4/java.util.concurrent.ForkJoinWorkerThread.run(Unknown Source)

Thread: ForkJoinPool.commonPool-worker-3 (35) of main
java.base@17.0.4/jdk.internal.misc.Unsafe.park(Native Method)
java.base@17.0.4/java.util.concurrent.locks.LockSupport.park(Unknown Source)
java.base@17.0.4/java.util.concurrent.ForkJoinPool.awaitWork(Unknown Source)
java.base@17.0.4/java.util.concurrent.ForkJoinPool.runWorker(Unknown Source)
java.base@17.0.4/java.util.concurrent.ForkJoinWorkerThread.run(Unknown Source)

Thread: AWT-Windows (19) of system
java.desktop@17.0.4/sun.awt.windows.WToolkit.eventLoop(Native Method)
java.desktop@17.0.4/sun.awt.windows.WToolkit.run(Unknown Source)
java.base@17.0.4/java.lang.Thread.run(Unknown Source)

Thread: ForkJoinPool.commonPool-worker-8 (40) of main
java.base@17.0.4/jdk.internal.misc.Unsafe.park(Native Method)
java.base@17.0.4/java.util.concurrent.locks.LockSupport.park(Unknown Source)
java.base@17.0.4/java.util.concurrent.ForkJoinPool.awaitWork(Unknown Source)
java.base@17.0.4/java.util.concurrent.ForkJoinPool.runWorker(Unknown Source)
java.base@17.0.4/java.util.concurrent.ForkJoinWorkerThread.run(Unknown Source)

Thread: Signal Dispatcher (4) of system

Thread: ForkJoinPool.commonPool-worker-7 (39) of main
java.base@17.0.4/jdk.internal.misc.Unsafe.park(Native Method)
java.base@17.0.4/java.util.concurrent.locks.LockSupport.park(Unknown Source)
java.base@17.0.4/java.util.concurrent.ForkJoinPool.awaitWork(Unknown Source)
java.base@17.0.4/java.util.concurrent.ForkJoinPool.runWorker(Unknown Source)
java.base@17.0.4/java.util.concurrent.ForkJoinWorkerThread.run(Unknown Source)

Thread: Weak reference cleaner (28) of main
java.base@17.0.4/java.lang.Object.wait(Native Method)
java.base@17.0.4/java.lang.ref.ReferenceQueue.remove(Unknown Source)
java.base@17.0.4/java.lang.ref.ReferenceQueue.remove(Unknown Source)
app//org.openstreetmap.josm.tools.ListenableWeakReference.clean(ListenableWeakReference.java:60)
app//org.openstreetmap.josm.tools.ListenableWeakReference$$Lambda$413/0x0000000800402318.run(Unknown Source)
java.base@17.0.4/java.lang.Thread.run(Unknown Source)

Thread: image-fetcher-0 (50) of main
java.base@17.0.4/jdk.internal.misc.Unsafe.park(Native Method)
java.base@17.0.4/java.util.concurrent.locks.LockSupport.park(Unknown Source)
java.base@17.0.4/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionNode.block(Unknown Source)
java.base@17.0.4/java.util.concurrent.ForkJoinPool.unmanagedBlock(Unknown Source)
java.base@17.0.4/java.util.concurrent.ForkJoinPool.managedBlock(Unknown Source)
java.base@17.0.4/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(Unknown Source)
java.base@17.0.4/java.util.concurrent.LinkedBlockingQueue.take(Unknown Source)
java.base@17.0.4/java.util.concurrent.ThreadPoolExecutor.getTask(Unknown Source)
java.base@17.0.4/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
java.base@17.0.4/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
java.base@17.0.4/java.lang.Thread.run(Unknown Source)

Thread: Common-Cleaner (13) of InnocuousThreadGroup
java.base@17.0.4/java.lang.Object.wait(Native Method)
java.base@17.0.4/java.lang.ref.ReferenceQueue.remove(Unknown Source)
java.base@17.0.4/jdk.internal.ref.CleanerImpl.run(Unknown Source)
java.base@17.0.4/java.lang.Thread.run(Unknown Source)
java.base@17.0.4/jdk.internal.misc.InnocuousThread.run(Unknown Source)

Thread: Java2D Disposer (17) of system
java.base@17.0.4/java.lang.Object.wait(Native Method)
java.base@17.0.4/java.lang.ref.ReferenceQueue.remove(Unknown Source)
java.base@17.0.4/java.lang.ref.ReferenceQueue.remove(Unknown Source)
java.desktop@17.0.4/sun.java2d.Disposer.run(Unknown Source)
java.base@17.0.4/java.lang.Thread.run(Unknown Source)

Attachments (1)

Fix_FastDraw_crash_when_removing_the_last_point_of_a_polygon.patch (1016 bytes ) - added by TrickyFoxy 22 months ago.
fix FastDraw crash

Download all attachments as: .zip

Change History (11)

by TrickyFoxy, 22 months ago

fix FastDraw crash

comment:1 by TrickyFoxy, 22 months ago

Why it crashes: When you delete the last point of the line, FastDraw turns the line into a polygon and another point is added. The former first point is removed and lastIdx, which was zero, becomes -1.

lastIdx != 0 is enough to fix the crash, but if you try to delete a single point several times, checking org/openstreetmap/josm/plugins/fastdraw/DrawnPolyLine.java:108 will prevent you from adding new points, because the line continues to be a polygon. So I added a transformation back to a unclosed way if the first/last point of the polygon is removed. This also improved the following: before, the first point of the polygon could be deleted, and the auxiliary blue led to the last point of the polygon, which is strange, because the user just tried to delete it.

Seems connected probably fixes #19590

Last edited 22 months ago by TrickyFoxy (previous) (diff)

comment:2 by TrickyFoxy, 22 months ago

Summary: Fastdraw: removing of starting point using shift--double-click on starting point - cause cycled crash messages[PATCH] Fastdraw: removing of starting point using shift--double-click on starting point - cause cycled crash messages

comment:3 by TrickyFoxy, 21 months ago

Owner: changed from akks to taylor.smock

it seems that the developer of this plugin has not been engaged in the plugin for a long time, and I think that's why this patch may go unnoticed:(That's why I decided to call you.

comment:4 by taylor.smock, 21 months ago

Your patch seems to fix the original problem.

I'm seeing an IOOBE when I try to add a new point. I'll see if I can figure out why that is happening and fix it.

comment:5 by taylor.smock, 21 months ago

Resolution: fixed
Status: newclosed

In 36056/osm:

Fix #22317: IOOBE in DrawnPolyLine.getLastPoint (patch by TrickyFoxy, modified)

The modifications are as follows:

  • Added som unit tests
  • Fixed some SonarLint issues (not from patch)
  • Ensure that the last node can always be deleted

comment:6 by taylor.smock, 21 months ago

Ticket #19590 has been marked as a duplicate of this ticket.

comment:7 by taylor.smock, 21 months ago

In 36058/osm:

See #21659, #22317 (dist)

comment:8 by taylor.smock, 12 months ago

@TrickyFoxy: I'm currently working on converting the JOSM plugin repo to git (see #23286). Do you have a preferred name/email for that?

comment:9 by TrickyFoxy, 12 months ago

Roman Deev
roman.deev06@gmail.com
https://github.com/deevroman

comment:10 by taylor.smock, 12 months ago

Thank you for the quick response.

Modify Ticket

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