Modify

Opened 3 weeks ago

Closed 3 weeks ago

Last modified 2 weeks ago

#24630 closed defect (fixed)

Toggling visibility of the UK Cadastral Parcels layer with Urban Eye 3D open crashed JOSM

Reported by: josm@… Owned by: zkir
Priority: normal Milestone:
Component: Plugin UrbanEye3D Version:
Keywords: template_report Cc:

Description

What steps will reproduce the problem?

  1. Have the OSMUK Cadastral Parcels layer open and visible, and Bing Sat open and visible, but with a lower priroity
  2. Open Urban Eye 3D in a detached window
  3. Hide visibility of the OSMUK Cadastral Parcels layer

What is the expected result?

I can continue editing. Maybe the ground now appears from Bing Sat in Urban Eye 3D

What happens instead?

JOSM crashes with a null pointer exception (details below)

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

Relative:URL: ^/trunk
Repository:UUID: 0c6e7542-c601-0410-84e7-c038aed88b3b
Last:Changed Date: 2026-01-31 13:00:34 +0100 (Sat, 31 Jan 2026)
Revision:19481
Build-Date:2026-02-01 02:30:45
URL:https://josm.openstreetmap.de/svn/trunk

Identification: JOSM/1.5 (19481 en_GB) Linux Debian GNU/Linux 13 (trixie)
Memory Usage: 1056 MB / 11960 MB (49 MB allocated, but free)
Java version: 21.0.10+7-Debian-1deb13u1, Debian, OpenJDK 64-Bit Server VM
Look and Feel: javax.swing.plaf.metal.MetalLookAndFeel
Screen: :0.0 1920x1080x[Multi depth]@60Hz (scaling 1.00×1.00) :0.1 1920x1080x[Multi depth]@60Hz (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_GB.UTF-8
System property file.encoding: UTF-8
System property sun.jnu.encoding: UTF-8
Locale info: en_GB
Numbers with default locale: 1234567890 -> 1234567890
Desktop environment: XFCE
Java package: openjdk-21-jre:amd64-21.0.10+7-1~deb13u1
Java ATK Wrapper package: libatk-wrapper-java:all-0.40.0-3
libcommons-logging-java: libcommons-logging-java:all-1.3.0-2
fonts-noto: fonts-noto:all-20201225-2
VM arguments: [--module-path=/usr/share/openjfx/lib, --add-modules=java.scripting,java.sql,javafx.controls,javafx.media,javafx.swing,javafx.web, -Djosm.restart=true, -Djava.net.useSystemProxies=true, -XX:MaxRAMPercentage=75.0, --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]
Dataset consistency test: No problems found

Plugins:
+ Mapillary (1816)
+ apache-commons (36474)
+ buildings_tools (36474)
+ jaxb (36474)
+ jogl (1.2.3)
+ log4j (36474)
+ measurement (36474)
+ terracer (36474)
+ todo (157)
+ urbaneye3d (1.8.0)
+ utilsplugin2 (36474)

Tagging presets:
+ https://raw.githubusercontent.com/yopaseopor/traffic_signs_preset_JOSM/master/GB.zip
+ https://josm.openstreetmap.de/josmfile?page=Presets/ParkingLanes&zip=1

Map paint styles:
+ https://josm.openstreetmap.de/josmfile?page=Styles/Potlatch2&zip=1
+ https://josm.openstreetmap.de/josmfile?page=Styles/ParkingLanes&zip=1
- https://josm.openstreetmap.de/josmfile?page=Styles/SimpleBuildingTags&zip=1
- https://josm.openstreetmap.de/josmfile?page=Styles/Surface&zip=1
- https://josm.openstreetmap.de/josmfile?page=Styles/Surface-DataEntry&zip=1
- https://josm.openstreetmap.de/josmfile?page=Styles/Enhanced_Lane_and_Road_Attributes&zip=1
- https://josm.openstreetmap.de/josmfile?page=Styles/Lane_and_Road_Attributes&zip=1
- https://josm.openstreetmap.de/josmfile?page=Styles/SimpleRoofTags&zip=1
- https://josm.openstreetmap.de/josmfile?page=Styles/FixmeAndNote&zip=1
- https://josm.openstreetmap.de/josmfile?page=Styles/Maxspeed&zip=1
- https://josm.openstreetmap.de/josmfile?page=Styles/Modified&zip=1
+ https://josm.openstreetmap.de/josmfile?page=Styles/SidewalksPlus&zip=1
- https://raw.githubusercontent.com/yopaseopor/traffic_signs_style_JOSM/master/Styles_Traffic_signs_EUR_OC.zip
- https://josm.openstreetmap.de/josmfile?page=Styles/Building_Levels_Labels&zip=1
- https://josm.openstreetmap.de/josmfile?page=Styles/Coloured_buildings_en&zip=1
- https://josm.openstreetmap.de/josmfile?page=Styles/Sidewalks&zip=1
- https://josm.openstreetmap.de/josmfile?page=Styles/SidewalksAndFootways&zip=1

Last errors/warnings:
- 00153.751 W: java.io.IOException: Attribution is not loaded yet
- 00153.752 W: java.io.IOException: Attribution is not loaded yet
- 00153.752 W: java.io.IOException: Attribution is not loaded yet
- 00153.752 W: java.io.IOException: Attribution is not loaded yet
- 00153.753 W: java.io.IOException: Attribution is not loaded yet
- 00153.753 W: java.io.IOException: Attribution is not loaded yet
- 00153.753 W: java.io.IOException: Attribution is not loaded yet
- 00153.753 W: java.io.IOException: Attribution is not loaded yet
- 00153.754 W: java.io.IOException: Attribution is not loaded yet
- 00190.567 E: Handled by bug report queue: java.lang.NullPointerException: Cannot invoke "String.isEmpty()" because the return value of "org.openstreetmap.josm.data.imagery.ImageryInfo.getId()" is null



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

Warning issued by: BugReportExceptionHandler#handleException

=== STACK TRACE ===
Thread: AWT-EventQueue-0 (35) of main
java.lang.NullPointerException: Cannot invoke "String.isEmpty()" because the return value of "org.openstreetmap.josm.data.imagery.ImageryInfo.getId()" is null
	at ru.zkir.customtms.TileCache.validateImageryInfo(TileCache.java:111)
	at ru.zkir.customtms.MapRenderer.setCurrentImagery(MapRenderer.java:182)
	at ru.zkir.urbaneye3d.GroundPlane.update(GroundPlane.java:68)
	at ru.zkir.urbaneye3d.DialogWindow3D.propertyChange(DialogWindow3D.java:253)
	at java.desktop/java.beans.PropertyChangeSupport.fire(PropertyChangeSupport.java:343)
	at java.desktop/java.beans.PropertyChangeSupport.firePropertyChange(PropertyChangeSupport.java:335)
	at java.desktop/java.beans.PropertyChangeSupport.firePropertyChange(PropertyChangeSupport.java:268)
	at java.desktop/java.beans.PropertyChangeSupport.firePropertyChange(PropertyChangeSupport.java:310)
	at org.openstreetmap.josm.gui.layer.Layer.fireVisibleChanged(Layer.java:472)
	at org.openstreetmap.josm.gui.layer.Layer.setVisible(Layer.java:394)
	at org.openstreetmap.josm.gui.dialogs.LayerListDialog$LayerListModel.setValueAt(LayerListDialog.java:1153)
	at java.desktop/javax.swing.JTable.setValueAt(JTable.java:2793)
	at java.desktop/javax.swing.JTable.editingStopped(JTable.java:4791)
	at java.desktop/javax.swing.AbstractCellEditor.fireEditingStopped(AbstractCellEditor.java:152)
	at java.desktop/javax.swing.DefaultCellEditor$EditorDelegate.stopCellEditing(DefaultCellEditor.java:375)
	at java.desktop/javax.swing.DefaultCellEditor.stopCellEditing(DefaultCellEditor.java:234)
	at java.desktop/javax.swing.DefaultCellEditor$EditorDelegate.actionPerformed(DefaultCellEditor.java:392)
	at java.desktop/javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1972)
	at java.desktop/javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2314)
	at java.desktop/javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:407)
	at java.desktop/javax.swing.JToggleButton$ToggleButtonModel.setPressed(JToggleButton.java:411)
	at java.desktop/javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:279)
	at java.desktop/java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:299)
	at java.desktop/java.awt.Component.processMouseEvent(Component.java:6621)
	at java.desktop/javax.swing.JComponent.processMouseEvent(JComponent.java:3398)
	at java.desktop/java.awt.Component.processEvent(Component.java:6386)
	at java.desktop/java.awt.Container.processEvent(Container.java:2266)
	at java.desktop/java.awt.Component.dispatchEventImpl(Component.java:4996)
	at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2324)
	at java.desktop/java.awt.Component.dispatchEvent(Component.java:4828)
	at java.desktop/javax.swing.plaf.basic.BasicTableUI$Handler.repostEvent(BasicTableUI.java:978)
	at java.desktop/javax.swing.plaf.basic.BasicTableUI$Handler.mouseReleased(BasicTableUI.java:1194)
	at java.desktop/java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:300)
	at java.desktop/java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:299)
	at java.desktop/java.awt.Component.processMouseEvent(Component.java:6621)
	at java.desktop/javax.swing.JComponent.processMouseEvent(JComponent.java:3398)
	at java.desktop/java.awt.Component.processEvent(Component.java:6386)
	at java.desktop/java.awt.Container.processEvent(Container.java:2266)
	at java.desktop/java.awt.Component.dispatchEventImpl(Component.java:4996)
	at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2324)
	at java.desktop/java.awt.Component.dispatchEvent(Component.java:4828)
	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:4828)
	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:400)
	at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:87)
	at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:98)
	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:400)
	at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:87)
	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 (2)

Screenshot_2026-02-09_21-12-11.png (23.7 KB ) - added by josm@… 3 weeks ago.
Visible layers before crash
Screenshot_2026-02-09_21-22-47.png (21.5 KB ) - added by josm@… 3 weeks ago.
Bing Sat layer information

Download all attachments as: .zip

Change History (16)

by josm@…, 3 weeks ago

Visible layers before crash

by josm@…, 3 weeks ago

Bing Sat layer information

comment:1 by josm@…, 3 weeks ago

Looking further at this, it seems that it is not an issue with the OSMUK Cadastral Parcels layer - I can turn that on and off with the Bing Sat layer inactive, and Esri active.

It seems to be when the Bing Sat layer becomes active, probably because the layer info appears to suggest that it has no ID.

comment:2 by SekeRob, 3 weeks ago

Got JOSM crashing since UE3D added this layer rendering (weak GPU card). A specific plugin option tickbox to not add these layers below buildings, be it imagery or Carto would be great. Now I have to think of deselecting everything in the layer panel which then gives a black background in the edit window making orientation rather difficult.

comment:3 by zkir, 3 weeks ago

Hello josm@... , thank you for this bug report.

Maybe I am missing something obvious, but what this "Bing Sat" layer is? how to activate it?
All I have is "Bing Aerial Imagery" and it does have ID.

Sharing of OSM file of your working area could also help.

comment:4 by zkir, 3 weeks ago

Owner: changed from zkir to josm@…
Status: newneedinfo

comment:5 by zkir, 3 weeks ago

Some analysis reveals the following:
The problem has nothing to do with the "OSMUK Cadastral Parcels" layer.
The problem is with self-made(?) bing layer. The plugin needs layers to have IDs.

comment:6 by josm@…, 3 weeks ago

Ok, I've been trying to figure out what I've done here!

I have the following in my preferences.xml under preferences -> maps

   <map>
      <tag key='name' value='Bing Sat'/>
      <tag key='type' value='bing'/>
      <tag key='url' value='http://www.bing.com/maps/'/>
      <tag key='customHttpHeaders' value='{}'/>
    </map>

From what I can see, this is no different in theory to the "Bing aerial imagery", but the latter has a lot more options.

I don't know when I added "Bing Sat" (or if it even was me - but I suspect it was). But whenever it was added, it was not by manually modifying the preferences file - it would have been through the UI - which apparently allows them to be added without an ID.

I guess the question going forwards for Urban Eye 3D is can and should the lack of an ID be handled more gracefully.

Without knowing the code, my initial suggestions would be to either skip any imagery without an ID, or generate an ID (random UUID?) for use within Urban Eye 3D. Would these be possible?

comment:7 by zkir, 3 weeks ago

Owner: changed from josm@… to zkir
Status: needinfoassigned

comment:8 by zkir, 3 weeks ago

Resolution: fixed
Status: assignedclosed

I think it could. I've found, that if satellite layer is configured manually (Menu->Edit-Preference->Imagery, one of the plus buttons), it does not have an id. There is no even a field to specify it, so we need to support this case.

This fix is available in the new version 1.8.1. Please let me know whether it works for you.

comment:9 by stoecker, 3 weeks ago

Yes. That's correct. The ID is only for referencing server generated layers (to remove/replace/update). ID is not needed for local layers. Usually the URL is used for these in case a reference is needed.

If I remember right there is also a function which either returns ID or URL.

comment:10 by zkir, 3 weeks ago

@stoecker, thank you for the clarification. URL seems to be unique enough, so I can use it :)

comment:11 by josm@…, 3 weeks ago

This fix is available in the new version ​1.8.1. Please let me know whether it works for you.

I've not yet been able to download this version via doing a JOSM plugin update, but will keep trying. Perhaps it takes a while to propagate

comment:12 by stoecker, 3 weeks ago

1.8.1 is released, but the file contains version 1.8.0 inside. Manifest was not updated ;-)

comment:13 by zkir, 3 weeks ago

Manifest was not updated

Shame on me )

comment:14 by josm@…, 2 weeks ago

I've tried 1.8.1 now and it looks to have solved the issue. Thank you!

Modify Ticket

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