Modify

Opened 6 years ago

Closed 6 years ago

#12246 closed defect (invalid)

JOSM does not quit - JCSCacheManager shutdown stalls due to missing method: java.util.concurrent.ConcurrentHashMap.keySet()

Reported by: cmuelle8 Owned by: cmuelle8
Priority: normal Milestone:
Component: Core Version: latest
Keywords: Cc:

Description

I've experienced this for a while now and think it's worth reporting:

java.lang.NoSuchMethodError: java.util.concurrent.ConcurrentHashMap.keySet()Ljava/util/concurrent/ConcurrentHashMap$KeySetView;
        at org.apache.commons.jcs.utils.threadpool.ThreadPoolManager.getPoolNames(ThreadPoolManager.java:287)
        at org.apache.commons.jcs.utils.threadpool.ThreadPoolManager.dispose(ThreadPoolManager.java:216)
        at org.apache.commons.jcs.engine.control.CompositeCacheManager.shutDown(CompositeCacheManager.java:678)
        at org.openstreetmap.josm.data.cache.JCSCacheManager.shutdown(JCSCacheManager.java:181)
        at org.openstreetmap.josm.Main.exitJosm(Main.java:1077)
        at org.openstreetmap.josm.gui.MainApplication$1.windowClosing(MainApplication.java:112)
        at java.awt.AWTEventMulticaster.windowClosing(AWTEventMulticaster.java:349)
        at java.awt.AWTEventMulticaster.windowClosing(AWTEventMulticaster.java:349)
        at java.awt.Window.processWindowEvent(Window.java:2051)
        at javax.swing.JFrame.processWindowEvent(JFrame.java:290)
        at java.awt.Window.processEvent(Window.java:2009)
        at java.awt.Component.dispatchEventImpl(Component.java:4872)
        at java.awt.Container.dispatchEventImpl(Container.java:2287)
        at java.awt.Window.dispatchEventImpl(Window.java:2719)
        at java.awt.Component.dispatchEvent(Component.java:4698)
        at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:747)
        at java.awt.EventQueue.access$300(EventQueue.java:103)
        at java.awt.EventQueue$3.run(EventQueue.java:706)
        at java.awt.EventQueue$3.run(EventQueue.java:704)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:77)
        at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:87)
        at java.awt.EventQueue$4.run(EventQueue.java:720)
        at java.awt.EventQueue$4.run(EventQueue.java:718)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:77)
        at java.awt.EventQueue.dispatchEvent(EventQueue.java:717)
        at org.GNOME.Accessibility.AtkWrapper$5.dispatchEvent(AtkWrapper.java:697)
        at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
        at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
        at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)

Attachments (0)

Change History (5)

comment:1 Changed 6 years ago by cmuelle8

Environment:

java version "1.7.0_91"
OpenJDK Runtime Environment (IcedTea 2.6.3) (7u91-2.6.3-0ubuntu0.15.10.1)
OpenJDK 64-Bit Server VM (build 24.91-b01, mixed mode)

comment:2 Changed 6 years ago by Don-vip

Where does you josm.jar come from? It seems it have been compiled with jdk8 instead of jdk7.

comment:3 Changed 6 years ago by Don-vip

Owner: changed from team to cmuelle8
Status: newneedinfo

can you please also add a status report as requested on newticket? Thanks.

comment:4 Changed 6 years ago by cmuelle8

First things first:

Build-Date:2015-12-31 15:58:29
Revision:9229
Is-Local-Build:true

Identification: JOSM/1.5 (9229 SVN de) Linux Ubuntu 15.10
Memory Usage: 693 MB / 1609 MB (358 MB allocated, but free)
Java version: 1.7.0_91, Oracle Corporation, OpenJDK 64-Bit Server VM
Java package: openjdk-7-jre:amd64-7u91-2.6.3-0ubuntu0.15.10.1

Plugins:
- PicLayer (31772)
- RoadSigns (31772)
- alignways (31772)
- apache-commons (31772)
- editgpx (31106)
- imagery_offset_db (31772)
- kendzi3d (1.0.189)
- kendzi3d-jogl (41)
- kendzi3d-resources (0.0.1)
- log4j (31879)
- openvisible (31106)
- pbf (31772)
- photo_geotagging (31772)
- photoadjust (31772)
- poly (31772)
- print (31772)
- reverter (31772)
- turnlanes (31772)
- turnrestrictions (31772)
- utilsplugin2 (31890)
- wikipedia (31866)

I've done some more research on this - as you've pointed out, I had built with openjdk8 and ran with jdk7. Using this configuration I am able to reproduce the bug reported, just tested with a fresh checkout. The following configurations, however, are fine and do not show bogus behavior:

  • building w/ openjdk7, running w/ openjdk7
  • building w/ openjdk7, running w/ openjdk8
  • building w/ openjdk8, running w/ openjdk8

If you think it's not worth the effort to do research on this, I do not oppose closing the bug. Building with openjdk8 and running with a java version below probably isn't intended by the jdk devs anyway. Maybe a warning will help, however, like:

JOSM was built with a JDK versioned higher than your runtime, please update your runtime!

I know that there is a warning in place currently as MOTD, requesting to upgrade to Java8. But maybe similar problems will arise on a major upgrade of java versions at a later time, again. As such, checking built/runtime pair at start might be helpful to more easily detect potential bug sources.

Greetings

comment:5 Changed 6 years ago by Don-vip

Resolution: invalid
Status: needinfoclosed

OK thanks for the info.
There's already an error message if you try to run JOSM with Java < 7, and a warning message on startup page of you run it with Java 7.
We take care of compiling JOSM with the adequate JDK. Anyone who tries to compile JOSM by hand must take care of running it with a correct runtime also :)

Modify Ticket

Change Properties
Set your email in Preferences
Action
as closed The owner will remain cmuelle8.
as The resolution will be set.
The resolution will be deleted.

Add Comment


E-mail address and name can be saved in the Preferences.

 
Note: See TracTickets for help on using tickets.