Community
Participate
Working Groups
Build Identifier: 20110218-0911 Here's another rare & hard to reproduce exception I encountered upon starting an RCP application with load-time weaving enabled (see bug 338033 for another exception found in the the same environment): Jun 6, 2011 3:19:50 PM org.aspectj.weaver.tools.Jdk14Trace error SEVERE: register definition failed java.lang.NullPointerException at org.aspectj.weaver.bcel.AtAjAttributes.getMethodArgumentNames(AtAjAttributes.java:1760) at org.aspectj.weaver.bcel.AtAjAttributes.access$000(AtAjAttributes.java:92) at org.aspectj.weaver.bcel.AtAjAttributes$AjAttributeMethodStruct.getArgumentNames(AtAjAttributes.java:153) at org.aspectj.weaver.bcel.AtAjAttributes.extractBindings(AtAjAttributes.java:1576) at org.aspectj.weaver.bcel.AtAjAttributes.handleAroundAnnotation(AtAjAttributes.java:1348) at org.aspectj.weaver.bcel.AtAjAttributes.readAj5MethodAttributes(AtAjAttributes.java:448) at org.aspectj.weaver.bcel.BcelMethod.unpackAjAttributes(BcelMethod.java:203) at org.aspectj.weaver.bcel.BcelMethod.<init>(BcelMethod.java:92) at org.aspectj.weaver.bcel.BcelObjectType.getDeclaredMethods(BcelObjectType.java:290) at org.aspectj.weaver.ReferenceType.getDeclaredMethods(ReferenceType.java:770) at org.aspectj.weaver.ResolvedType.getDeclaredAdvice(ResolvedType.java:947) at org.aspectj.weaver.ResolvedType.getDeclaredShadowMungers(ResolvedType.java:987) at org.aspectj.weaver.ResolvedType.collectShadowMungers(ResolvedType.java:822) at org.aspectj.weaver.ResolvedType.collectCrosscuttingMembers(ResolvedType.java:749) at org.aspectj.weaver.CrosscuttingMembersSet.addOrReplaceAspect(CrosscuttingMembersSet.java:85) at org.aspectj.weaver.CrosscuttingMembersSet.addOrReplaceAspect(CrosscuttingMembersSet.java:69) at org.aspectj.weaver.bcel.BcelWeaver.addLibraryAspect(BcelWeaver.java:202) at org.aspectj.weaver.loadtime.ClassLoaderWeavingAdaptor.registerAspects(ClassLoaderWeavingAdaptor.java:466) at org.aspectj.weaver.loadtime.ClassLoaderWeavingAdaptor.registerDefinitions(ClassLoaderWeavingAdaptor.java:290) at org.aspectj.weaver.loadtime.ClassLoaderWeavingAdaptor.initialize(ClassLoaderWeavingAdaptor.java:176) at org.eclipse.equinox.weaving.aspectj.loadtime.OSGiWeavingAdaptor.initialize(Unknown Source) at org.eclipse.equinox.weaving.aspectj.AspectJWeavingService.ensureAdaptorInit(Unknown Source) at org.eclipse.equinox.weaving.aspectj.AspectJWeavingService.preProcess(Unknown Source) at org.eclipse.equinox.weaving.adaptors.WeavingAdaptor.weaveClass(Unknown Source) at org.eclipse.equinox.weaving.hooks.WeavingHook.processClass(Unknown Source) at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.defineClass(ClasspathManager.java:575) at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findClassImpl(ClasspathManager.java:550) at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findLocalClassImpl(ClasspathManager.java:481) at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findLocalClass_LockClassLoader(ClasspathManager.java:469) at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findLocalClass(ClasspathManager.java:449) at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.findLocalClass(DefaultClassLoader.java:216) at org.eclipse.osgi.internal.loader.BundleLoader.findLocalClass(BundleLoader.java:393) at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:469) at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:422) at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:410) at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(DefaultClassLoader.java:107) at java.lang.ClassLoader.loadClass(ClassLoader.java:247) at org.eclipse.osgi.internal.loader.BundleLoader.loadClass(BundleLoader.java:338) at org.eclipse.osgi.framework.internal.core.BundleHost.loadClass(BundleHost.java:232) at org.eclipse.osgi.framework.internal.core.AbstractBundle.loadBundleActivator(AbstractBundle.java:149) at org.eclipse.osgi.framework.internal.core.BundleContextImpl.start(BundleContextImpl.java:751) at org.eclipse.osgi.framework.internal.core.BundleHost.startWorker(BundleHost.java:370) at org.eclipse.osgi.framework.internal.core.AbstractBundle.resume(AbstractBundle.java:374) at org.eclipse.osgi.framework.internal.core.Framework.resumeBundle(Framework.java:1067) at org.eclipse.osgi.framework.internal.core.StartLevelManager.resumeBundles(StartLevelManager.java:561) at org.eclipse.osgi.framework.internal.core.StartLevelManager.resumeBundles(StartLevelManager.java:546) at org.eclipse.osgi.framework.internal.core.StartLevelManager.incFWSL(StartLevelManager.java:459) at org.eclipse.osgi.framework.internal.core.StartLevelManager.doSetStartLevel(StartLevelManager.java:243) at org.eclipse.osgi.framework.internal.core.StartLevelManager.dispatchEvent(StartLevelManager.java:440) at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:227) at org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.run(EventManager.java:337) [foo] warning register definition failed -- (NullPointerException) null null java.lang.NullPointerException at org.aspectj.weaver.bcel.AtAjAttributes.getMethodArgumentNames(AtAjAttributes.java:1760) at org.aspectj.weaver.bcel.AtAjAttributes.access$000(AtAjAttributes.java:92) at org.aspectj.weaver.bcel.AtAjAttributes$AjAttributeMethodStruct.getArgumentNames(AtAjAttributes.java:153) at org.aspectj.weaver.bcel.AtAjAttributes.extractBindings(AtAjAttributes.java:1576) at org.aspectj.weaver.bcel.AtAjAttributes.handleAroundAnnotation(AtAjAttributes.java:1348) at org.aspectj.weaver.bcel.AtAjAttributes.readAj5MethodAttributes(AtAjAttributes.java:448) at org.aspectj.weaver.bcel.BcelMethod.unpackAjAttributes(BcelMethod.java:203) at org.aspectj.weaver.bcel.BcelMethod.<init>(BcelMethod.java:92) at org.aspectj.weaver.bcel.BcelObjectType.getDeclaredMethods(BcelObjectType.java:290) at org.aspectj.weaver.ReferenceType.getDeclaredMethods(ReferenceType.java:770) at org.aspectj.weaver.ResolvedType.getDeclaredAdvice(ResolvedType.java:947) at org.aspectj.weaver.ResolvedType.getDeclaredShadowMungers(ResolvedType.java:987) at org.aspectj.weaver.ResolvedType.collectShadowMungers(ResolvedType.java:822) at org.aspectj.weaver.ResolvedType.collectCrosscuttingMembers(ResolvedType.java:749) at org.aspectj.weaver.CrosscuttingMembersSet.addOrReplaceAspect(CrosscuttingMembersSet.java:85) at org.aspectj.weaver.CrosscuttingMembersSet.addOrReplaceAspect(CrosscuttingMembersSet.java:69) at org.aspectj.weaver.bcel.BcelWeaver.addLibraryAspect(BcelWeaver.java:202) at org.aspectj.weaver.loadtime.ClassLoaderWeavingAdaptor.registerAspects(ClassLoaderWeavingAdaptor.java:466) at org.aspectj.weaver.loadtime.ClassLoaderWeavingAdaptor.registerDefinitions(ClassLoaderWeavingAdaptor.java:290) at org.aspectj.weaver.loadtime.ClassLoaderWeavingAdaptor.initialize(ClassLoaderWeavingAdaptor.java:176) at org.eclipse.equinox.weaving.aspectj.loadtime.OSGiWeavingAdaptor.initialize(Unknown Source) at org.eclipse.equinox.weaving.aspectj.AspectJWeavingService.ensureAdaptorInit(Unknown Source) at org.eclipse.equinox.weaving.aspectj.AspectJWeavingService.preProcess(Unknown Source) at org.eclipse.equinox.weaving.adaptors.WeavingAdaptor.weaveClass(Unknown Source) at org.eclipse.equinox.weaving.hooks.WeavingHook.processClass(Unknown Source) at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.defineClass(ClasspathManager.java:575) at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findClassImpl(ClasspathManager.java:550) at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findLocalClassImpl(ClasspathManager.java:481) at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findLocalClass_LockClassLoader(ClasspathManager.java:469) at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findLocalClass(ClasspathManager.java:449) at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.findLocalClass(DefaultClassLoader.java:216) at org.eclipse.osgi.internal.loader.BundleLoader.findLocalClass(BundleLoader.java:393) at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:469) at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:422) at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:410) at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(DefaultClassLoader.java:107) at java.lang.ClassLoader.loadClass(ClassLoader.java:247) at org.eclipse.osgi.internal.loader.BundleLoader.loadClass(BundleLoader.java:338) at org.eclipse.osgi.framework.internal.core.BundleHost.loadClass(BundleHost.java:232) at org.eclipse.osgi.framework.internal.core.AbstractBundle.loadBundleActivator(AbstractBundle.java:149) at org.eclipse.osgi.framework.internal.core.BundleContextImpl.start(BundleContextImpl.java:751) at org.eclipse.osgi.framework.internal.core.BundleHost.startWorker(BundleHost.java:370) at org.eclipse.osgi.framework.internal.core.AbstractBundle.resume(AbstractBundle.java:374) at org.eclipse.osgi.framework.internal.core.Framework.resumeBundle(Framework.java:1067) at org.eclipse.osgi.framework.internal.core.StartLevelManager.resumeBundles(StartLevelManager.java:561) at org.eclipse.osgi.framework.internal.core.StartLevelManager.resumeBundles(StartLevelManager.java:546) at org.eclipse.osgi.framework.internal.core.StartLevelManager.incFWSL(StartLevelManager.java:459) at org.eclipse.osgi.framework.internal.core.StartLevelManager.doSetStartLevel(StartLevelManager.java:243) at org.eclipse.osgi.framework.internal.core.StartLevelManager.dispatchEvent(StartLevelManager.java:440) at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:227) at org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.run(EventManager.java:337) Reproducible: Couldn't Reproduce
the problem here is a broken/unusual localvariabletable in one of the classes. I've put in a guard to cope with this occurring. Surprising that it isn't easily reproduceable as the same code woven in the same way a second time should cause the same thing to occur. When this situation occurs it will also print a line of debug info: AspectJ: 348488 debug: unusual local variable table for method XXX.YYY which, if it happens again, will allow us to investigate further, but the NPE can't happen anymore.
committed