OutOfMemoryError: GC overhead limit exceeded when SCM is enabled

363 views
Skip to first unread message

konstant...@gmail.com

unread,
Apr 8, 2017, 12:42:58 AM4/8/17
to SonarQube
I have a fairly large android project with ~300k of code.
When I have sonar.scm.enabled=true, I get an OutOfMemoryError during full analysis.
When I set sonar.scm.enabled to false, analysis runs fine.
I have tried to increase memory available to gradle to 3g (default is 1g) with no luck. I have my gradle run in parallel mode, so I am not able to increase memory further.
I don't think analysis should fail with any amount of memory available.

I use android gradle plugin v 2.2.1.

Full stacktrace is as follows:
[20:41:26]org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':sonarqube'.
[20:41:26] at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:69)
[20:41:26] at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:46)
[20:41:26] at org.gradle.api.internal.tasks.execution.PostExecutionAnalysisTaskExecuter.execute(PostExecutionAnalysisTaskExecuter.java:35)
[20:41:26] at org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter.execute(SkipUpToDateTaskExecuter.java:66)
[20:41:26] at org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:58)
[20:41:26] at org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:52)
[20:41:26] at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:52)
[20:41:26] at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:53)
[20:41:26] at org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTaskExecuter.execute(ExecuteAtMostOnceTaskExecuter.java:43)
[20:41:26] at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:203)
[20:41:26] at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:185)
[20:41:26] at org.gradle.execution.taskgraph.AbstractTaskPlanExecutor$TaskExecutorWorker.processTask(AbstractTaskPlanExecutor.java:66)
[20:41:26] at org.gradle.execution.taskgraph.AbstractTaskPlanExecutor$TaskExecutorWorker.run(AbstractTaskPlanExecutor.java:50)
[20:41:26] at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:54)
[20:41:26] at org.gradle.internal.concurrent.StoppableExecutorImpl$1.run(StoppableExecutorImpl.java:40)
[20:41:26]Caused by: java.lang.IllegalStateException: java.lang.OutOfMemoryError: GC overhead limit exceeded
[20:41:26] at org.sonarsource.scm.git.JGitBlameCommand.waitForTaskToComplete(JGitBlameCommand.java:76)
[20:41:26] at org.sonarsource.scm.git.JGitBlameCommand.blame(JGitBlameCommand.java:63)
[20:41:26] at org.sonar.scanner.scm.ScmSensor.execute(ScmSensor.java:86)
[20:41:26] at org.sonar.scanner.sensor.SensorWrapper.analyse(SensorWrapper.java:53)
[20:41:26] at org.sonar.scanner.phases.SensorsExecutor.executeSensor(SensorsExecutor.java:57)
[20:41:26] at org.sonar.scanner.phases.SensorsExecutor.execute(SensorsExecutor.java:49)
[20:41:26] at org.sonar.scanner.phases.AbstractPhaseExecutor.execute(AbstractPhaseExecutor.java:78)
[20:41:26] at org.sonar.scanner.scan.ModuleScanContainer.doAfterStart(ModuleScanContainer.java:182)
[20:41:26] at org.sonar.core.platform.ComponentContainer.startComponents(ComponentContainer.java:142)
[20:41:26] at org.sonar.core.platform.ComponentContainer.execute(ComponentContainer.java:127)
[20:41:26] at org.sonar.scanner.scan.ProjectScanContainer.scan(ProjectScanContainer.java:247)
[20:41:26] at org.sonar.scanner.scan.ProjectScanContainer.scanRecursively(ProjectScanContainer.java:242)
[20:41:26] at org.sonar.scanner.scan.ProjectScanContainer.scanRecursively(ProjectScanContainer.java:240)
[20:41:26] at org.sonar.scanner.scan.ProjectScanContainer.doAfterStart(ProjectScanContainer.java:232)
[20:41:26] at org.sonar.core.platform.ComponentContainer.startComponents(ComponentContainer.java:142)
[20:41:26] at org.sonar.core.platform.ComponentContainer.execute(ComponentContainer.java:127)
[20:41:26] at org.sonar.scanner.task.ScanTask.execute(ScanTask.java:47)
[20:41:26] at org.sonar.scanner.task.TaskContainer.doAfterStart(TaskContainer.java:86)
[20:41:26] at org.sonar.core.platform.ComponentContainer.startComponents(ComponentContainer.java:142)
[20:41:26] at org.sonar.core.platform.ComponentContainer.execute(ComponentContainer.java:127)
[20:41:26] at org.sonar.scanner.bootstrap.GlobalContainer.executeTask(GlobalContainer.java:115)
[20:41:26] at org.sonar.batch.bootstrapper.Batch.executeTask(Batch.java:116)
[20:41:26] at org.sonarsource.scanner.api.internal.batch.BatchIsolatedLauncher.execute(BatchIsolatedLauncher.java:62)
[20:41:26] at org.sonarsource.scanner.api.internal.IsolatedLauncherProxy.invoke(IsolatedLauncherProxy.java:60)
[20:41:26] at com.sun.proxy.$Proxy92.execute(Unknown Source)
[20:41:26] at org.sonarsource.scanner.api.EmbeddedScanner.doExecute(EmbeddedScanner.java:233)
[20:41:26] at org.sonarsource.scanner.api.EmbeddedScanner.runAnalysis(EmbeddedScanner.java:151)
[20:41:26] at org.sonarqube.gradle.SonarQubeTask.run(SonarQubeTask.java:93)
[20:41:26] at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:75)
[20:41:26] at org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory$StandardTaskAction.doExecute(AnnotationProcessingTaskFactory.java:228)
[20:41:26] at org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory$StandardTaskAction.execute(AnnotationProcessingTaskFactory.java:221)
[20:41:26] at org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory$StandardTaskAction.execute(AnnotationProcessingTaskFactory.java:210)
[20:41:26] at org.gradle.api.internal.AbstractTask$TaskActionWrapper.execute(AbstractTask.java:621)
[20:41:26] at org.gradle.api.internal.AbstractTask$TaskActionWrapper.execute(AbstractTask.java:604)
[20:41:26] at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:80)
[20:41:30] at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:61)
[20:41:30] ... 14 more
[20:41:30]Caused by: java.lang.OutOfMemoryError: GC overhead limit exceeded

Julien HENRY

unread,
Apr 10, 2017, 1:08:48 PM4/10/17
to SonarQube, konstant...@gmail.com
Hi,

What is the version of your SonarQube server?
What is the version of the SonarQube Git Plugin installed on the server?

Is your stacktrace truncated? Could you please use logs with verbose output in order to identify the file causing the issue. Is this file special (very big, or having a huge history)?

++

Julien

konstant...@gmail.com

unread,
Apr 10, 2017, 2:35:51 PM4/10/17
to SonarQube, konstant...@gmail.com
SonarQube Server is 6.2, Git plugin is 1.2

It will take some time to produce the detailed logs. I think I'll be able to post verbose output tomorrow.
In fact repository is very busy and git history is quite large.

konstant...@gmail.com

unread,
Apr 12, 2017, 3:23:03 AM4/12/17
to SonarQube, konstant...@gmail.com
I've got another OOM exception on the same project with a file name:


[21:07:06]* Exception is:
[21:07:06]org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':sonarqube'.
[21:07:06] at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:69)
[21:07:06] at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:46)
[21:07:06] at org.gradle.api.internal.tasks.execution.PostExecutionAnalysisTaskExecuter.execute(PostExecutionAnalysisTaskExecuter.java:35)
[21:07:06] at org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter.execute(SkipUpToDateTaskExecuter.java:66)
[21:07:06] at org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:58)
[21:07:06] at org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:52)
[21:07:06] at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:52)
[21:07:06] at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:53)
[21:07:06] at org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTaskExecuter.execute(ExecuteAtMostOnceTaskExecuter.java:43)
[21:07:06] at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:203)
[21:07:06] at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:185)
[21:07:06] at org.gradle.execution.taskgraph.AbstractTaskPlanExecutor$TaskExecutorWorker.processTask(AbstractTaskPlanExecutor.java:66)
[21:07:06] at org.gradle.execution.taskgraph.AbstractTaskPlanExecutor$TaskExecutorWorker.run(AbstractTaskPlanExecutor.java:50)
[21:07:06] at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:54)
[21:07:06] at org.gradle.internal.concurrent.StoppableExecutorImpl$1.run(StoppableExecutorImpl.java:40)
[21:07:06]Caused by: java.lang.IllegalStateException: Unable to blame file src/androidTest/AndroidManifest.xml
[21:07:06] at org.sonarsource.scm.git.JGitBlameCommand.blame(JGitBlameCommand.java:128)
[21:07:06] at org.sonarsource.scm.git.JGitBlameCommand.access$000(JGitBlameCommand.java:44)
[21:07:06] at org.sonarsource.scm.git.JGitBlameCommand$1.call(JGitBlameCommand.java:112)
[21:07:06] at org.sonarsource.scm.git.JGitBlameCommand$1.call(JGitBlameCommand.java:109)
[21:07:06]Caused by: org.eclipse.jgit.errors.LargeObjectException$OutOfMemory: Out of memory loading unknown object
[21:07:06] at org.eclipse.jgit.internal.storage.file.PackFile.load(PackFile.java:850)
[21:07:06] at org.eclipse.jgit.internal.storage.file.PackFile.get(PackFile.java:263)
[21:07:06] at org.eclipse.jgit.internal.storage.file.ObjectDirectory.openPackedObject(ObjectDirectory.java:420)
[21:07:06] at org.eclipse.jgit.internal.storage.file.ObjectDirectory.openPackedFromSelfOrAlternate(ObjectDirectory.java:389)
[21:07:06] at org.eclipse.jgit.internal.storage.file.ObjectDirectory.openPackedFromSelfOrAlternate(ObjectDirectory.java:393)
[21:07:23] at org.eclipse.jgit.internal.storage.file.ObjectDirectory.openObject(ObjectDirectory.java:381)
[21:07:23] at org.eclipse.jgit.internal.storage.file.WindowCursor.open(WindowCursor.java:142)
[21:07:23] at org.eclipse.jgit.treewalk.CanonicalTreeParser.reset(CanonicalTreeParser.java:214)
[21:07:23] at org.eclipse.jgit.treewalk.TreeWalk.reset(TreeWalk.java:473)
[21:07:23] at org.eclipse.jgit.blame.BlameGenerator.find(BlameGenerator.java:954)
[21:07:23] at org.eclipse.jgit.blame.BlameGenerator.processMerge(BlameGenerator.java:680)
[21:07:23] at org.eclipse.jgit.blame.BlameGenerator.next(BlameGenerator.java:500)
[21:07:23] at org.eclipse.jgit.blame.BlameResult.computeAll(BlameResult.java:239)
[21:07:23] at org.eclipse.jgit.blame.BlameGenerator.computeBlameResult(BlameGenerator.java:450)
[21:07:23] at org.eclipse.jgit.api.BlameCommand.call(BlameCommand.java:230)
[21:07:23] at org.sonarsource.scm.git.JGitBlameCommand.blame(JGitBlameCommand.java:126)
[21:07:23] ... 3 more

It is funny as src/androidTest/AndroidManifest.xml is 408 bytes long and has just 4 commits in its git log.


On Monday, April 10, 2017 at 8:08:48 PM UTC+3, Julien HENRY wrote:

konstant...@gmail.com

unread,
Apr 20, 2017, 6:21:11 PM4/20/17
to SonarQube, konstant...@gmail.com
Looks like I have found a file where an OOME occurs
It is a 1800-LOC test file with a 338492 bytes long git blame output
I have got it listed in a log file with I run ./gradlew sonarqube --info --debug

OutOfMemoryError is now at jet another different place:

01:07:37.255 [ERROR] [org.gradle.BuildExceptionReporter] Caused by: java.lang.OutOfMemoryError: GC overhead limit exceeded
01:07:37.255 [ERROR] [org.gradle.BuildExceptionReporter]        at org.eclipse.jgit.util.RawParseUtils.decode(RawParseUtils.java:1064)
01:07:37.255 [ERROR] [org.gradle.BuildExceptionReporter]        at org.eclipse.jgit.util.RawParseUtils.decodeNoFallback(RawParseUtils.java:1007)
01:07:37.255 [ERROR] [org.gradle.BuildExceptionReporter]        at org.eclipse.jgit.util.RawParseUtils.decode(RawParseUtils.java:967)
01:07:37.256 [ERROR] [org.gradle.BuildExceptionReporter]        at org.eclipse.jgit.treewalk.TreeWalk.pathOf(TreeWalk.java:1104)
01:07:37.256 [ERROR] [org.gradle.BuildExceptionReporter]        at org.eclipse.jgit.treewalk.TreeWalk.getPathString(TreeWalk.java:848)
01:07:37.256 [ERROR] [org.gradle.BuildExceptionReporter]        at org.eclipse.jgit.diff.DiffEntry.scan(DiffEntry.java:195)
01:07:37.256 [ERROR] [org.gradle.BuildExceptionReporter]        at org.eclipse.jgit.diff.DiffEntry.scan(DiffEntry.java:139)
01:07:37.256 [ERROR] [org.gradle.BuildExceptionReporter]        at org.eclipse.jgit.diff.DiffEntry.scan(DiffEntry.java:116)
01:07:37.256 [ERROR] [org.gradle.BuildExceptionReporter]        at org.eclipse.jgit.blame.BlameGenerator.findRename(BlameGenerator.java:974)
01:07:37.256 [ERROR] [org.gradle.BuildExceptionReporter]        at org.eclipse.jgit.blame.BlameGenerator.processOne(BlameGenerator.java:612)
01:07:37.256 [ERROR] [org.gradle.BuildExceptionReporter]        at org.eclipse.jgit.blame.BlameGenerator.next(BlameGenerator.java:496)
01:07:37.256 [ERROR] [org.gradle.BuildExceptionReporter]        at org.eclipse.jgit.blame.BlameResult.computeAll(BlameResult.java:239)
01:07:37.256 [ERROR] [org.gradle.BuildExceptionReporter]        at org.eclipse.jgit.blame.BlameGenerator.computeBlameResult(BlameGenerator.java:450)
01:07:37.256 [ERROR] [org.gradle.BuildExceptionReporter]        at org.eclipse.jgit.api.BlameCommand.call(BlameCommand.java:230)
01:07:37.257 [ERROR] [org.gradle.BuildExceptionReporter]        at org.sonarsource.scm.git.JGitBlameCommand.blame(JGitBlameCommand.java:126)
01:07:37.257 [ERROR] [org.gradle.BuildExceptionReporter]        at org.sonarsource.scm.git.JGitBlameCommand.access$000(JGitBlameCommand.java:44)
01:07:37.257 [ERROR] [org.gradle.BuildExceptionReporter]        at org.sonarsource.scm.git.JGitBlameCommand$1.call(JGitBlameCommand.java:112)
01:07:37.257 [ERROR] [org.gradle.BuildExceptionReporter]        at org.sonarsource.scm.git.JGitBlameCommand$1.call(JGitBlameCommand.java:109)

Reply all
Reply to author
Forward
0 new messages