| Summary: | OutOfMemoryError in xbase.lib.util.ToStringHelper | ||
|---|---|---|---|
| Product: | [Modeling] TMF | Reporter: | Moritz Eysholdt <moritz.eysholdt> |
| Component: | Xtext | Assignee: | Project Inbox <tmf.xtext-inbox> |
| Status: | CLOSED FIXED | QA Contact: | |
| Severity: | normal | ||
| Priority: | P3 | CC: | st.oehme, sven.efftinge |
| Version: | 2.4.0 | Keywords: | helpwanted |
| Target Milestone: | --- | ||
| Hardware: | PC | ||
| OS: | Mac OS X | ||
| Whiteboard: | v2.7 | ||
The ToStringHelper class has had a recursion guard for quite some time. |
The exception was thrown at me when calling ToStringHelper.toString for an instance of org.eclipse.xtext.nodemodel.impl.HiddenLeafNode. The error occurs, when an object holds an iterable which has the iterable as one of its items. This Java code reproduces the problem. private static class Bar { private Iterable<Object> it = new Iterable<Object>() { public Iterator<Object> iterator() { return new Iterator<Object>() { boolean next = true; public boolean hasNext() { if (next) { next = false; return true; } return false; } public Object next() { return Bar.this.it; } public void remove() { } }; }; }; } public static void main(String[] args) { try { System.out.println(new ToStringHelper().toString(new Bar())); } catch (Throwable e) { e.printStackTrace(); } } java.lang.OutOfMemoryError: Java heap space at java.util.Arrays.copyOf(Arrays.java:2882) at java.lang.AbstractStringBuilder.expandCapacity(AbstractStringBuilder.java:100) at java.lang.AbstractStringBuilder.append(AbstractStringBuilder.java:390) at java.lang.StringBuilder.append(StringBuilder.java:119) at org.eclipse.xtext.xbase.lib.util.ToStringHelper$IndentationAwareStringBuilder.newLine(ToStringHelper.java:62) at org.eclipse.xtext.xbase.lib.util.ToStringHelper.internalToString(ToStringHelper.java:162) at org.eclipse.xtext.xbase.lib.util.ToStringHelper.internalToString(ToStringHelper.java:163) at org.eclipse.xtext.xbase.lib.util.ToStringHelper.internalToString(ToStringHelper.java:163) at org.eclipse.xtext.xbase.lib.util.ToStringHelper.internalToString(ToStringHelper.java:163) at org.eclipse.xtext.xbase.lib.util.ToStringHelper.internalToString(ToStringHelper.java:163) at org.eclipse.xtext.xbase.lib.util.ToStringHelper.internalToString(ToStringHelper.java:163)