Skip to content
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

StackOverflowError while parsing comments in 2.12.0 #10020

Closed
scabug opened this issue Nov 3, 2016 · 5 comments
Closed

StackOverflowError while parsing comments in 2.12.0 #10020

scabug opened this issue Nov 3, 2016 · 5 comments
Assignees
Milestone

Comments

@scabug
Copy link

scabug commented Nov 3, 2016

I have encountered a critical bug in the sbt compile:doc phase. An existing code base which has been built in Scala 2.10 and 2.11 cannot making javadoc.jar for 2.12 due to the following StackOverFlowError.

The part which raise the error is:
https://github.com/scala/scala/blob/v2.12.0/src/compiler/scala/tools/nsc/javac/JavaScanners.scala#L585
The skipComment method was modified since 2.12 and I'm afraid the change should have brought a regression.
https://github.com/scala/scala/blob/v2.11.8/src/compiler/scala/tools/nsc/javac/JavaScanners.scala#L580

https://gist.github.com/seratch/29c612516b02a1b04e55bf5c59461bbc

java.lang.StackOverflowError
	at java.lang.StringBuilder.append(StringBuilder.java:202)
	at scala.collection.mutable.StringBuilder.append(StringBuilder.scala:267)
	at scala.tools.nsc.doc.ScaladocSyntaxAnalyzer$ScaladocJavaUnitScanner.putCommentChar(ScaladocAnalyzer.scala:233)
	at scala.tools.nsc.javac.JavaScanners$JavaScanner.skipBlockComment(JavaScanners.scala:585)
	at scala.tools.nsc.doc.ScaladocSyntaxAnalyzer$ScaladocJavaUnitScanner.skipBlockComment(ScaladocAnalyzer.scala:245)
	at scala.tools.nsc.javac.JavaScanners$JavaScanner.skipBlockComment(JavaScanners.scala:585)
	at scala.tools.nsc.doc.ScaladocSyntaxAnalyzer$ScaladocJavaUnitScanner.skipBlockComment(ScaladocAnalyzer.scala:245)
	at scala.tools.nsc.javac.JavaScanners$JavaScanner.skipBlockComment(JavaScanners.scala:585)
	at scala.tools.nsc.doc.ScaladocSyntaxAnalyzer$ScaladocJavaUnitScanner.skipBlockComment(ScaladocAnalyzer.scala:245)
	at scala.tools.nsc.javac.JavaScanners$JavaScanner.skipBlockComment(JavaScanners.scala:585)
	at scala.tools.nsc.doc.ScaladocSyntaxAnalyzer$ScaladocJavaUnitScanner.skipBlockComment(ScaladocAnalyzer.scala:245)
	at scala.tools.nsc.javac.JavaScanners$JavaScanner.skipBlockComment(JavaScanners.scala:585)
	at scala.tools.nsc.doc.ScaladocSyntaxAnalyzer$ScaladocJavaUnitScanner.skipBlockComment(ScaladocAnalyzer.scala:245)
	at scala.tools.nsc.javac.JavaScanners$JavaScanner.skipBlockComment(JavaScanners.scala:585)
	at scala.tools.nsc.doc.ScaladocSyntaxAnalyzer$ScaladocJavaUnitScanner.skipBlockComment(ScaladocAnalyzer.scala:245)
	at scala.tools.nsc.javac.JavaScanners$JavaScanner.skipBlockComment(JavaScanners.scala:585)
	at scala.tools.nsc.doc.ScaladocSyntaxAnalyzer$ScaladocJavaUnitScanner.skipBlockComment(ScaladocAnalyzer.scala:245)
	at scala.tools.nsc.javac.JavaScanners$JavaScanner.skipBlockComment(JavaScanners.scala:585)
	at scala.tools.nsc.doc.ScaladocSyntaxAnalyzer$ScaladocJavaUnitScanner.skipBlockComment(ScaladocAnalyzer.scala:245)
	at scala.tools.nsc.javac.JavaScanners$JavaScanner.skipBlockComment(JavaScanners.scala:585)
	at scala.tools.nsc.doc.ScaladocSyntaxAnalyzer$ScaladocJavaUnitScanner.skipBlockComment(ScaladocAnalyzer.scala:245)
	at scala.tools.nsc.javac.JavaScanners$JavaScanner.skipBlockComment(JavaScanners.scala:585)
@scabug
Copy link
Author

scabug commented Nov 3, 2016

Imported From: https://issues.scala-lang.org/browse/SI-10020?orig=1
Reporter: Kazuhiro Sera (seratch)
Affected Versions: 2.12.0

@scabug
Copy link
Author

scabug commented Nov 3, 2016

Kazuhiro Sera (seratch) said (edited by @adriaanm on Nov 3, 2016 9:02:41 PM UTC):
Here is a procedure to reproduce the issue:

git clone https://github.com/skinny-framework/skinny-micro.git
cd skinny-micro
sbt ++2.12.0 micro/compile:doc

Output:

$ sbt ++2.12.0 micro/compile:doc
[info] Loading global plugins from /Users/kazuhirosera/.sbt/0.13/plugins
[info] Loading project definition from /Users/kazuhirosera/tmp/skinny-micro/project
[info] Updating skinny-micro-build
[info] Resolved skinny-micro-build dependencies
[info] Fetching artifacts of skinny-micro-build
[info] Fetched artifacts of skinny-micro-build
[info] Compiling 1 Scala source to /Users/kazuhirosera/tmp/skinny-micro/project/target/scala-2.10/sbt-0.13/classes...
[info] Set current project to skinny-micro (in build file:/Users/kazuhirosera/tmp/skinny-micro/)
[info] Setting version to 2.12.0
[info] Reapplying settings...
[info] Set current project to skinny-micro (in build file:/Users/kazuhirosera/tmp/skinny-micro/)
[info] Updating micro
[info] Resolved micro dependencies
[info] Fetching artifacts of micro
[info] Fetched artifacts of micro
[info] Updating microCommon
[info] Resolved microCommon dependencies
[info] Fetching artifacts of microCommon
[info] Fetched artifacts of microCommon
[info] Formatting 10 Scala sources {file:/Users/kazuhirosera/tmp/skinny-micro/}microCommon(compile) ...
[info] Compiling 10 Scala sources to /Users/kazuhirosera/tmp/skinny-micro/micro-common/target/scala-2.12/classes...
[info] Main Scala API documentation to /Users/kazuhirosera/tmp/skinny-micro/micro/target/scala-2.12/api...
java.lang.StackOverflowError
	at scala.tools.nsc.util.JavaCharArrayReader.next(JavaCharArrayReader.scala:28)
	at scala.tools.nsc.doc.ScaladocSyntaxAnalyzer$ScaladocJavaUnitScanner.putCommentChar(ScaladocAnalyzer.scala:234)
	at scala.tools.nsc.javac.JavaScanners$JavaScanner.skipBlockComment(JavaScanners.scala:585)
	at scala.tools.nsc.doc.ScaladocSyntaxAnalyzer$ScaladocJavaUnitScanner.skipBlockComment(ScaladocAnalyzer.scala:245)
	at scala.tools.nsc.javac.JavaScanners$JavaScanner.skipBlockComment(JavaScanners.scala:585)
	at scala.tools.nsc.doc.ScaladocSyntaxAnalyzer$ScaladocJavaUnitScanner.skipBlockComment(ScaladocAnalyzer.scala:245)
	at scala.tools.nsc.javac.JavaScanners$JavaScanner.skipBlockComment(JavaScanners.scala:585)
	at scala.tools.nsc.doc.ScaladocSyntaxAnalyzer$ScaladocJavaUnitScanner.skipBlockComment(ScaladocAnalyzer.scala:245)
	at scala.tools.nsc.javac.JavaScanners$JavaScanner.skipBlockComment(JavaScanners.scala:585)
	at 
...
scala.tools.nsc.javac.JavaScanners$JavaScanner.skipBlockComment(JavaScanners.scala:585)
	at scala.tools.nsc.doc.ScaladocSyntaxAnalyzer$ScaladocJavaUnitScanner.skipBlockComment(ScaladocAnalyzer.scala:245)
[error] (micro/compile:doc) java.lang.StackOverflowError
[error] Total time: 11 s, completed Nov 3, 2016 1:08:50 PM

@scabug
Copy link
Author

scabug commented Nov 3, 2016

Kazuhiro Sera (seratch) said:
I found the issue happens with Java source code that have lots of comments. I've fixed in my project by removing the comments so far.

skinny-framework/skinny-micro@8f49129

And I've changed the priority of this issue from critical to minor because most users won't be affected by this issue.

@scabug
Copy link
Author

scabug commented Nov 3, 2016

@adriaanm said:
Thanks for your report! This will be fixed in 2.12.1 by scala/scala#5469

@scabug
Copy link
Author

scabug commented Nov 4, 2016

Kazuhiro Sera (seratch) said:
Thanks! Good to hear :)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants