Bug 131718 - [compiler] Marker property value is too long: Internal compiler error
Summary: [compiler] Marker property value is too long: Internal compiler error
Status: RESOLVED DUPLICATE of bug 102728
Alias: None
Product: JDT
Classification: Eclipse Project
Component: Core (show other bugs)
Version: 3.1.2   Edit
Hardware: PC Windows XP
: P3 normal (vote)
Target Milestone: ---   Edit
Assignee: Philipe Mulet CLA
QA Contact:
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2006-03-14 10:33 EST by Hendrik Ebel CLA
Modified: 2006-10-17 09:58 EDT (History)
0 users

See Also:


Attachments
Compiling this file leads to the described error. (118.25 KB, text/plain)
2006-03-15 04:25 EST, Jan Kanzleiter CLA
no flags Details

Note You need to log in before you can comment on or make changes to this bug.
Description Hendrik Ebel CLA 2006-03-14 10:33:04 EST
While compiling a large project (with > 35.000 marker items) the following error occured. The effect are missing problem marker in the problem view. 

org.eclipse.core.internal.utils.AssertionFailedException: Assertion failed: Marker property value is too long: Internal compiler error
java.lang.StackOverflowError
at org.eclipse.jdt.internal.compiler.ast.BinaryExpression.resolveType(BinaryExpression.java:1708)
at org.eclipse.jdt.internal.compiler.ast.BinaryExpression.resolveType(BinaryExpression.java:1708)
at org.eclipse.jdt.internal.compiler.ast.BinaryExpression.resolveType(BinaryExpression.java:1708)
at org.eclipse.jdt.internal.compiler.ast.BinaryExpression.resolveType(BinaryExpression.java:1708)
at org.eclipse.jdt.internal.compiler.ast.BinaryExpression.resolveType(BinaryExpression.java:1708)
at org.eclipse.jdt.internal.compiler.ast.BinaryExpression.resolveType(BinaryExpression.java:1708)
at org.eclipse.jdt.internal.compiler.ast.BinaryExpression.resolveType(BinaryExpression.java:1708)
at org.eclipse.jdt.internal.compiler.ast.BinaryExpression.resolveType(BinaryExpression.java:1708)
at org.eclipse.jdt.internal.compiler.ast.BinaryExpression.resolveType(BinaryExpression.java:1708)
at org.eclipse.jdt.internal.compiler.ast.BinaryExpression.resolveType(BinaryExpression.java:1708)
at org.eclipse.jdt.internal.compiler.ast.BinaryExpression.resolveType(BinaryExpression.java:1708)
at org.eclipse.jdt.internal.compiler.ast.BinaryExpression.resolveType(BinaryExpression.java:1708)
at org.eclipse.jdt.internal.compiler.ast.BinaryExpression.resolveType(BinaryExpression.java:1708)
at org.eclipse.jdt.internal.compiler.ast.BinaryExpression.resolveType(BinaryExpression.java:1708)
at org.eclipse.jdt.internal.compiler.ast.BinaryExpression.resolveType(BinaryExpression.java:1708)
at org.eclipse.jdt.internal.compiler.ast.BinaryExpression.resolveType(BinaryExpression.java:1708)
at org.eclipse.jdt.internal.compiler.ast.BinaryExpression.resolveType(BinaryExpression.java:1708)
at org.eclipse.jdt.internal.compiler.ast.BinaryExpression.resolveType(BinaryExpression.java:1708)
at org.eclipse.jdt.internal.compiler.ast.BinaryExpression.resolveType(BinaryExpression.java:1708)
at org.eclipse.jdt.internal.compiler.ast.BinaryExpression.resolveType(BinaryExpression.java:1708)
at org.eclipse.jdt.internal.compiler.ast.BinaryExpression.resolveType(BinaryExpression.java:1708)
at org.eclipse.jdt.internal.compiler.ast.BinaryExpression.resolveType(BinaryExpression.java:1708)
at org.eclipse.jdt.internal.compiler.ast.BinaryExpression.resolveType(BinaryExpression.java:1708)
at org.eclipse.jdt.internal.compiler.ast.BinaryExpression.resolveType(BinaryExpression.java:1708)
at org.eclipse.jdt.internal.compiler.ast.BinaryExpression.resolveType(BinaryExpression.java:1708)
at org.eclipse.jdt.internal.compiler.ast.BinaryExpression.resolveType(BinaryExpression.java:1708)
at org.eclipse.jdt.internal.compiler.ast.BinaryExpression.resolveType(BinaryExpression.java:1708)
at org.eclipse.jdt.internal.compiler.ast.BinaryExpression.resolveType(BinaryExpression.java:1708)
at org.eclipse.jdt.internal.compiler.ast.BinaryExpression.resolveType(BinaryExpression.java:1708)
at org.eclipse.jdt.internal.compiler.ast.BinaryExpression.resolveType(BinaryExpression.java:1708)
at org.eclipse.jdt.internal.compiler.ast.BinaryExpression.resolveType(BinaryExpression.java:1708)
at org.eclipse.jdt.internal.compiler.ast.BinaryExpression.resolveType(BinaryExpression.java:1708)
at org.eclipse.jdt.internal.compiler.ast.BinaryExpression.resolveType(BinaryExpression.java:1708)
at org.eclipse.jdt.internal.compiler.ast.BinaryExpression.resolveType(BinaryExpression.java:1708)
at org.eclipse.jdt.internal.compiler.ast.BinaryExpression.resolveType(BinaryExpression.java:1708)
at org.eclipse.jdt.internal.compiler.ast.BinaryExpression.resolveType(BinaryExpression.java:1708)
at org.eclipse.jdt.internal.compiler.ast.BinaryExpression.resolveType(BinaryExpression.java:1708)
at org.eclipse.jdt.internal.compiler.ast.BinaryExpression.resolveType(BinaryExpression.java:1708)
at org.eclipse.jdt.internal.compiler.ast.BinaryExpression.resolveType(BinaryExpression.java:1708)
at org.eclipse.jdt.internal.compiler.ast.BinaryExpression.resolveType(BinaryExpression.java:1708)
at org.eclipse.jdt.internal.compiler.ast.BinaryExpression.resolveType(BinaryExpression.java:1708)
at org.eclipse.jdt.internal.compiler.ast.BinaryExpression.resolveType(BinaryExpression.java:1708)
at org.eclipse.jdt.internal.compiler.ast.BinaryExpression.resolveType(BinaryExpression.java:1708)
at org.eclipse.jdt.internal.compiler.ast.BinaryExpression.resolveType(BinaryExpression.java:1708)
at org.eclipse.jdt.internal.compiler.ast.BinaryExpression.resolveType(BinaryExpression.java:1708)
at org.eclipse.jdt.internal.compiler.ast.BinaryExpression.resolveType(BinaryExpression.java:1708)
at org.eclipse.jdt.internal.compiler.ast.BinaryExpression.resolveType(BinaryExpression.java:1708)
at org.eclipse.jdt.internal.compiler.ast.BinaryExpression.resolveType(BinaryExpression.java:1708)
at org.eclipse.jdt.internal.compiler.ast.BinaryExpression.resolveType(BinaryExpression.java:1708)
at org.eclipse.jdt.internal.compiler.ast.BinaryExpression.resolveType(BinaryExpression.java:1708)
at org.eclipse.jdt.internal.compiler.ast.BinaryExpression.resolveType(BinaryExpression.java:1708)
at org.eclipse.jdt.internal.compiler.ast.BinaryExpression.resolveType(BinaryExpression.java:1708)
at org.eclipse.jdt.internal.compiler.ast.BinaryExpression.resolveType(BinaryExpression.java:1708)
at org.eclipse.jdt.internal.compiler.ast.BinaryExpression.resolveType(BinaryExpression.java:1708)
at org.eclipse.jdt.internal.compiler.ast.BinaryExpression.resolveType(BinaryExpression.java:1708)
at org.eclipse.jdt.internal.compiler.ast.BinaryExpression.resolveType(BinaryExpression.java:1708)
at org.eclipse.jdt.internal.compiler.ast.BinaryExpression.resolveType(BinaryExpression.java:1708)
at org.eclipse.jdt.internal.compiler.ast.BinaryExpression.resolveType(BinaryExpression.java:1708)
at org.eclipse.jdt.internal.compiler.ast.BinaryExpression.resolveType(BinaryExpression.java:1708)
at org.eclipse.jdt.internal.compiler.ast.BinaryExpression.resolveType(BinaryExpression.java:1708)
at org.eclipse.jdt.internal.compiler.ast.BinaryExpression.resolveType(BinaryExpression.java:1708)
at org.eclipse.jdt.internal.compiler.ast.BinaryExpression.resolveType(BinaryExpression.java:1708)
at org.eclipse.jdt.internal.compiler.ast.BinaryExpression.resolveType(BinaryExpression.java:1708)
at org.eclipse.jdt.internal.compiler.ast.BinaryExpression.resolveType(BinaryExpression.java:1708)
at org.eclipse.jdt.internal.compiler.ast.BinaryExpression.resolveType(BinaryExpression.java:1708)
at org.eclipse.jdt.internal.compiler.ast.BinaryExpression.resolveType(BinaryExpression.java:1708)
at org.eclipse.jdt.internal.compiler.ast.BinaryExpression.resolveType(BinaryExpression.java:1708)
at org.eclipse.jdt.internal.compiler.ast.BinaryExpression.resolveType(BinaryExpression.java:1708)
at org.eclipse.jdt.internal.compiler.ast.BinaryExpression.resolveType(BinaryExpression.java:1708)
at org.eclipse.jdt.internal.compiler.ast.BinaryExpression.resolveType(BinaryExpression.java:1708)
at org.eclipse.jdt.internal.compiler.ast.BinaryExpression.resolveType(BinaryExpression.java:1708)
at org.eclipse.jdt.internal.compiler.ast.BinaryExpression.resolveType(BinaryExpression.java:1708)
at org.eclipse.jdt.internal.compiler.ast.BinaryExpression.resolveType(BinaryExpression.java:1708)
at org.eclipse.jdt.internal.compiler.ast.BinaryExpression.resolveType(BinaryExpression.java:1708)
at org.eclipse.jdt.internal.compiler.ast.BinaryExpression.resolveType(BinaryExpression.java:1708)
at org.eclipse.jdt.internal.compiler.ast.BinaryExpression.resolveType(BinaryExpression.java:1708)
at org.eclipse.jdt.internal.compiler.ast.BinaryExpression.resolveType(BinaryExpression.java:1708)
at org.eclipse.jdt.internal.compiler.ast.BinaryExpression.resolveType(BinaryExpression.java:1708)
at org.eclipse.jdt.internal.compiler.ast.BinaryExpression.resolveType(BinaryExpression.java:1708)
at org.eclipse.jdt.internal.compiler.ast.BinaryExpression.resolveType(BinaryExpression.java:1708)
at org.eclipse.jdt.internal.compiler.ast.BinaryExpression.resolveType(BinaryExpression.java:1708)
at org.eclipse.jdt.internal.compiler.ast.BinaryExpression.resolveType(BinaryExpression.java:1708)
at org.eclipse.jdt.internal.compiler.ast.BinaryExpression.resolveType(BinaryExpression.java:1708)
at org.eclipse.jdt.internal.compiler.ast.BinaryExpression.resolveType(BinaryExpression.java:1708)
at org.eclipse.jdt.internal.compiler.ast.BinaryExpression.resolveType(BinaryExpression.java:1708)
at org.eclipse.jdt.internal.compiler.ast.BinaryExpression.resolveType(BinaryExpression.java:1708)
at org.eclipse.jdt.internal.compiler.ast.BinaryExpression.resolveType(BinaryExpression.java:1708)
at org.eclipse.jdt.internal.compiler.ast.BinaryExpression.resolveType(BinaryExpression.java:1708)
at org.eclipse.jdt.internal.compiler.ast.BinaryExpression.resolveType(BinaryExpression.java:1708)
at org.eclipse.jdt.internal.compiler.ast.BinaryExpression.resolveType(BinaryExpression.java:1708)
at org.eclipse.jdt.internal.compiler.ast.BinaryExpression.resolveType(BinaryExpression.java:1708)
at org.eclipse.jdt.internal.compiler.ast.BinaryExpression.resolveType(BinaryExpression.java:1708)
at org.eclipse.jdt.internal.compiler.ast.BinaryExpression.resolveType(BinaryExpression.java:1708)
at org.eclipse.jdt.internal.compiler.ast.BinaryExpression.resolveType(BinaryExpression.java:1708)
at org.eclipse.jdt.internal.compiler.ast.BinaryExpression.resolveType(BinaryExpression.java:1708)
at org.eclipse.jdt.internal.compiler.ast.BinaryExpression.resolveType(BinaryExpression.java:1708)
at org.eclipse.jdt.internal.compiler.ast.BinaryExpression.resolveType(BinaryExpression.java:1708)
at org.eclipse.jdt.internal.compiler.ast.BinaryExpression.resolveType(BinaryExpression.java:1708)
at org.eclipse.jdt.internal.compiler.ast.BinaryExpression.resolveType(BinaryExpression.java:1708)
at org.eclipse.jdt.internal.compiler.ast.Bina
at org.eclipse.core.internal.utils.Assert.isTrue(Assert.java:109)
at org.eclipse.core.internal.resources.MarkerInfo.checkValidAttribute(MarkerInfo.java:57)
at org.eclipse.core.internal.resources.MarkerInfo.setAttribute(MarkerInfo.java:120)
at org.eclipse.core.internal.resources.MarkerInfo.setAttributes(MarkerInfo.java:147)
at org.eclipse.core.internal.resources.Marker.setAttributes(Marker.java:279)
at org.eclipse.jdt.internal.core.builder.AbstractImageBuilder.storeProblemsFor(AbstractImageBuilder.java:394)
at org.eclipse.jdt.internal.core.builder.AbstractImageBuilder.updateProblemsFor(AbstractImageBuilder.java:464)
at org.eclipse.jdt.internal.core.builder.AbstractImageBuilder.acceptResult(AbstractImageBuilder.java:104)
at org.eclipse.jdt.internal.compiler.Compiler.handleInternalException(Compiler.java:419)
at org.eclipse.jdt.internal.compiler.Compiler.compile(Compiler.java:348)
at org.eclipse.jdt.internal.core.builder.AbstractImageBuilder.compile(AbstractImageBuilder.java:248)
at org.eclipse.jdt.internal.core.builder.AbstractImageBuilder.compile(AbstractImageBuilder.java:221)
at org.eclipse.jdt.internal.core.builder.BatchImageBuilder.build(BatchImageBuilder.java:50)
at org.eclipse.jdt.internal.core.builder.JavaBuilder.buildAll(JavaBuilder.java:213)
at org.eclipse.jdt.internal.core.builder.JavaBuilder.build(JavaBuilder.java:141)
at org.eclipse.core.internal.events.BuildManager$2.run(BuildManager.java:593)
at org.eclipse.core.internal.runtime.InternalPlatform.run(InternalPlatform.java:1044)
at org.eclipse.core.runtime.Platform.run(Platform.java:783)
at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:168)
at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:202)
at org.eclipse.core.internal.events.BuildManager$1.run(BuildManager.java:231)
at org.eclipse.core.internal.runtime.InternalPlatform.run(InternalPlatform.java:1044)
at org.eclipse.core.runtime.Platform.run(Platform.java:783)
at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:234)
at org.eclipse.core.internal.events.BuildManager.basicBuildLoop(BuildManager.java:253)
at org.eclipse.core.internal.events.BuildManager.build(BuildManager.java:282)
at org.eclipse.core.internal.events.AutoBuildJob.doBuild(AutoBuildJob.java:139)
at org.eclipse.core.internal.events.AutoBuildJob.run(AutoBuildJob.java:200)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:76)
Comment 1 Olivier Thomann CLA 2006-03-14 10:41:19 EST
Would it be possible to get a test case?
Comment 2 Jan Kanzleiter CLA 2006-03-14 11:04:59 EST
(In reply to comment #1)
> Would it be possible to get a test case?
> 

I am working on the same project as Hendrik. 

After browsing a bit more through the sources to compile (which are generated Java files) we identified the reason of the problem.

The Java file which leads to the problem contains a very huge string concatenation using the "+" operator (about 2400 Strings).

Surely this is not the best way to create a SQL-Select-Command. ;-)
But I think parsing such crazy Java code should not lead to a StackOverflowError.
Comment 3 Olivier Thomann CLA 2006-03-14 11:18:37 EST
(In reply to comment #2)
> The Java file which leads to the problem contains a very huge string
> concatenation using the "+" operator (about 2400 Strings).
This should be optimized. Could we get a copy of this string concatenation in order to investigate why it was not optimized?
The workaround would be to use StringBuffer.append(...) instead of '+'.
Comment 4 Jan Kanzleiter CLA 2006-03-14 11:50:37 EST
(In reply to comment #3)
> (In reply to comment #2)
> > The Java file which leads to the problem contains a very huge string
> > concatenation using the "+" operator (about 2400 Strings).
> This should be optimized. Could we get a copy of this string concatenation in
> order to investigate why it was not optimized?

I really would like to send you the file but i must admit that the file is part of a confidential development project. Publishing this file would give too much informations about this project to the public. Sorry.

> The workaround would be to use StringBuffer.append(...) instead of '+'.
We try this.


Comment 5 Olivier Thomann CLA 2006-03-14 11:54:39 EST
(In reply to comment #4)
> I really would like to send you the file but i must admit that the file is part
> of a confidential development project. Publishing this file would give too much
> informations about this project to the public. Sorry.
In this case, could you please extract a test case that would reflect the same error, but that is not confidential? You might have found an issue in the way we optimized string literals. I believe it is worth investigating how to fix it and to understand why this is not handled properly.
Comment 6 Jan Kanzleiter CLA 2006-03-14 12:01:34 EST
(In reply to comment #5)
> (In reply to comment #4)
> > I really would like to send you the file but i must admit that the file is part
> > of a confidential development project. Publishing this file would give too much
> > informations about this project to the public. Sorry.
> In this case, could you please extract a test case that would reflect the same
> error, but that is not confidential? You might have found an issue in the way
> we optimized string literals. I believe it is worth investigating how to fix it
> and to understand why this is not handled properly.
> 

Ok, we try to create a test case and commit it tomorrow.

Comment 7 Jan Kanzleiter CLA 2006-03-15 04:25:40 EST
Created attachment 36317 [details]
Compiling this file leads to the described error.

The promised test case for the described error.
Comment 8 Philipe Mulet CLA 2006-03-15 09:02:48 EST
Ok, this is the known issue about huge expressions leading to exploding the recursion stack. 
As a workaround, you may want to increase the execution stack size using 
command line argument: -Xss256K (or greater).

Our optimization only deals with String constants concatenation; it doesn't gracefully handle mix of expressions and String constants.
We should define a n-ary operator for these.
Comment 9 Philipe Mulet CLA 2006-03-15 09:05:42 EST
Maybe we can avoid recursing when detecting left expression is homogeneous with current one, and thus flatten resolution... need to investigate.
Comment 10 Olivier Thomann CLA 2006-03-24 20:50:40 EST

*** This bug has been marked as a duplicate of 102728 ***
Comment 11 Philipe Mulet CLA 2006-04-05 07:47:47 EDT
moving keyword to master bug
Comment 12 Philipe Mulet CLA 2006-04-10 05:34:28 EDT
Hendrik - pls document in master bug 102728 why you did tag this one as a Callisto bug ? Which component is depending on fixing this one ? Pls provide details so that it really is a great bug. With current lack of info, I am enclined to remove the keyword.