Opened 15 months ago
Closed 15 months ago
#23447 closed defect (fixed)
Fatal "crash" attempting to delete all "Outer" members & then multipolygon
Reported by: | anonymous | Owned by: | team |
---|---|---|---|
Priority: | normal | Milestone: | 24.01 |
Component: | Core | Version: | |
Keywords: | template_report | Cc: |
Description
What steps will reproduce the problem?
- Double clicking on ALL "Outer" members of multipolygon and then doing Edit "Delete"
- Attempting to "Delete" multipolygon results in "error condition"
What is the expected result? I just want to delete all of the "Outer" members & multipolygon
What happens instead? This error message reporting "fatal crash"
Please provide any additional information below. Attach a screenshot if possible.
Relative:URL: ^/trunk Repository:UUID: 0c6e7542-c601-0410-84e7-c038aed88b3b Last:Changed Date: 2023-08-29 13:38:40 +0200 (Tue, 29 Aug 2023) Revision:18822 Build-Date:2023-08-30 01:30:57 URL:https://josm.openstreetmap.de/svn/trunk Identification: JOSM/1.5 (18822 en) Linux Debian GNU/Linux 12 (bookworm) Memory Usage: 460 MB / 3926 MB (91 MB allocated, but free) Java version: 17.0.9+9-Debian-1deb12u1, Debian, OpenJDK 64-Bit Server VM Look and Feel: javax.swing.plaf.metal.MetalLookAndFeel Screen: :0.0 1920×1080 (scaling 1.00×1.00) Maximum Screen Size: 1920×1080 Best cursor sizes: 16×16→16×16, 32×32→32×32 Environment variable LANG: en_US.UTF-8 System property file.encoding: UTF-8 System property sun.jnu.encoding: UTF-8 Locale info: en_US Numbers with default locale: 1234567890 -> 1234567890 Desktop environment: GNOME Java package: openjdk-17-jre:amd64-17.0.9+9-1~deb12u1 Java ATK Wrapper package: libatk-wrapper-java:all-0.40.0-3 fonts-noto: fonts-noto:- Dataset consistency test: No problems found Plugins: + apache-commons (36176) + ejml (36176) + geotools (36176) + jackson (36176) + jaxb (36118) + jts (36004) + opendata (36186) + reverter (36126) + rex (53) + tageditor (36126) + turnlanes-tagging (0.0.5) + utilsplugin2 (36178) Map paint styles: + https://josm.openstreetmap.de/josmfile?page=Styles/Lane_and_Road_Attributes&zip=1 + https://josm.openstreetmap.de/josmfile?page=Styles/SidewalksPlus&zip=1 Last errors/warnings: - 00000.928 W: Update plugins - Last plugin update more than 39 days ago. - 00193.885 E: org.openstreetmap.josm.io.OsmApiException: ResponseCode=400, Error Header=<You requested too many nodes (limit is 50000). Either request a smaller area, or use planet.osm> - 00193.890 E: Bad Request - <html>The OSM server 'api.openstreetmap.org' reported a bad request.<br><br>The area you tried to download is too big or your request was too large.<br>Either request a smaller area or use an export file provided by the OSM community.</html> - 00275.033 W: java.net.SocketTimeoutException: Read timed out. Cause: java.net.SocketTimeoutException: Read timed out - 00275.134 E: Failed to locate image 'https://www.fs.usda.gov/sites/all/themes/fs_hq/images/usfslogo.png' - 00686.547 E: Handled by bug report queue: java.lang.IllegalArgumentException: {Relation id=10719153 version=2 MVDT]} is already deleted === REPORTED CRASH DATA === BugReportExceptionHandler#handleException: No data collected. Warning issued by: BugReportExceptionHandler#handleException === STACK TRACE === Thread: AWT-EventQueue-0 (22) of main java.lang.IllegalArgumentException: {Relation id=10719153 version=2 MVDT]} is already deleted at org.openstreetmap.josm.command.DeleteCommand.lambda$executeCommand$0(DeleteCommand.java:211) at org.openstreetmap.josm.data.osm.DataSet.update(DataSet.java:1063) at org.openstreetmap.josm.command.DeleteCommand.executeCommand(DeleteCommand.java:207) at org.openstreetmap.josm.data.UndoRedoHandler.addNoRedraw(UndoRedoHandler.java:300) at org.openstreetmap.josm.data.UndoRedoHandler.add(UndoRedoHandler.java:354) at org.openstreetmap.josm.actions.mapmode.DeleteAction.deleteRelations(DeleteAction.java:367) at org.openstreetmap.josm.actions.mapmode.DeleteAction.deleteRelation(DeleteAction.java:348) at org.openstreetmap.josm.gui.dialogs.relation.actions.DeleteCurrentRelationAction.actionPerformed(DeleteCurrentRelationAction.java:38) at java.desktop/javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1972) at java.desktop/javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2313) at java.desktop/javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:405) at java.desktop/javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:262) at java.desktop/javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:279) at java.desktop/java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:297) at java.desktop/java.awt.Component.processMouseEvent(Component.java:6626) at java.desktop/javax.swing.JComponent.processMouseEvent(JComponent.java:3389) at java.desktop/java.awt.Component.processEvent(Component.java:6391) at java.desktop/java.awt.Container.processEvent(Container.java:2266) at java.desktop/java.awt.Component.dispatchEventImpl(Component.java:5001) at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2324) at java.desktop/java.awt.Component.dispatchEvent(Component.java:4833) at java.desktop/java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4948) at java.desktop/java.awt.LightweightDispatcher.processMouseEvent(Container.java:4575) at java.desktop/java.awt.LightweightDispatcher.dispatchEvent(Container.java:4516) at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2310) at java.desktop/java.awt.Window.dispatchEventImpl(Window.java:2780) at java.desktop/java.awt.Component.dispatchEvent(Component.java:4833) at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:775) at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:720) at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:714) at java.base/java.security.AccessController.doPrivileged(AccessController.java:399) at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86) at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:97) at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:747) at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:745) at java.base/java.security.AccessController.doPrivileged(AccessController.java:399) at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86) at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:744) at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203) at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124) at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113) at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109) at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101) at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
Attachments (1)
Change History (21)
comment:1 by , 15 months ago
comment:2 by , 15 months ago
I can reproduce with r18940 like this:
1) Draw closed way
2) create multipolygon from that way
3) open relation editor for new multipolygon
4) select the only member by clicking on the outline so that it appears in selection window
5) press DEL, confirm to delete the members and the relation
6) click on the trashcan icon in the relation editor
Relative:URL: ^/trunk Repository:UUID: 0c6e7542-c601-0410-84e7-c038aed88b3b Last:Changed Date: 2024-01-16 08:06:33 +0100 (Tue, 16 Jan 2024) Revision:18940 Build-Date:2024-01-17 02:31:01 URL:https://josm.openstreetmap.de/svn/trunk Identification: JOSM/1.5 (18940 en) Windows 10 64-Bit OS Build number: Windows 10 Pro 2009 (19045) Memory Usage: 318 MB / 1888 MB (181 MB allocated, but free) Java version: 17.0.8+7-LTS, Azul Systems, Inc., OpenJDK 64-Bit Server VM Look and Feel: com.sun.java.swing.plaf.windows.WindowsLookAndFeel Screen: \Display0 1920×1080 (scaling 1.00×1.00) Maximum Screen Size: 1920×1080 Best cursor sizes: 16×16→32×32, 32×32→32×32 System property file.encoding: Cp1252 System property sun.jnu.encoding: Cp1252 Locale info: en_DE Numbers with default locale: 1234567890 -> 1234567890 VM arguments: [-Djpackage.app-version=1.5.18789, --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\HWConsole.exe] Dataset consistency test: No problems found Plugins: + EasyPresets (1623509627) + OpeningHoursEditor (36196) + RoadSigns (36196) + apache-commons (36176) + buildings_tools (36200) + comfort0 (36200) + o5m (36126) + pbf (36176) + poly (36126) + reltoolbox (36200) + reverter (36196) + undelete (36126) + utilsplugin2 (36200) Tagging presets: + <josm.pref>/EasyPresets.xml Validator rules: + d:\java_tools\JOSM\mygeometry.mapcss + https://josm.openstreetmap.de/josmfile?page=Rules/GermanySpecific&zip=1 + c:\josm\core\resources\data\validator\geometry.mapcss Last errors/warnings: - 00000.477 W: extended font config - overriding 'filename.Myanmar_Text=mmrtext.ttf' with 'MMRTEXT.TTF' - 00000.479 W: extended font config - overriding 'filename.Mongolian_Baiti=monbaiti.ttf' with 'MONBAITI.TTF' - 00000.799 E: java.security.KeyStoreException: Windows-ROOT not found. Cause: java.security.NoSuchAlgorithmException: Windows-ROOT KeyStore not available - 00007.084 E: java.nio.file.NoSuchFileException: <josm.pref>\EasyPresets.xml - 00007.085 E: <josm.pref>/EasyPresets.xml - 00352.617 E: Handled by bug report queue: java.lang.IllegalArgumentException: {Relation id=10719153 version=3 DT]} is already deleted - 00464.563 E: Handled by bug report queue: java.lang.IllegalArgumentException: {Relation id=-79 version=0 MVDT]} is already deleted - 00665.784 E: Handled by bug report queue: java.lang.IllegalArgumentException: {Relation id=-82 version=0 MVDT]} is already deleted === REPORTED CRASH DATA === BugReportExceptionHandler#handleException: No data collected. Warning issued by: BugReportExceptionHandler#handleException === STACK TRACE === Thread: AWT-EventQueue-0 (23) of main java.lang.IllegalArgumentException: {Relation id=-82 version=0 MVDT]} is already deleted at org.openstreetmap.josm.command.DeleteCommand.lambda$executeCommand$0(DeleteCommand.java:211) at org.openstreetmap.josm.data.osm.DataSet.update(DataSet.java:1065) at org.openstreetmap.josm.command.DeleteCommand.executeCommand(DeleteCommand.java:207) at org.openstreetmap.josm.data.UndoRedoHandler.addNoRedraw(UndoRedoHandler.java:300) at org.openstreetmap.josm.data.UndoRedoHandler.add(UndoRedoHandler.java:354) at org.openstreetmap.josm.actions.mapmode.DeleteAction.deleteRelations(DeleteAction.java:367) at org.openstreetmap.josm.actions.mapmode.DeleteAction.deleteRelation(DeleteAction.java:348) at org.openstreetmap.josm.gui.dialogs.relation.actions.DeleteCurrentRelationAction.actionPerformed(DeleteCurrentRelationAction.java:38) at java.desktop/javax.swing.AbstractButton.fireActionPerformed(Unknown Source) at java.desktop/javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source) at java.desktop/javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source) at java.desktop/javax.swing.DefaultButtonModel.setPressed(Unknown Source) at java.desktop/javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source) at java.desktop/java.awt.AWTEventMulticaster.mouseReleased(Unknown Source) at java.desktop/java.awt.Component.processMouseEvent(Unknown Source) at java.desktop/javax.swing.JComponent.processMouseEvent(Unknown Source) at java.desktop/java.awt.Component.processEvent(Unknown Source) at java.desktop/java.awt.Container.processEvent(Unknown Source) at java.desktop/java.awt.Component.dispatchEventImpl(Unknown Source) at java.desktop/java.awt.Container.dispatchEventImpl(Unknown Source) at java.desktop/java.awt.Component.dispatchEvent(Unknown Source) at java.desktop/java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source) at java.desktop/java.awt.LightweightDispatcher.processMouseEvent(Unknown Source) at java.desktop/java.awt.LightweightDispatcher.dispatchEvent(Unknown Source) at java.desktop/java.awt.Container.dispatchEventImpl(Unknown Source) at java.desktop/java.awt.Window.dispatchEventImpl(Unknown Source) at java.desktop/java.awt.Component.dispatchEvent(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.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source) at java.desktop/java.awt.EventQueue$5.run(Unknown Source) at java.desktop/java.awt.EventQueue$5.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)
comment:3 by , 15 months ago
The patch disables the delete action in the relation editor if the relation has the status deleted
. Not sure if this is the best approach to handle this?
comment:5 by , 15 months ago
I don't think so. The relation editor may contain a different version of the relation, e.g. user may select different members and then decide to delete the original members without being aware that the original relation is deleted as well when confirming this.
comment:6 by , 15 months ago
OK. At that point, I think we should listen for deletion events and ask the user what they want to do. Maybe via a conflict dialog.
comment:7 by , 15 months ago
I just tried what happens if the user tries to save the relation that was deleted before. This is handled with a conflict dialog. So, only the delete action seems to be problematic.
comment:8 by , 15 months ago
You can still undelete the relation, e.g. using undo, or duplicate it. But at this stage, open relation editor with the relation deleted in the data layer, all actions in the relation editor which change the relation in the data layer could cause problems. It is nice that the save action leads to a conflict dialog. The delete action actually should just be silenced as there is no problem.
comment:10 by , 15 months ago
Go for it. I'll be doing the i18n update tomorrow morning and the actual release Monday.
comment:12 by , 15 months ago
Milestone: | → 24.01 |
---|
comment:13 by , 15 months ago
I am not happy with the disabled delete button as it is not obvious why. I'd rather would prefer a similar solution than the save button leading to a conflict which in this case of both status "deleted" would result in no conflict at all.
comment:14 by , 15 months ago
I'm confused. You wrote
The delete action actually should just be silenced as there is no problem.
I understood that as "just disable the delete action when it cannot delete something"
comment:15 by , 15 months ago
Sorry, my bad. I meant that the exception should just be caught. The relation is deleted in the data layer so deleting it in the relation editor just syncs the states which should be no problem.
comment:16 by , 15 months ago
So simply close the dialog instead of disabling the delete button? No matter what changes were made in the editor?
comment:18 by , 15 months ago
Resolution: | fixed |
---|---|
Status: | closed → reopened |
OK, I'll have a look at this.
Can you reproduce this with current tested version r18940? If yes, please try to describe more precisly how to reproduce.