Bug 1730554

Summary: I get an error dialog each time I click the Imagery menu
Product: [Fedora] Fedora Reporter: Ludovic Hirlimann [:Paul-muadib] <ludovic>
Component: josmAssignee: Jakub Jelen <jjelen>
Status: CLOSED ERRATA QA Contact: Fedora Extras Quality Assurance <extras-qa>
Severity: unspecified Docs Contact:
Priority: unspecified    
Version: 30CC: cedric.olivier, jjelen
Target Milestone: ---   
Target Release: ---   
Hardware: x86_64   
OS: Linux   
Whiteboard:
Fixed In Version: josm-0-0.99.15238svn.fc30 Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2019-08-09 01:02:45 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Attachments:
Description Flags
screenshot of my issue none

Description Ludovic Hirlimann [:Paul-muadib] 2019-07-17 06:31:50 UTC
Created attachment 1591286 [details]
screenshot of my issue

Description of problem:

When I want to get spatial imagery I get the attached screenshot saying a bug was encountered, telling me to update to a later version before filing a bug.

Version-Release number of selected component (if applicable):

[ludovic@saraan Downloads]$ rpm -qa |grep josm
josm-0-0.95.15155svn.fc30.noarch
[ludovic@saraan Downloads]$

How reproducible:

All the time

Steps to Reproduce:
1. Start Josm
2. load a zone to edit
3. click the imagery menu

Actual results:

See screenshot

Expected results:

I get the menu and can choose which imagery to get.

Additional info:

you can select don't show this dialog for this session - and get access to the menu when you try again.

Terminal contains the following java stack trace:
2019-07-17 08:27:00.028 SEVERE: Handled by bug report queue: org.openstreetmap.josm.tools.JosmRuntimeException: Fatal: failed to locate image 'osmbasedmap.???'. This is a serious configuration problem. JOSM will stop working.
org.openstreetmap.josm.tools.JosmRuntimeException: Fatal: failed to locate image 'osmbasedmap.???'. This is a serious configuration problem. JOSM will stop working.
	at org.openstreetmap.josm.tools.ImageProvider.getResource(ImageProvider.java:719)
	at org.openstreetmap.josm.tools.ImageProvider.get(ImageProvider.java:679)
	at org.openstreetmap.josm.tools.ImageProvider.get(ImageProvider.java:786)
	at org.openstreetmap.josm.data.imagery.ImageryInfo$ImageryCategory.lambda$getIcon$1(ImageryInfo.java:159)
	at java.util.Map.computeIfAbsent(Map.java:957)
	at java.util.Collections$SynchronizedMap.computeIfAbsent(Collections.java:2672)
	at org.openstreetmap.josm.data.imagery.ImageryInfo$ImageryCategory.getIcon(ImageryInfo.java:159)
	at org.openstreetmap.josm.gui.ImageryMenu.refreshImageryMenu(ImageryMenu.java:199)
	at org.openstreetmap.josm.gui.ImageryMenu$1.menuSelected(ImageryMenu.java:124)
	at javax.swing.JMenu.fireMenuSelected(JMenu.java:1038)
	at javax.swing.JMenu$MenuChangeListener.stateChanged(JMenu.java:1118)
	at javax.swing.DefaultButtonModel.fireStateChanged(DefaultButtonModel.java:349)
	at javax.swing.DefaultButtonModel.setSelected(DefaultButtonModel.java:232)
	at javax.swing.JMenu.setSelected(JMenu.java:305)
	at javax.swing.JMenu.menuSelectionChanged(JMenu.java:1187)
	at javax.swing.MenuSelectionManager.setSelectedPath(MenuSelectionManager.java:127)
	at javax.swing.plaf.basic.BasicMenuUI$Handler.mousePressed(BasicMenuUI.java:450)
	at java.awt.Component.processMouseEvent(Component.java:6536)
	at javax.swing.JComponent.processMouseEvent(JComponent.java:3324)
	at java.awt.Component.processEvent(Component.java:6304)
	at java.awt.Container.processEvent(Container.java:2239)
	at java.awt.Component.dispatchEventImpl(Component.java:4889)
	at java.awt.Container.dispatchEventImpl(Container.java:2297)
	at java.awt.Component.dispatchEvent(Component.java:4711)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4904)
	at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4532)
	at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4476)
	at java.awt.Container.dispatchEventImpl(Container.java:2283)
	at java.awt.Window.dispatchEventImpl(Window.java:2746)
	at java.awt.Component.dispatchEvent(Component.java:4711)
	at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:760)
	at java.awt.EventQueue.access$500(EventQueue.java:97)
	at java.awt.EventQueue$3.run(EventQueue.java:709)
	at java.awt.EventQueue$3.run(EventQueue.java:703)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:84)
	at java.awt.EventQueue$4.run(EventQueue.java:733)
	at java.awt.EventQueue$4.run(EventQueue.java:731)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:730)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:205)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
	at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)

Comment 1 Jakub Jelen 2019-07-24 08:03:20 UTC
Interesting. I see this also happening with the updated versions [1], but not if I download the JAR file directly from josm website. Additionally, there are still the backtraces as described in bug #1700492, which look in some ways very similar but looks like they are handled more correctly and do not lead to the crash of the whole JOSM. This does not happen in the jar from josm website either.

This sounds like some "packaging" issue. When comparing the images that are packaged form svn by me with the ones that I am getting in the official jar file, they are different, optimized and it looks like the svgsalamander has problems reading the original svg files.

I assume that part of the (secret) build process [2] of upstream JOSM is a step that somehow optimizes the SVG images. I spent some time trying to make some SVG minimizer/optimizer locally but without any success so far.

Anyway, patches and contributions are always welcomed.


[1] https://bodhi.fedoraproject.org/updates/FEDORA-2019-9aeef90c65
[2] https://josm.openstreetmap.de/wiki/DevelopersGuide/CreateBuild#Creatingastandardbuild

Comment 2 Jakub Jelen 2019-07-31 10:28:36 UTC
OK, I was able to compress the svg files using svgcleaner [1], but the issues persisted. After some more digging up, it turns out that they are not using the latest version of svgSalamander, but they have some more patches on top of that, which gives me two options:

 * update the svgSalamander with current master (the fixes for the regression in the last release are not released yet)
 * bundle the patched svgSalamander

I am now going to try the first thing and I will keep this bug posted.

[1] https://github.com/RazrFalcon/svgcleaner

Comment 3 Fedora Update System 2019-07-31 12:05:52 UTC
FEDORA-2019-7ad440f159 has been submitted as an update to Fedora 30. https://bodhi.fedoraproject.org/updates/FEDORA-2019-7ad440f159

Comment 4 Fedora Update System 2019-08-01 03:28:33 UTC
josm-0-0.99.15238svn.fc30, svgsalamander-1.1.2-3.fc30 has been pushed to the Fedora 30 testing repository. If problems still persist, please make note of it in this bug report.
See https://fedoraproject.org/wiki/QA:Updates_Testing for
instructions on how to install test updates.
You can provide feedback for this update here: https://bodhi.fedoraproject.org/updates/FEDORA-2019-7ad440f159

Comment 5 Ludovic Hirlimann [:Paul-muadib] 2019-08-01 07:16:04 UTC
I'm still seeing the error with the following stack trace :
2019-08-01 09:11:19.784 INFO: GET http://www.ign.fr/institut/sites/all/themes/ign_institut/logo.png -> HTTP_1 200 (10.2 kB)
2019-08-01 09:11:20.030 INFO: GET https://svn.openstreetmap.org/applications/editors/josm/plugins/cadastre-fr/images/cadastre_small.png -> HTTP_1 200 (222 B)
2019-08-01 09:11:20.045 WARNING: Could not create font Sans
2019-08-01 09:11:20.047 WARNING: Could not load SVG jar:file:/usr/share/java/josm.jar!/images/data/imagery/osmbasedmap.svg
java.lang.NullPointerException
	at com.kitfox.svg.Tspan.appendToShape(Tspan.java:281)
	at com.kitfox.svg.Text.buildText(Text.java:362)
	at com.kitfox.svg.Text.build(Text.java:266)
	at com.kitfox.svg.Text.updateTime(Text.java:610)
	at com.kitfox.svg.Group.updateTime(Group.java:313)
	at com.kitfox.svg.SVGRoot.updateTime(SVGRoot.java:403)
	at com.kitfox.svg.SVGDiagram.updateTime(SVGDiagram.java:243)
	at com.kitfox.svg.SVGUniverse.loadSVG(SVGUniverse.java:616)
	at com.kitfox.svg.SVGUniverse.loadSVG(SVGUniverse.java:468)
	at com.kitfox.svg.SVGUniverse.loadSVG(SVGUniverse.java:445)
	at org.openstreetmap.josm.tools.ImageProvider.getIfAvailableLocalURL(ImageProvider.java:1175)
	at org.openstreetmap.josm.tools.ImageProvider.getIfAvailableImpl(ImageProvider.java:967)
	at org.openstreetmap.josm.tools.ImageProvider.getResource(ImageProvider.java:714)
	at org.openstreetmap.josm.tools.ImageProvider.get(ImageProvider.java:679)
	at org.openstreetmap.josm.tools.ImageProvider.get(ImageProvider.java:786)
	at org.openstreetmap.josm.data.imagery.ImageryInfo$ImageryCategory.lambda$getIcon$1(ImageryInfo.java:160)
	at java.util.Map.computeIfAbsent(Map.java:957)
	at java.util.Collections$SynchronizedMap.computeIfAbsent(Collections.java:2672)
	at org.openstreetmap.josm.data.imagery.ImageryInfo$ImageryCategory.getIcon(ImageryInfo.java:160)
	at org.openstreetmap.josm.gui.ImageryMenu.refreshImageryMenu(ImageryMenu.java:199)
	at org.openstreetmap.josm.gui.ImageryMenu$1.menuSelected(ImageryMenu.java:124)
	at javax.swing.JMenu.fireMenuSelected(JMenu.java:1038)
	at javax.swing.JMenu$MenuChangeListener.stateChanged(JMenu.java:1118)
	at javax.swing.DefaultButtonModel.fireStateChanged(DefaultButtonModel.java:349)
	at javax.swing.DefaultButtonModel.setSelected(DefaultButtonModel.java:232)
	at javax.swing.JMenu.setSelected(JMenu.java:305)
	at javax.swing.JMenu.menuSelectionChanged(JMenu.java:1187)
	at javax.swing.MenuSelectionManager.setSelectedPath(MenuSelectionManager.java:127)
	at javax.swing.plaf.basic.BasicMenuUI$Handler.mousePressed(BasicMenuUI.java:450)
	at java.awt.Component.processMouseEvent(Component.java:6536)
	at javax.swing.JComponent.processMouseEvent(JComponent.java:3324)
	at java.awt.Component.processEvent(Component.java:6304)
	at java.awt.Container.processEvent(Container.java:2239)
	at java.awt.Component.dispatchEventImpl(Component.java:4889)
	at java.awt.Container.dispatchEventImpl(Container.java:2297)
	at java.awt.Component.dispatchEvent(Component.java:4711)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4904)
	at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4532)
	at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4476)
	at java.awt.Container.dispatchEventImpl(Container.java:2283)
	at java.awt.Window.dispatchEventImpl(Window.java:2746)
	at java.awt.Component.dispatchEvent(Component.java:4711)
	at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:760)
	at java.awt.EventQueue.access$500(EventQueue.java:97)
	at java.awt.EventQueue$3.run(EventQueue.java:709)
	at java.awt.EventQueue$3.run(EventQueue.java:703)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:84)
	at java.awt.EventQueue$4.run(EventQueue.java:733)
	at java.awt.EventQueue$4.run(EventQueue.java:731)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:730)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:205)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
	at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)

2019-08-01 09:11:20.054 SEVERE: Handled by bug report queue: org.openstreetmap.josm.tools.JosmRuntimeException: Fatal: failed to locate image 'osmbasedmap.???'. This is a serious configuration problem. JOSM will stop working.
org.openstreetmap.josm.tools.JosmRuntimeException: Fatal: failed to locate image 'osmbasedmap.???'. This is a serious configuration problem. JOSM will stop working.
	at org.openstreetmap.josm.tools.ImageProvider.getResource(ImageProvider.java:719)
	at org.openstreetmap.josm.tools.ImageProvider.get(ImageProvider.java:679)
	at org.openstreetmap.josm.tools.ImageProvider.get(ImageProvider.java:786)
	at org.openstreetmap.josm.data.imagery.ImageryInfo$ImageryCategory.lambda$getIcon$1(ImageryInfo.java:160)
	at java.util.Map.computeIfAbsent(Map.java:957)
	at java.util.Collections$SynchronizedMap.computeIfAbsent(Collections.java:2672)
	at org.openstreetmap.josm.data.imagery.ImageryInfo$ImageryCategory.getIcon(ImageryInfo.java:160)
	at org.openstreetmap.josm.gui.ImageryMenu.refreshImageryMenu(ImageryMenu.java:199)
	at org.openstreetmap.josm.gui.ImageryMenu$1.menuSelected(ImageryMenu.java:124)
	at javax.swing.JMenu.fireMenuSelected(JMenu.java:1038)
	at javax.swing.JMenu$MenuChangeListener.stateChanged(JMenu.java:1118)
	at javax.swing.DefaultButtonModel.fireStateChanged(DefaultButtonModel.java:349)
	at javax.swing.DefaultButtonModel.setSelected(DefaultButtonModel.java:232)
	at javax.swing.JMenu.setSelected(JMenu.java:305)
	at javax.swing.JMenu.menuSelectionChanged(JMenu.java:1187)
	at javax.swing.MenuSelectionManager.setSelectedPath(MenuSelectionManager.java:127)
	at javax.swing.plaf.basic.BasicMenuUI$Handler.mousePressed(BasicMenuUI.java:450)
	at java.awt.Component.processMouseEvent(Component.java:6536)
	at javax.swing.JComponent.processMouseEvent(JComponent.java:3324)
	at java.awt.Component.processEvent(Component.java:6304)
	at java.awt.Container.processEvent(Container.java:2239)
	at java.awt.Component.dispatchEventImpl(Component.java:4889)
	at java.awt.Container.dispatchEventImpl(Container.java:2297)
	at java.awt.Component.dispatchEvent(Component.java:4711)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4904)
	at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4532)
	at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4476)
	at java.awt.Container.dispatchEventImpl(Container.java:2283)
	at java.awt.Window.dispatchEventImpl(Window.java:2746)
	at java.awt.Component.dispatchEvent(Component.java:4711)
	at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:760)
	at java.awt.EventQueue.access$500(EventQueue.java:97)
	at java.awt.EventQueue$3.run(EventQueue.java:709)
	at java.awt.EventQueue$3.run(EventQueue.java:703)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:84)
	at java.awt.EventQueue$4.run(EventQueue.java:733)
	at java.awt.EventQueue$4.run(EventQueue.java:731)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:730)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:205)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
	at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)

2019-08-01 09:11:20.508 INFO: GET https://josm.openstreetmap.de/tested -> HTTP_1 200
2019-08-01 09:11:29.988 INFO: Changeset updater inactive
2019-08-01 09:11:29.988 INFO: Message notifier inactive
[ludovic@saraan ~]$ 

STR :
1) launch josm
2) select an area where you want to work and download the data
3) go to the menu. 

Menu loads and works fine when no data is being worked on.
I updated josm with sudo dnf update josm --enablerepo=updates-testing this did not install svgsalamander-1.1.2-3.fc30.

When I updated svgsalamander the issue solved itself.

Comment 6 Jakub Jelen 2019-08-01 08:08:41 UTC
The actual fix is in the svgsalamander, so both of them needs to be updated (that is the reason why they are both in the one update. Thank you for verifying the fix.

Comment 7 Fedora Update System 2019-08-09 01:02:45 UTC
josm-0-0.99.15238svn.fc30, svgsalamander-1.1.2-3.fc30 has been pushed to the Fedora 30 stable repository. If problems still persist, please make note of it in this bug report.