We utilize sonar cloud with github actions to run against our code base. Recently in our go code base it’s suddenly failing with a cyclical StackOverflowError:
20:05:31.164 INFO Scanner configuration file: /opt/sonar-scanner/conf/sonar-scanner.properties
20:05:31.169 INFO Project root configuration file: /usr/src/sonar-project.properties
20:05:31.182 INFO SonarScanner CLI 7.0.2.4839
20:05:31.184 INFO Java 17.0.14 Amazon.com Inc. (64-bit)
20:05:31.184 INFO Linux 5.15.167.4-microsoft-standard-WSL2 amd64
20:05:31.194 DEBUG Scanner max available memory: 3 GB
20:05:31.223 DEBUG uname -m returned 'x86_64'
20:05:31.226 DEBUG Using JVM default truststore: /usr/lib/jvm/java-17-amazon-corretto.x86_64/lib/security/cacerts
20:05:31.227 DEBUG Create: /opt/sonar-scanner/.sonar/cache
...
20:06:07.712 DEBUG Sensors : JaCoCo XML Report Importer -> Java Config Sensor -> Code Quality and Security for Go -> Go Cover sensor for Go coverage -> IaC Docker Sensor -> EnterpriseTextAndSecretsSensor
20:06:07.712 INFO Sensor JaCoCo XML Report Importer [jacoco]
20:06:07.713 INFO 'sonar.coverage.jacoco.xmlReportPaths' is not defined. Using default locations: target/site/jacoco/jacoco.xml,target/site/jacoco-it/jacoco.xml,build/reports/jacoco/test/jacocoTestReport.xml
20:06:07.714 INFO No report imported, no coverage information will be imported by JaCoCo XML Report Importer
20:06:07.714 INFO Sensor JaCoCo XML Report Importer [jacoco] (done) | time=2ms
20:06:07.714 INFO Sensor Java Config Sensor [iac]
20:06:07.733 INFO 0 source files to be analyzed
20:06:07.737 INFO 0/0 source files have been analyzed
20:06:07.737 INFO Sensor Java Config Sensor [iac] (done) | time=23ms
20:06:07.737 INFO Sensor Code Quality and Security for Go [goenterprise]
20:06:07.740 INFO 1137 source files to be analyzed
..
20:06:10.167 DEBUG 'xxx.go' generated metadata with charset 'UTF-8'
20:06:10.189 ERROR [stderr] Exception in thread "main" java.lang.StackOverflowError
20:06:10.190 ERROR [stderr] at org.sonar.go.utils.SymbolHelper.resolveValue(SymbolHelper.java:98)
20:06:10.190 ERROR [stderr] at com.sonar.go.A.X.Y(QueryUsageCheck.java:57)
20:06:10.190 ERROR [stderr] at com.sonar.go.A.X.X(QueryUsageCheck.java:76)
20:06:10.190 ERROR [stderr] at com.sonar.go.A.X.W(QueryUsageCheck.java:63)
20:06:10.190 ERROR [stderr] at com.sonar.go.A.X.Y(QueryUsageCheck.java:58)
20:06:10.190 ERROR [stderr] at com.sonar.go.A.X.X(QueryUsageCheck.java:76)
20:06:10.190 ERROR [stderr] at com.sonar.go.A.X.W(QueryUsageCheck.java:63)
20:06:10.190 ERROR [stderr] at com.sonar.go.A.X.Y(QueryUsageCheck.java:58)
20:06:10.190 ERROR [stderr] at com.sonar.go.A.X.X(QueryUsageCheck.java:76)
20:06:10.190 ERROR [stderr] at com.sonar.go.A.X.W(QueryUsageCheck.java:63)
20:06:10.190 ERROR [stderr] at com.sonar.go.A.X.Y(QueryUsageCheck.java:58)
20:06:10.190 ERROR [stderr] at com.sonar.go.A.X.X(QueryUsageCheck.java:76)
20:06:10.190 ERROR [stderr] at com.sonar.go.A.X.W(QueryUsageCheck.java:63)
I can also reproduce this locally running the scanner via docker. There’s a pretty clear infinite recursion loop here so it’s not memory or stack space.
This basically blocks our use of sonar for this project. We’ve tried a few different versions of the action code so this suggests a code change of ours has triggered this but there’s just no information to go on here as to how we can solve for this. We can try to brute force detect the change however the code is fine and in production so not incorrect.
Thanks,
David.