StackOverflowError when parsing big json file

218 views
Skip to first unread message

roman...@fluidtime.com

unread,
Nov 9, 2016, 5:01:28 AM11/9/16
to SonarQube
Hi there,

Environment:
sonarqube version: Version 5.6.2
Json Plugin: 2.1
run via gradle 3.1 and the 'org.sonarqube' version '2.2' plugin

We get the following error if we try to parse a large json file , which was added to our source to mock a server response (attached):
17:06:11.576 [DEBUG] [org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTaskExecuter] Finished executing task ':sonarqube'
17:06:11.576 [LIFECYCLE] [class org.gradle.internal.buildevents.TaskExecutionLogger] :sonarqube FAILED
17:06:11.577 [INFO] [org.gradle.execution.taskgraph.AbstractTaskPlanExecutor] :sonarqube (Thread[Task worker Thread 2,5,main]) completed. Took 7.395 secs.
17:06:11.577 [DEBUG] [org.gradle.internal.operations.DefaultBuildOperationWorkerRegistry] Worker root.45 completed (0 in use)
17:06:11.579 [DEBUG] [org.gradle.execution.taskgraph.AbstractTaskPlanExecutor] Task worker [Thread[Task worker Thread 2,5,main]] finished, busy: 11.492 secs, idle: 17.061 secs
17:06:11.591 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] 
17:06:11.591 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] FAILURE: Build failed with an exception.
17:06:11.591 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] 
17:06:11.591 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] * What went wrong:
17:06:11.592 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] Execution failed for task ':sonarqube'.
17:06:11.592 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] > java.lang.StackOverflowError (no error message)
17:06:11.594 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] 
17:06:11.595 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] * Exception is:
17:06:11.606 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':sonarqube'.
17:06:11.606 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] 	at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:69)
17:06:11.606 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] 	at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:46)
17:06:11.606 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] 	at org.gradle.api.internal.tasks.execution.PostExecutionAnalysisTaskExecuter.execute(PostExecutionAnalysisTaskExecuter.java:35)
17:06:11.606 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] 	at org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter.execute(SkipUpToDateTaskExecuter.java:64)
17:06:11.606 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] 	at org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:58)
17:06:11.606 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] 	at org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:52)
17:06:11.607 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] 	at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:52)
17:06:11.607 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] 	at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:53)
17:06:11.607 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] 	at org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTaskExecuter.execute(ExecuteAtMostOnceTaskExecuter.java:43)
17:06:11.607 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] 	at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:233)
17:06:11.607 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] 	at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:215)
17:06:11.607 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] 	at org.gradle.execution.taskgraph.AbstractTaskPlanExecutor$TaskExecutorWorker.processTask(AbstractTaskPlanExecutor.java:74)
17:06:11.607 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] 	at org.gradle.execution.taskgraph.AbstractTaskPlanExecutor$TaskExecutorWorker.run(AbstractTaskPlanExecutor.java:55)
17:06:11.607 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] 	at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:54)
17:06:11.607 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] 	at org.gradle.internal.concurrent.StoppableExecutorImpl$1.run(StoppableExecutorImpl.java:40)
17:06:11.607 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] Caused by: java.lang.StackOverflowError
17:06:11.607 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] 	at org.sonar.json.tree.impl.InternalSyntaxToken.calculateEndOffsets(InternalSyntaxToken.java:48)
17:06:11.607 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] 	at org.sonar.json.tree.impl.InternalSyntaxToken.<init>(InternalSyntaxToken.java:44)
17:06:11.608 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] 	at org.sonar.json.parser.JSONNodeBuilder.createTerminal(JSONNodeBuilder.java:60)
17:06:11.608 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] 	at com.sonar.sslr.impl.typed.SyntaxTreeCreator.visitTerminal(SyntaxTreeCreator.java:174)
17:06:11.608 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] 	at com.sonar.sslr.impl.typed.SyntaxTreeCreator.visit(SyntaxTreeCreator.java:74)
17:06:11.608 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] 	at com.sonar.sslr.impl.typed.SyntaxTreeCreator.convertChildren(SyntaxTreeCreator.java:129)
17:06:11.608 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] 	at com.sonar.sslr.impl.typed.SyntaxTreeCreator.visitNonTerminal(SyntaxTreeCreator.java:115)
17:06:11.608 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] 	at com.sonar.sslr.impl.typed.SyntaxTreeCreator.visit(SyntaxTreeCreator.java:72)
17:06:11.608 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] 	at com.sonar.sslr.impl.typed.SyntaxTreeCreator.convertChildren(SyntaxTreeCreator.java:129)
17:06:11.608 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] 	at com.sonar.sslr.impl.typed.SyntaxTreeCreator.visitNonTerminal(SyntaxTreeCreator.java:119)
17:06:11.608 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] 	at com.sonar.sslr.impl.typed.SyntaxTreeCreator.visit(SyntaxTreeCreator.java:72)
17:06:11.608 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] 	at com.sonar.sslr.impl.typed.SyntaxTreeCreator.visitNonTerminal(SyntaxTreeCreator.java:89)
17:06:11.608 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] 	at com.sonar.sslr.impl.typed.SyntaxTreeCreator.visit(SyntaxTreeCreator.java:72)
17:06:11.609 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] 	at com.sonar.sslr.impl.typed.SyntaxTreeCreator.convertChildren(SyntaxTreeCreator.java:129)
17:06:11.609 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] 	at com.sonar.sslr.impl.typed.SyntaxTreeCreator.visitNonTerminal(SyntaxTreeCreator.java:119)
17:06:11.609 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] 	at com.sonar.sslr.impl.typed.SyntaxTreeCreator.visit(SyntaxTreeCreator.java:72)
17:06:11.609 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] 	at com.sonar.sslr.impl.typed.SyntaxTreeCreator.visitNonTerminal(SyntaxTreeCreator.java:89)
17:06:11.609 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] 	at com.sonar.sslr.impl.typed.SyntaxTreeCreator.visit(SyntaxTreeCreator.java:72)
...
17:06:11.702 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] at com.sonar.sslr.impl.typed.SyntaxTreeCreator.visitNonTerminal(SyntaxTreeCreator.java:119) 17:06:11.702 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] at com.sonar.sslr.impl.typed.SyntaxTreeCreator.visit(SyntaxTreeCreator.java:72) 17:06:11.702 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] 17:06:11.702 [LIFECYCLE] [org.gradle.internal.buildevents.BuildResultLogger] 17:06:11.702 [LIFECYCLE] [org.gradle.internal.buildevents.BuildResultLogger] BUILD FAILED

We have excluded the file from analysis, but looking into the root cause may be interesting nonetheless.

Thanks for the great work,
Roman
response.json

Alix Lourme

unread,
Dec 22, 2016, 8:14:47 PM12/22/16
to SonarQube
Hi,

Same issue for me when a file contains many key/value pairs (> ~1300).
This is the case in your file, the last coordinates contains ~2000 items.

I have created #28.

Best regards

David Racodon

unread,
Dec 23, 2016, 2:50:05 PM12/23/16
to Alix Lourme, SonarQube
Hi Roman, Hi Alix,

@Roman: My apologies for having missed your thread in November. As a side note, for the plugins I maintain (CSS/Less, JSON, Java Properties, Cucumber Gherkin, Puppet), it is easier for me to get notified if you open an issue directly on GitHub next time.

Regarding this issue, thanks for reporting it and providing a reproducer.
It is now fixed and a snapshot can be downloaded at https://github.com/racodond/sonar-json-plugin/releases/tag/2.2-RC1. It would be great if you can confirm that it fixes the issue on your side.

Thank you very much

Regards,

David RACODON
Freelance QA Consultant

--
You received this message because you are subscribed to the Google Groups "SonarQube" group.
To unsubscribe from this group and stop receiving emails from it, send an email to sonarqube+unsubscribe@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/sonarqube/bf92ea6a-798f-4434-947e-4516c963d8ae%40googlegroups.com.

For more options, visit https://groups.google.com/d/optout.

roman...@fluidtime.com

unread,
Dec 27, 2016, 5:48:58 AM12/27/16
to SonarQube, alix....@gmail.com
Thx for the fix.

best,
Roman
To unsubscribe from this group and stop receiving emails from it, send an email to sonarqube+...@googlegroups.com.
Reply all
Reply to author
Forward
0 new messages