Sonar scanner crashes on some objc files

I’m trying to run the scanner on a mixed swift/objc project. If I include only .swift files, the scan is successful, but it crashes if I include the objc files as well.

I wrapped the build in the cfamily build-wrapper. The crash seems to happen on particular objc files.

INFO: Sensor CFamily [cpp]
INFO: Using build-wrapper output: <>/build-wrapper-dump.json
INFO: Available processors: 8
INFO: Using 1 thread for analysis according to value of "sonar.cfamily.threads" property.
WARN: Metric 'comment_lines_data' is deprecated. Provided value is ignored.
...
ERROR: Exception in thread pool-3-thread-1
java.lang.IllegalStateException: exit code != 0
	at com.sonar.cpp.analyzer.Subprocess.execute(Subprocess.java:54)
	at com.sonar.cpp.analyzer.Subprocess.execute(Subprocess.java:25)
	at com.sonar.cpp.plugin.CFamilySensor.lambda$process$4(CFamilySensor.java:330)
	at com.sonar.cpp.analyzer.AnalysisExecutor.lambda$submit$0(AnalysisExecutor.java:53)
	at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
	at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:630)
	at java.base/java.lang.Thread.run(Thread.java:832)

INFO: ------------------------------------------------------------------------
INFO: EXECUTION FAILURE
INFO: ------------------------------------------------------------------------
INFO: Total time: 1:13.331s
INFO: Final Memory: 62M/220M
INFO: ------------------------------------------------------------------------
ERROR: Error during SonarScanner execution
java.lang.IllegalStateException: java.lang.IllegalStateException: exit code != 0
	at com.sonar.cpp.analyzer.AnalysisExecutor.submit(AnalysisExecutor.java:47)
	at com.sonar.cpp.plugin.CFamilySensor.process(CFamilySensor.java:317)
	at com.sonar.cpp.plugin.CFamilySensor.process(CFamilySensor.java:286)
	at com.sonar.cpp.plugin.CFamilySensor.execute(CFamilySensor.java:205)
	at org.sonar.scanner.sensor.AbstractSensorWrapper.analyse(AbstractSensorWrapper.java:48)
	at org.sonar.scanner.sensor.ModuleSensorsExecutor.execute(ModuleSensorsExecutor.java:85)
	at org.sonar.scanner.sensor.ModuleSensorsExecutor.execute(ModuleSensorsExecutor.java:62)
	at org.sonar.scanner.scan.ModuleScanContainer.doAfterStart(ModuleScanContainer.java:82)
	at org.sonar.core.platform.ComponentContainer.startComponents(ComponentContainer.java:136)
	at org.sonar.core.platform.ComponentContainer.execute(ComponentContainer.java:122)
	at org.sonar.scanner.scan.ProjectScanContainer.scan(ProjectScanContainer.java:400)
	at org.sonar.scanner.scan.ProjectScanContainer.scanRecursively(ProjectScanContainer.java:395)
	at org.sonar.scanner.scan.ProjectScanContainer.doAfterStart(ProjectScanContainer.java:358)
	at org.sonar.core.platform.ComponentContainer.startComponents(ComponentContainer.java:136)
	at org.sonar.core.platform.ComponentContainer.execute(ComponentContainer.java:122)
	at org.sonar.scanner.bootstrap.GlobalContainer.doAfterStart(GlobalContainer.java:141)
	at org.sonar.core.platform.ComponentContainer.startComponents(ComponentContainer.java:136)
	at org.sonar.core.platform.ComponentContainer.execute(ComponentContainer.java:122)
	at org.sonar.batch.bootstrapper.Batch.doExecute(Batch.java:73)
	at org.sonar.batch.bootstrapper.Batch.execute(Batch.java:67)
	at org.sonarsource.scanner.api.internal.batch.BatchIsolatedLauncher.execute(BatchIsolatedLauncher.java:46)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:564)
	at org.sonarsource.scanner.api.internal.IsolatedLauncherProxy.invoke(IsolatedLauncherProxy.java:60)
	at com.sun.proxy.$Proxy0.execute(Unknown Source)
	at org.sonarsource.scanner.api.EmbeddedScanner.doExecute(EmbeddedScanner.java:189)
	at org.sonarsource.scanner.api.EmbeddedScanner.execute(EmbeddedScanner.java:138)
	at org.sonarsource.scanner.cli.Main.execute(Main.java:112)
	at org.sonarsource.scanner.cli.Main.execute(Main.java:75)
	at org.sonarsource.scanner.cli.Main.main(Main.java:61)
Caused by: java.lang.IllegalStateException: exit code != 0
	at com.sonar.cpp.analyzer.Subprocess.execute(Subprocess.java:54)
	at com.sonar.cpp.analyzer.Subprocess.execute(Subprocess.java:25)
	at com.sonar.cpp.plugin.CFamilySensor.lambda$process$4(CFamilySensor.java:330)
	at com.sonar.cpp.analyzer.AnalysisExecutor.lambda$submit$0(AnalysisExecutor.java:53)
	at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
	at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:630)
	at java.base/java.lang.Thread.run(Thread.java:832)

Here’s some info about our versions.

INFO: SonarScanner 4.5.0.2216
INFO: Java 14.0.1 N/A (64-bit)
INFO: Mac OS X 10.15.7 x86_64
INFO: Analyzing on SonarQube server 7.9.3

I did note the last file that was being analyzed, and created a reproducer file. But I’m not sure where to send it.

Hi @jmeadows ,

I sent you a PM where you can share the reproducer file.