[fedora-java] Unexpected Exception on JVM shutdown

Roland Grunberg rgrunber at redhat.com
Fri Nov 8 20:11:55 UTC 2013


> I've recently switched to the f20, and each time I shutdown Eclipse,
> ABRT reports an error (via abrt-java-connector):
> 
> Uncaught java.lang.ClassNotFoundException exception in thread "main" in
> a method java.lang.ClassLoader.loadClass() with signature
> (Ljava/lang/String;Z
> )Ljava/lang/Class;
> Exception in thread "main"
> java.lang.ClassNotFoundException:
> .usr.lib64.eclipse..plugins.org.eclipse.equinox.launcher_1.3.0.v20131030-1100.jar
> 	at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
> [jar:file:/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.60-2.4.3.0.fc20.x86_64/jre/lib/rt.ja
> r!/java/net/URLClassLoader$1.class]
> 	at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
> [jar:file:/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.60-2.4.3.0.fc20.x86_64/jre/lib/rt.ja
> r!/java/net/URLClassLoader$1.class]
> 	at java.security.AccessController.doPrivileged(Native Method)
> [jar:file:/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.60-2.4.3.0.fc20.x86_64/jre/lib/r
> t.jar!/java/security/AccessController.class]
> 	at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
> [jar:file:/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.60-2.4.3.0.fc20.x86_64/jre/lib/r
> t.jar!/java/net/URLClassLoader.class]
> 	at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
> [jar:file:/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.60-2.4.3.0.fc20.x86_64/jre/lib/rt.jar
> !/java/lang/ClassLoader.class]
> 	at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
> [jar:file:/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.60-2.4.3.0.fc20.x86_64/jre/li
> b/rt.jar!/sun/misc/Launcher$AppClassLoader.class]
> 	at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
> [jar:file:/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.60-2.4.3.0.fc20.x86_64/jre/lib/rt.jar
> !/java/lang/ClassLoader.class]

I was able to use SystemTap's Java probe support to do a general search for this :

probe java("/usr/lib64/eclipse//plugins/org.eclipse.equinox.launcher_1.3.0.v20131104-1241.jar").class("java.net.URLClassLoader").method("findClass(String):366") {
  printf("ClassNotFoundException : %s\n", user_string($arg1))
}

...

ClassNotFoundException : com.sun.org.apache.xml.internal.serializer.XMLEntities
ClassNotFoundException : com.sun.org.apache.xml.internal.serializer.XMLEntities
ClassNotFoundException : com.sun.org.apache.xml.internal.serializer.XMLEntities_en
ClassNotFoundException : com.sun.org.apache.xml.internal.serializer.XMLEntities_en
ClassNotFoundException : com.sun.org.apache.xml.internal.serializer.XMLEntities_en_US
ClassNotFoundException : com.sun.org.apache.xml.internal.serializer.XMLEntities_en_US

Even without that I was still able to remotely debug as well without seeing the JVM
crash so I managed to get a stacktrace.

java.lang.ClassNotFoundException: com.sun.org.apache.xml.internal.serializer.XMLEntities
	at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
	at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:412)
	at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
	at java.util.ResourceBundle$RBClassLoader.loadClass(ResourceBundle.java:450)
	at java.util.ResourceBundle$Control.newBundle(ResourceBundle.java:2566)
	at java.util.ResourceBundle.loadBundle(ResourceBundle.java:1436)
	at java.util.ResourceBundle.findBundle(ResourceBundle.java:1400)
	at java.util.ResourceBundle.findBundle(ResourceBundle.java:1354)
	at java.util.ResourceBundle.findBundle(ResourceBundle.java:1354)
	at java.util.ResourceBundle.getBundleImpl(ResourceBundle.java:1296)
	at java.util.ResourceBundle.getBundle(ResourceBundle.java:721)
	at com.sun.org.apache.xml.internal.serializer.CharInfo.<init>(CharInfo.java:183)
	at com.sun.org.apache.xml.internal.serializer.CharInfo.<init>(CharInfo.java:55)
	at com.sun.org.apache.xml.internal.serializer.CharInfo$1.run(CharInfo.java:474)
	at java.security.AccessController.doPrivileged(Native Method)
	at com.sun.org.apache.xml.internal.serializer.CharInfo.getCharInfoBasedOnPrivilege(CharInfo.java:471)
	at com.sun.org.apache.xml.internal.serializer.CharInfo.getCharInfo(CharInfo.java:507)
	at com.sun.org.apache.xml.internal.serializer.ToXMLStream.<clinit>(ToXMLStream.java:59)
	at com.sun.org.apache.xalan.internal.xsltc.runtime.output.TransletOutputHandlerFactory.getSerializationHandler(TransletOutputHandlerFactory.java:165)
	at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.getOutputHandler(TransformerImpl.java:461)
	at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transform(TransformerImpl.java:344)
	at org.eclipse.jdt.internal.corext.util.History.save(History.java:312)
	at org.eclipse.jdt.internal.corext.util.History.save(History.java:190)
	at org.eclipse.jdt.internal.ui.JavaPlugin.stop(JavaPlugin.java:618)
	at org.eclipse.osgi.framework.internal.core.BundleContextImpl$2.run(BundleContextImpl.java:771)
	at java.security.AccessController.doPrivileged(Native Method)
	at org.eclipse.osgi.framework.internal.core.BundleContextImpl.stop(BundleContextImpl.java:764)
	at org.eclipse.osgi.framework.internal.core.BundleHost.stopWorker(BundleHost.java:510)
	at org.eclipse.osgi.framework.internal.core.AbstractBundle.suspend(AbstractBundle.java:566)
	at org.eclipse.osgi.framework.internal.core.Framework.suspendBundle(Framework.java:1206)
	at org.eclipse.osgi.framework.internal.core.StartLevelManager.decFWSL(StartLevelManager.java:592)
	at org.eclipse.osgi.framework.internal.core.StartLevelManager.doSetStartLevel(StartLevelManager.java:257)
	at org.eclipse.osgi.framework.internal.core.StartLevelManager.shutdown(StartLevelManager.java:215)
	at org.eclipse.osgi.framework.internal.core.InternalSystemBundle.suspend(InternalSystemBundle.java:284)
	at org.eclipse.osgi.framework.internal.core.Framework.shutdown(Framework.java:692)
	at org.eclipse.osgi.framework.internal.core.Framework.close(Framework.java:600)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.shutdown(EclipseStarter.java:400)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:200)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:606)
	at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:645)
	at org.eclipse.equinox.launcher.Main.basicRun(Main.java:600)
	at org.eclipse.equinox.launcher.Main.run(Main.java:1459)
	at org.eclipse.equinox.launcher.Main.main(Main.java:1435)

Hope this helps,
-- 
Roland Grunberg


More information about the java-devel mailing list