Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [aspectj-users] IllegalStateException: Can't answer binding questions prior to resolving ?

It is best if I can work on these issues with a failing testcase, but
if you can't construct one (I think we've ironed out most of the
simple bugs now so it's only ones with subtle interactions that are
left...) then I'll take a look based on the stack trace.  Did you
raise a bug yet?  I tend to lose bugs that only get mentioned on the
mailing list...

cheers,
Andy

2009/10/5 Daniel <daniel.rampanelli@xxxxxxxxx>:
> Hi Andy,
>
> I've tried to put together a simple example as test case for the bug,
> but without success. And unfortunately I'm working on a quite big and
> proprietary project. After many hours spent with my old friend
> (debugger), I kinda figured out that the problem is related in some
> way to the fact that I have classes like this
>
> <snippet>
> public class Entity<T extends Entity<T>> {
> ...
> }
>
> public class Contact extends Entity<Contact> {
> ...
> }
>
> public class EditableControl<T extends Entity<T>> extends Composite {
> ...
> }
> </snippet>
>
> During the debug sessions I've noticed that the TypeVariable that
> leads to the catastrophic error describes itself as "TypeVar T extends
> com.distribute.core.Entity<java.lang.Object>" (but I think it should
> be Entity<T>, or I'm mistaken?).
>
> Does this help in some way?
> Daniel
>
> On Fri, Oct 2, 2009 at 5:54 PM, Andy Clement <andrew.clement@xxxxxxxxx> wrote:
>> Hi Daniel,
>>
>> That is an AspectJ bug - please open it on bugzilla with as much info
>> as you can (details of the generic declarations involved around the
>> point of failure if possible) - and I'll take a look.
>>
>> Andy
>>
>> 2009/10/2 Daniel <daniel.rampanelli@xxxxxxxxx>:
>>> Hi to everyone,
>>>
>>> I'm experiencing a VERY strange issue in my application. Basically it
>>> is an RCP application enhanced with aspects (through Equinox aspects).
>>>
>>> At some point in development (since it happens during a huge
>>> refactoring, I can't go back to the release version) some really
>>> strange errors have started to appear.
>>>
>>> <log>
>>> abort trouble in:
>>> public abstract class
>>> com.distribute.client.editor.impl.EditableEntitiesBindableControl
>>> extends com.distribute.client.editor.impl.EntitiesBindableControl
>>> implements com.distribute.client.editor.EditableControl:
>>>  private boolean _editable
>>>  private org.eclipse.swt.widgets.Table _table
>>>  private ca.odell.glazedlists.swt.EventTableViewer _tableViewer
>>> [Signature(Lca/odell/glazedlists/swt/EventTableViewer<TT;>;)]
>>>  private org.eclipse.swt.widgets.Button _createButton
>>>  private org.eclipse.swt.widgets.Button _editButton
>>>  private org.eclipse.swt.widgets.Button _removeButton
>>>  public void <init>(org.eclipse.swt.widgets.Composite, int):
>>>                    ALOAD_0     //
>>> Lcom/distribute/client/editor/impl/EditableEntitiesBindableControl;
>>> this   (line 48)
>>>                    ALOAD_1     // Lorg/eclipse/swt/widgets/Composite; parent
>>>                    ILOAD_2     // I style
>>> [... continues with the whole class byte-code definition ...]
>>>  -- (IllegalStateException) Can't answer binding questions prior to resolving
>>> Can't answer binding questions prior to resolving
>>> java.lang.IllegalStateException: Can't answer binding questions prior
>>> to resolving
>>>        at org.aspectj.weaver.TypeVariable.canBeBoundTo(TypeVariable.java:184)
>>>        at org.aspectj.weaver.ReferenceType.isAssignableFrom(ReferenceType.java:459)
>>>        at org.aspectj.weaver.ReferenceType.isAssignableFrom(ReferenceType.java:363)
>>>        at org.aspectj.weaver.ReferenceType.isAssignableFrom(ReferenceType.java:513)
>>>        at org.aspectj.weaver.ReferenceType.isAssignableFrom(ReferenceType.java:363)
>>>        at org.aspectj.weaver.TypeVariable.isASubtypeOf(TypeVariable.java:212)
>>>        at org.aspectj.weaver.TypeVariable.canBeBoundTo(TypeVariable.java:193)
>>>        at org.aspectj.weaver.ReferenceType.isAssignableFrom(ReferenceType.java:459)
>>>        at org.aspectj.weaver.JoinPointSignatureIterator.accumulateTypesInBetween(JoinPointSignatureIterator.java:163)
>>>        at org.aspectj.weaver.JoinPointSignatureIterator.addSignaturesUpToFirstDefiningMember(JoinPointSignatureIterator.java:145)
>>>        at org.aspectj.weaver.JoinPointSignatureIterator.<init>(JoinPointSignatureIterator.java:51)
>>>        at org.aspectj.weaver.MemberImpl.getJoinPointSignatures(MemberImpl.java:541)
>>>        at org.aspectj.weaver.patterns.SignaturePattern.matches(SignaturePattern.java:290)
>>>        at org.aspectj.weaver.patterns.KindedPointcut.matchInternal(KindedPointcut.java:106)
>>>        at org.aspectj.weaver.patterns.Pointcut.match(Pointcut.java:146)
>>>        at org.aspectj.weaver.patterns.AndPointcut.matchInternal(AndPointcut.java:52)
>>>        at org.aspectj.weaver.patterns.Pointcut.match(Pointcut.java:146)
>>>        at org.aspectj.weaver.patterns.AndPointcut.matchInternal(AndPointcut.java:52)
>>>        at org.aspectj.weaver.patterns.Pointcut.match(Pointcut.java:146)
>>>        at org.aspectj.weaver.ShadowMunger.match(ShadowMunger.java:79)
>>>        at org.aspectj.weaver.Advice.match(Advice.java:112)
>>>        at org.aspectj.weaver.bcel.BcelAdvice.match(BcelAdvice.java:145)
>>>        at org.aspectj.weaver.bcel.BcelClassWeaver.match(BcelClassWeaver.java:3025)
>>>        at org.aspectj.weaver.bcel.BcelClassWeaver.matchInvokeInstruction(BcelClassWeaver.java:2984)
>>>        at org.aspectj.weaver.bcel.BcelClassWeaver.match(BcelClassWeaver.java:2706)
>>>        at org.aspectj.weaver.bcel.BcelClassWeaver.match(BcelClassWeaver.java:2492)
>>>        at org.aspectj.weaver.bcel.BcelClassWeaver.weave(BcelClassWeaver.java:480)
>>>        at org.aspectj.weaver.bcel.BcelClassWeaver.weave(BcelClassWeaver.java:103)
>>>        at org.aspectj.weaver.bcel.BcelWeaver.weave(BcelWeaver.java:1735)
>>>        at org.aspectj.weaver.bcel.BcelWeaver.weaveWithoutDump(BcelWeaver.java:1696)
>>>        at org.aspectj.weaver.bcel.BcelWeaver.weaveAndNotify(BcelWeaver.java:1458)
>>>        at org.aspectj.weaver.bcel.BcelWeaver.weave(BcelWeaver.java:1272)
>>>        at org.aspectj.weaver.tools.WeavingAdaptor.getWovenBytes(WeavingAdaptor.java:423)
>>>        at org.aspectj.weaver.tools.WeavingAdaptor.weaveClass(WeavingAdaptor.java:286)
>>>        at org.eclipse.equinox.weaving.aspectj.loadtime.OSGiWeavingAdaptor.weaveClass(OSGiWeavingAdaptor.java:121)
>>>        at org.eclipse.equinox.weaving.aspectj.WeavingService.preProcess(WeavingService.java:151)
>>>        at org.eclipse.equinox.weaving.adaptors.AspectJAdaptor.weaveClass(AspectJAdaptor.java:245)
>>>        at org.eclipse.equinox.weaving.hooks.AspectJHook.processClass(AspectJHook.java:126)
>>>        at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.defineClass(ClasspathManager.java:571)
>>>        at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findClassImpl(ClasspathManager.java:546)
>>>        at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findLocalClassImpl(ClasspathManager.java:477)
>>>        at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findLocalClass_LockClassLoader(ClasspathManager.java:465)
>>>        at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findLocalClass(ClasspathManager.java:445)
>>>        at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.findLocalClass(DefaultClassLoader.java:211)
>>>        at org.eclipse.osgi.internal.loader.BundleLoader.findLocalClass(BundleLoader.java:376)
>>>        at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:452)
>>>        at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:405)
>>>        at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:393)
>>>        at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(DefaultClassLoader.java:105)
>>>        at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
>>>        at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:374)
>>>        at java.lang.ClassLoader.defineClass1(Native Method)
>>>        at java.lang.ClassLoader.defineClass(ClassLoader.java:675)
>>>        at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.defineClass(DefaultClassLoader.java:183)
>>>        at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.defineClass(ClasspathManager.java:576)
>>>        at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findClassImpl(ClasspathManager.java:546)
>>>        at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findLocalClassImpl(ClasspathManager.java:477)
>>>        at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findLocalClass_LockClassLoader(ClasspathManager.java:465)
>>>        at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findLocalClass(ClasspathManager.java:445)
>>>        at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.findLocalClass(DefaultClassLoader.java:211)
>>>        at org.eclipse.osgi.internal.loader.BundleLoader.findLocalClass(BundleLoader.java:376)
>>>        at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:452)
>>>        at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:405)
>>>        at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:393)
>>>        at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(DefaultClassLoader.java:105)
>>>        at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
>>>        at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:374)
>>>        at java.lang.Class.getDeclaredFields0(Native Method)
>>>        at java.lang.Class.privateGetDeclaredFields(Class.java:2259)
>>>        at java.lang.Class.getDeclaredFields(Class.java:1715)
>>>        at com.distribute.client.editor.EditorContext.bind(EditorContext.java:109)
>>>        at com.distribute.client.editor.EditorContext.bind(EditorContext.java:102)
>>>        at com.distribute.client.editor.EditorWindow.createContents(EditorWindow.java:110)
>>>        at org.eclipse.jface.window.Window.create(Window.java:431)
>>>        at org.eclipse.jface.window.Window.open(Window.java:790)
>>>        at com.distribute.client.editor.impl.customer.CustomerEditorAdapter.edit(CustomerEditorAdapter.java:21)
>>>        at com.distribute.client.editor.impl.customer.CustomerEditorAdapter.edit(CustomerEditorAdapter.java:1)
>>>        at com.distribute.client.views.browser.DAOTable$4.widgetSelected(DAOTable.java:125)
>>>        at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:228)
>>>        at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
>>>        at org.eclipse.swt.widgets.Display.sendEvent(Display.java:3542)
>>>        at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1247)
>>>        at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1270)
>>>        at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1255)
>>>        at org.eclipse.swt.widgets.Widget.notifyListeners(Widget.java:1076)
>>>        at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3440)
>>>        at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3099)
>>>        at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2405)
>>>        at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2369)
>>>        at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2221)
>>>        at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:500)
>>>        at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
>>>        at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:493)
>>>        at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
>>>        at com.distribute.client.Application.start(Application.java:24)
>>>        at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:194)
>>>        at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)
>>>        at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
>>>        at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:368)
>>>        at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179)
>>>        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>>        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>>>        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>>>        at java.lang.reflect.Method.invoke(Method.java:592)
>>>        at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:559)
>>>        at org.eclipse.equinox.launcher.Main.basicRun(Main.java:514)
>>>        at org.eclipse.equinox.launcher.Main.run(Main.java:1311)
>>>        at org.eclipse.equinox.launcher.Main.main(Main.java:1287)
>>> </log>
>>>
>>> I've absolutely no clue what is going on and the most strange part is,
>>> that the application was working before. The only thing that I have
>>> figured out, is that these errors happen when some specific classes
>>> are loaded/used/referenced.
>>>
>>> Thank you in advance,
>>> Daniel
>>> _______________________________________________
>>> aspectj-users mailing list
>>> aspectj-users@xxxxxxxxxxx
>>> https://dev.eclipse.org/mailman/listinfo/aspectj-users
>>>
>> _______________________________________________
>> aspectj-users mailing list
>> aspectj-users@xxxxxxxxxxx
>> https://dev.eclipse.org/mailman/listinfo/aspectj-users
>>
> _______________________________________________
> aspectj-users mailing list
> aspectj-users@xxxxxxxxxxx
> https://dev.eclipse.org/mailman/listinfo/aspectj-users
>


Back to the top