New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[BUG] StackOverflowError in Eclipse #3302
Comments
This usually happens if there is a really long method invocation chain in some of your files. |
Hi @Rawi01, thanks. My code is pretty standard: it is a very simple REST api made using Spring MVC that reads a Lombok annotated entity via a JPA repository that is directly injected in the Rest Controller (Constructor injection). The entity is pretty big (almost 500 fields sic!) but it is "flat" (no nested classes) and in the future some of the field could change type and/or name so i used Lombok to "shrink" such kind of file and minimize the possibility of introducing errors (misnamed getters and setters, equals and hashcode contract...). Maybe could this be the cause? If i use another IDE like Intellij IDEA or even directly a maven build from the command line there is no such problem and lombok works perfectly. It seems like the problem is caused by the Eclipse AST build that in turn delegates to maven build and something in the middle causes an infinite recursion when Lombok is involved in building the AST. |
You could try increasing the stack size using the |
@janrieke Good idea, that should fix the problem |
You are both right! I had my entities annotated with @Data
@EqualsAndHashCode(onlyExplicitlyIncluded = true)
@FieldDefaults(level = AccessLevel.PRIVATE) Changing them to @Getter @Setter
@EqualsAndHashCode(onlyExplicitlyIncluded = true)
@FieldDefaults(level = AccessLevel.PRIVATE) such that the toString() method is not overridden fixed the problem! |
Describe the bug
Hi,
on a fresh install of Eclipse 2022-09 i installed the Lombok javaagent but now when i open the IDE i get a StackOverflowError:
Message: Lombok annotation handler class lombok.eclipse.handlers.HandleData failed
Error stacktrace:
java.lang.StackOverflowError
at java.base/java.util.IdentityHashMap.hash(IdentityHashMap.java:299)
at java.base/java.util.IdentityHashMap.put(IdentityHashMap.java:430)
at lombok.core.AST.setAndGetAsHandled(AST.java:157)
at lombok.eclipse.EclipseAST.buildStatement(EclipseAST.java:525)
at lombok.eclipse.EclipseAST.buildTree(EclipseAST.java:367)
at lombok.eclipse.EclipseAST.buildTree(EclipseAST.java:1)
at lombok.core.AST.buildWithField0(AST.java:394)
at lombok.core.AST.buildWithField(AST.java:292)
at lombok.eclipse.EclipseAST.drill(EclipseAST.java:532)
at lombok.eclipse.EclipseAST.buildStatement(EclipseAST.java:527)
at lombok.eclipse.EclipseAST.buildTree(EclipseAST.java:367)
at lombok.eclipse.EclipseAST.buildTree(EclipseAST.java:1)
at lombok.core.AST.buildWithField0(AST.java:394)
at lombok.core.AST.buildWithField(AST.java:292)
at lombok.eclipse.EclipseAST.drill(EclipseAST.java:532)
at lombok.eclipse.EclipseAST.buildStatement(EclipseAST.java:527)
at lombok.eclipse.EclipseAST.buildTree(EclipseAST.java:367)
at lombok.eclipse.EclipseAST.buildTree(EclipseAST.java:1)
at lombok.core.AST.buildWithField0(AST.java:394)
at lombok.core.AST.buildWithField(AST.java:292)
at lombok.eclipse.EclipseAST.drill(EclipseAST.java:532)
at lombok.eclipse.EclipseAST.buildStatement(EclipseAST.java:527)
at lombok.eclipse.EclipseAST.buildTree(EclipseAST.java:367)
at lombok.eclipse.EclipseAST.buildTree(EclipseAST.java:1)
at lombok.core.AST.buildWithField0(AST.java:394)
at lombok.core.AST.buildWithField(AST.java:292)
at lombok.eclipse.EclipseAST.drill(EclipseAST.java:532)
at lombok.eclipse.EclipseAST.buildStatement(EclipseAST.java:527)
at lombok.eclipse.EclipseAST.buildTree(EclipseAST.java:367)
at lombok.eclipse.EclipseAST.buildTree(EclipseAST.java:1)
at lombok.core.AST.buildWithField0(AST.java:394)
at lombok.core.AST.buildWithField(AST.java:292)
at lombok.eclipse.EclipseAST.drill(EclipseAST.java:532)
at lombok.eclipse.EclipseAST.buildStatement(EclipseAST.java:527)
at lombok.eclipse.EclipseAST.buildTree(EclipseAST.java:367)
at lombok.eclipse.EclipseAST.buildTree(EclipseAST.java:1)
at lombok.core.AST.buildWithField0(AST.java:394)
at lombok.core.AST.buildWithField(AST.java:292)
at lombok.eclipse.EclipseAST.drill(EclipseAST.java:532)
at lombok.eclipse.EclipseAST.buildStatement(EclipseAST.java:527)
at lombok.eclipse.EclipseAST.buildTree(EclipseAST.java:367)
at lombok.eclipse.EclipseAST.buildTree(EclipseAST.java:1)
at lombok.core.AST.buildWithField0(AST.java:394)
at lombok.core.AST.buildWithField(AST.java:292)
at lombok.eclipse.EclipseAST.drill(EclipseAST.java:532)
at lombok.eclipse.EclipseAST.buildStatement(EclipseAST.java:527)
at lombok.eclipse.EclipseAST.buildTree(EclipseAST.java:367)
at lombok.eclipse.EclipseAST.buildTree(EclipseAST.java:1)
at lombok.core.AST.buildWithField0(AST.java:394)
at lombok.core.AST.buildWithField(AST.java:292)
at lombok.eclipse.EclipseAST.drill(EclipseAST.java:532)
at lombok.eclipse.EclipseAST.buildStatement(EclipseAST.java:527)
at lombok.eclipse.EclipseAST.buildTree(EclipseAST.java:367)
at lombok.eclipse.EclipseAST.buildTree(EclipseAST.java:1)
at lombok.core.AST.buildWithField0(AST.java:394)
at lombok.core.AST.buildWithField(AST.java:292)
at lombok.eclipse.EclipseAST.drill(EclipseAST.java:532)
at lombok.eclipse.EclipseAST.buildStatement(EclipseAST.java:527)
at lombok.eclipse.EclipseAST.buildTree(EclipseAST.java:367)
at lombok.eclipse.EclipseAST.buildTree(EclipseAST.java:1)
at lombok.core.AST.buildWithField0(AST.java:394)
at lombok.core.AST.buildWithField(AST.java:292)
at lombok.eclipse.EclipseAST.drill(EclipseAST.java:532)
at lombok.eclipse.EclipseAST.buildStatement(EclipseAST.java:527)
at lombok.eclipse.EclipseAST.buildTree(EclipseAST.java:367)
at lombok.eclipse.EclipseAST.buildTree(EclipseAST.java:1)
at lombok.core.AST.buildWithField0(AST.java:394)
at lombok.core.AST.buildWithField(AST.java:292)
at lombok.eclipse.EclipseAST.drill(EclipseAST.java:532)
at lombok.eclipse.EclipseAST.buildStatement(EclipseAST.java:527)
at lombok.eclipse.EclipseAST.buildTree(EclipseAST.java:367)
at lombok.eclipse.EclipseAST.buildTree(EclipseAST.java:1)
at lombok.core.AST.buildWithField0(AST.java:394)
at lombok.core.AST.buildWithField(AST.java:292)
at lombok.eclipse.EclipseAST.drill(EclipseAST.java:532)
at lombok.eclipse.EclipseAST.buildStatement(EclipseAST.java:527)
at lombok.eclipse.EclipseAST.buildTree(EclipseAST.java:367)
at lombok.eclipse.EclipseAST.buildTree(EclipseAST.java:1)
at lombok.core.AST.buildWithField0(AST.java:394)
at lombok.core.AST.buildWithField(AST.java:292)
at lombok.eclipse.EclipseAST.drill(EclipseAST.java:532)
at lombok.eclipse.EclipseAST.buildStatement(EclipseAST.java:527)
at lombok.eclipse.EclipseAST.buildTree(EclipseAST.java:367)
at lombok.eclipse.EclipseAST.buildTree(EclipseAST.java:1)
at lombok.core.AST.buildWithField0(AST.java:394)
at lombok.core.AST.buildWithField(AST.java:292)
at lombok.eclipse.EclipseAST.drill(EclipseAST.java:532)
at lombok.eclipse.EclipseAST.buildStatement(EclipseAST.java:527)
at lombok.eclipse.EclipseAST.buildTree(EclipseAST.java:367)
at lombok.eclipse.EclipseAST.buildTree(EclipseAST.java:1)
at lombok.core.AST.buildWithField0(AST.java:394)
at lombok.core.AST.buildWithField(AST.java:292)
at lombok.eclipse.EclipseAST.drill(EclipseAST.java:532)
at lombok.eclipse.EclipseAST.buildStatement(EclipseAST.java:527)
at lombok.eclipse.EclipseAST.buildTree(EclipseAST.java:367)
at lombok.eclipse.EclipseAST.buildTree(EclipseAST.java:1)
at lombok.core.AST.buildWithField0(AST.java:394)
at lombok.core.AST.buildWithField(AST.java:292)
at lombok.eclipse.EclipseAST.drill(EclipseAST.java:532)
at lombok.eclipse.EclipseAST.buildStatement(EclipseAST.java:527)
at lombok.eclipse.EclipseAST.buildTree(EclipseAST.java:367)
at lombok.eclipse.EclipseAST.buildTree(EclipseAST.java:1)
at lombok.core.AST.buildWithField0(AST.java:394)
at lombok.core.AST.buildWithField(AST.java:292)
at lombok.eclipse.EclipseAST.drill(EclipseAST.java:532)
at lombok.eclipse.EclipseAST.buildStatement(EclipseAST.java:527)
at lombok.eclipse.EclipseAST.buildTree(EclipseAST.java:367)
at lombok.eclipse.EclipseAST.buildTree(EclipseAST.java:1)
at lombok.core.AST.buildWithField0(AST.java:394)
at lombok.core.AST.buildWithField(AST.java:292)
at lombok.eclipse.EclipseAST.drill(EclipseAST.java:532)
at lombok.eclipse.EclipseAST.buildStatement(EclipseAST.java:527)
at lombok.eclipse.EclipseAST.buildTree(EclipseAST.java:367)
at lombok.eclipse.EclipseAST.buildTree(EclipseAST.java:1)
at lombok.core.AST.buildWithField0(AST.java:394)
at lombok.core.AST.buildWithField(AST.java:292)
at lombok.eclipse.EclipseAST.drill(EclipseAST.java:532)
at lombok.eclipse.EclipseAST.buildStatement(EclipseAST.java:527)
at lombok.eclipse.EclipseAST.buildTree(EclipseAST.java:367)
at lombok.eclipse.EclipseAST.buildTree(EclipseAST.java:1)
at lombok.core.AST.buildWithField0(AST.java:394)
at lombok.core.AST.buildWithField(AST.java:292)
at lombok.eclipse.EclipseAST.drill(EclipseAST.java:532)
at lombok.eclipse.EclipseAST.buildStatement(EclipseAST.java:527)
at lombok.eclipse.EclipseAST.buildTree(EclipseAST.java:367)
at lombok.eclipse.EclipseAST.buildTree(EclipseAST.java:1)
at lombok.core.AST.buildWithField0(AST.java:394)
at lombok.core.AST.buildWithField(AST.java:292)
at lombok.eclipse.EclipseAST.drill(EclipseAST.java:532)
at lombok.eclipse.EclipseAST.buildStatement(EclipseAST.java:527)
at lombok.eclipse.EclipseAST.buildTree(EclipseAST.java:367)
at lombok.eclipse.EclipseAST.buildTree(EclipseAST.java:1)
at lombok.core.AST.buildWithField0(AST.java:394)
at lombok.core.AST.buildWithField(AST.java:292)
at lombok.eclipse.EclipseAST.drill(EclipseAST.java:532)
at lombok.eclipse.EclipseAST.buildStatement(EclipseAST.java:527)
at lombok.eclipse.EclipseAST.buildTree(EclipseAST.java:367)
at lombok.eclipse.EclipseAST.buildTree(EclipseAST.java:1)
at lombok.core.AST.buildWithField0(AST.java:394)
at lombok.core.AST.buildWithField(AST.java:292)
at lombok.eclipse.EclipseAST.drill(EclipseAST.java:532)
at lombok.eclipse.EclipseAST.buildStatement(EclipseAST.java:527)
at lombok.eclipse.EclipseAST.buildTree(EclipseAST.java:367)
at lombok.eclipse.EclipseAST.buildTree(EclipseAST.java:1)
at lombok.core.AST.buildWithField0(AST.java:394)
at lombok.core.AST.buildWithField(AST.java:292)
at lombok.eclipse.EclipseAST.drill(EclipseAST.java:532)
at lombok.eclipse.EclipseAST.buildStatement(EclipseAST.java:527)
at lombok.eclipse.EclipseAST.buildTree(EclipseAST.java:367)
at lombok.eclipse.EclipseAST.buildTree(EclipseAST.java:1)
at lombok.core.AST.buildWithField0(AST.java:394)
Session data:
eclipse.buildId=4.25.0.I20220831-1800
java.version=17.0.5
java.vendor=Eclipse Adoptium
BootLoader constants: OS=win32, ARCH=x86_64, WS=win32, NL=it_IT
Framework arguments: -product org.eclipse.epp.package.jee.product
Command-line arguments: -os win32 -ws win32 -arch x86_64 -product org.eclipse.epp.package.jee.product
To Reproduce
I don't really know if it's something related to some code in particular. I just downloaded Eclipse and installed the lombok plugin and now i get this error. I opened a springboot project made with spring initializr where i have included lombok as well
Expected behavior
No StackOverflowErrors
Version info (please complete the following information):
The text was updated successfully, but these errors were encountered: