eclipse-aspectj / ajdt

3 stars 6 forks source link

StackOverflowError in AJCompilationUnit#getHandleFromMemento #48

Closed nbros closed 8 months ago

nbros commented 8 months ago

With AJDT 2.2.4.202401210204 in Eclipse 2023-12 (4.30) installed I got a StackOverflowError from AJDT while debugging Java (non aspect) code :

java.lang.StackOverflowError
    at org.eclipse.ajdt.core.javaelements.AJCompilationUnit.getHandleFromMemento(AJCompilationUnit.java:996)
    at org.eclipse.ajdt.core.javaelements.AJCompilationUnit.getHandleFromMemento(AJCompilationUnit.java:996)
    at org.eclipse.ajdt.core.javaelements.AJCompilationUnit.getHandleFromMemento(AJCompilationUnit.java:996)
    at org.eclipse.ajdt.core.javaelements.AJCompilationUnit.getHandleFromMemento(AJCompilationUnit.java:996)
    at org.eclipse.ajdt.core.javaelements.AJCompilationUnit.getHandleFromMemento(AJCompilationUnit.java:996)
    (... 8154 more lines like this ...)
    at org.eclipse.ajdt.core.javaelements.AJCompilationUnit.getHandleFromMemento(AJCompilationUnit.java:996)
    at org.eclipse.ajdt.core.javaelements.AJCompilationUnit.getHandleFromMemento(AJCompilationUnit.java:996)
    at org.eclipse.ajdt.core.javaelements.AJCompilationUnit.getHandleFromMemento(AJCompilationUnit.java:996)
    at org.eclipse.ajdt.core.javaelements.AJCompilationUnit.getHandleFromMemento(AJCompilationUnit.java:996)
    at org.eclipse.jdt.internal.core.JavaElement.getHandleFromMemento(JavaElement.java:325)
    at org.eclipse.ajdt.core.javaelements.AJCompilationUnit.getHandleFromMemento(AJCompilationUnit.java:926)
    at org.eclipse.jdt.internal.core.PackageFragment.getHandleFromMemento(PackageFragment.java:359)
    at org.eclipse.jdt.internal.core.JavaElement.getHandleFromMemento(JavaElement.java:325)
    at org.eclipse.jdt.internal.core.PackageFragmentRoot.getHandleFromMemento(PackageFragmentRoot.java:477)
    at org.eclipse.jdt.internal.core.JavaProject.getHandleFromMemento(JavaProject.java:2108)
    at org.eclipse.jdt.internal.core.JavaElement.getHandleFromMemento(JavaElement.java:325)
    at org.eclipse.jdt.internal.core.JavaModel.getHandleFromMemento(JavaModel.java:159)
    at org.eclipse.jdt.internal.core.JavaElement.getHandleFromMemento(JavaElement.java:325)
    at org.eclipse.jdt.core.JavaCore.create(JavaCore.java:3614)
    at org.eclipse.jdt.core.JavaCore.create(JavaCore.java:3589)
    at org.eclipse.jdt.internal.debug.ui.BreakpointUtils.getType(BreakpointUtils.java:109)
    at org.eclipse.jdt.internal.debug.ui.BreakpointUtils.getMember(BreakpointUtils.java:143)
    at org.eclipse.jdt.internal.debug.ui.JDIModelPresentation.getLineBreakpointText(JDIModelPresentation.java:1682)
    at org.eclipse.jdt.internal.debug.ui.JDIModelPresentation.getBreakpointText(JDIModelPresentation.java:1587)
    at org.eclipse.jdt.internal.debug.ui.JDIModelPresentation.getText(JDIModelPresentation.java:235)
    at org.eclipse.debug.internal.ui.LazyModelPresentation.getText(LazyModelPresentation.java:188)
    at org.eclipse.debug.internal.ui.DelegatingModelPresentation.getText(DelegatingModelPresentation.java:151)
    at org.eclipse.jdt.internal.debug.ui.JavaDebugOptionsManager$2.run(JavaDebugOptionsManager.java:879)
    at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:2453)
    at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:2478)
    at org.eclipse.jdt.internal.debug.ui.JavaDebugOptionsManager.updateBreakpointMessages(JavaDebugOptionsManager.java:902)
    at org.eclipse.jdt.internal.debug.ui.JavaDebugOptionsManager.breakpointsChanged(JavaDebugOptionsManager.java:961)
    at org.eclipse.debug.internal.core.BreakpointManager$BreakpointsNotifier.run(BreakpointManager.java:1094)
    at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47)
    at org.eclipse.debug.internal.core.BreakpointManager$BreakpointsNotifier.notify(BreakpointManager.java:1114)
    at org.eclipse.debug.internal.core.BreakpointManager.fireUpdate(BreakpointManager.java:965)
    at org.eclipse.debug.internal.core.BreakpointManager$BreakpointManagerVisitor.update(BreakpointManager.java:778)
    at org.eclipse.debug.internal.core.BreakpointManager.resourceChanged(BreakpointManager.java:695)
    at org.eclipse.core.internal.events.NotificationManager$1.run(NotificationManager.java:321)
    at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47)
    at org.eclipse.core.internal.events.NotificationManager.notify(NotificationManager.java:311)
    at org.eclipse.core.internal.events.NotificationManager.broadcastChanges(NotificationManager.java:174)
    at org.eclipse.core.internal.resources.Workspace.broadcastBuildEvent(Workspace.java:444)
    at org.eclipse.core.internal.events.AutoBuildJob.doBuild(AutoBuildJob.java:210)
    at org.eclipse.core.internal.events.AutoBuildJob.run(AutoBuildJob.java:300)
    at org.eclipse.core.internal.jobs.Worker.run(Worker.java:63)
kriegaex commented 8 months ago

Where is your complete reproducer?

kriegaex commented 8 months ago

@nbros, I do not normally use Eclipse. But I quickly tried to set a few breakpoints in a plain Java application. No problem debugging. The same is true for an AspectJ application. I really do need a reproducer, otherwise I will close this issue as invalid. Please do not misunderstand, I wish to help you. But you need to give me the means to do so.

nbros commented 8 months ago

Hello, I don't know how to reproduce ; it just happened randomly and repeatedly until I disabled aspects in Eclipse preferences. I thought the stacktrace could help find why it happened.

kriegaex commented 8 months ago

I can only guess with that little information. After some internal changes in JDT Core, which had to be reflected in AspectJ and AJDT, it makes sense to always fully recompile projects you had opened in older Eclipse versions first.

Closing as not reproducible. We can always reopen, if you find a way to reproduce the problem.