http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57074
Alan Modra <amodra at gmail dot com> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |amodra at gmail dot com --- Comment #2 from Alan Modra <amodra at gmail dot com> 2013-05-02 08:18:45 UTC --- BTW, running gkeytool without any args shows the problem too. When libjava is built with -g -O2, I get Exception in thread "main" java.lang.NoClassDefFoundError: gnu.classpath.tools.keytool.Main at java.lang.Class.initializeClass(natClass.cc) Caused by: java.lang.IllegalMonitorStateException: current thread not owner at java.lang.Object.notifyAll(natObject.cc:1437) at gnu.gcj.runtime.SystemClassLoader.findClass(natSystemClassLoader.cc:29) at java.lang.ClassLoader.loadClass(ClassLoader.java) at java.lang.ClassLoader.loadClass(ClassLoader.java:387) at java.lang.Class.initializeClass(natClass.cc:728) But note that natObject.cc:1437 is a lie! The real failure occurs natObject.cc:1431 and it looks like the two identical throws have merged. Putting a break on the right place, I see (gdb) p this $8 = (java::lang::Object * const) 0xffc6aec <gnu::classpath::tools::keytool::Main$ShutdownHook::class$> (gdb) p/x addr $9 = 0xffc6aec Uh oh! The address is not 8-byte aligned, so one of the flag bits appears to be set. This is why we appear to have locking problems.