Clang-16 frontend crashes

Hi, there’s currently a bug in the clang-16 frontend which makes our code none-compilable.

This has resulted in sonarcloud crashing on analyzing our code base ever since this update https://sonarsource.atlassian.net/browse/CPP-3845?jql=project%20%3D%2010166%20AND%20fixVersion%3D14067%20ORDER%20BY%20priority%20DESC%2C%20key%20ASC:

Example of the error:

ERROR: Exception in thread pool-4-thread-14
com.sonar.cpp.analyzer.Analyzer$AnalyzerException: Exit code 139: /opt/actions-runner/_work/EPEXcpp/EPEXcpp/EPEX/src/balance_price/tennet_balance_price_logger.cpp
	at com.sonar.cpp.analyzer.AnalysisHandler.acceptResult(AnalysisHandler.java:67)
	at com.sonar.cpp.analyzer.Subprocess.execute(Subprocess.java:128)
	at com.sonar.cpp.plugin.CFamilySensor.lambda$process$34(CFamilySensor.java:1328)
	at com.sonar.cpp.analyzer.AnalysisExecutor.lambda$submit$0(AnalysisExecutor.java:58)
	at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
	at java.base/java.util.concurrent.FutureTask.run(Unknown Source)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
	at java.base/java.lang.Thread.run(Unknown Source)

ERROR: Exception in thread pool-4-thread-13
com.sonar.cpp.analyzer.Analyzer$AnalyzerException: Exit code 139: /opt/actions-runner/_work/EPEXcpp/EPEXcpp/EPEX/src/balance_price/elia_balance_price_logger.cpp
	at com.sonar.cpp.analyzer.AnalysisHandler.acceptResult(AnalysisHandler.java:67)
	at com.sonar.cpp.analyzer.Subprocess.execute(Subprocess.java:128)
	at com.sonar.cpp.plugin.CFamilySensor.lambda$process$34(CFamilySensor.java:1328)
	at com.sonar.cpp.analyzer.AnalysisExecutor.lambda$submit$0(AnalysisExecutor.java:58)
	at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
	at java.base/java.util.concurrent.FutureTask.run(Unknown Source)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
	at java.base/java.lang.Thread.run(Unknown Source)

ERROR: Exception in thread pool-4-thread-4
com.sonar.cpp.analyzer.Analyzer$AnalyzerException: Exit code 139: /opt/actions-runner/_work/EPEXcpp/EPEXcpp/datasets/src/dataset.cpp
	at com.sonar.cpp.analyzer.AnalysisHandler.acceptResult(AnalysisHandler.java:67)
	at com.sonar.cpp.analyzer.Subprocess.execute(Subprocess.java:128)
	at com.sonar.cpp.plugin.CFamilySensor.lambda$process$34(CFamilySensor.java:1328)
	at com.sonar.cpp.analyzer.AnalysisExecutor.lambda$submit$0(AnalysisExecutor.java:58)
	at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
	at java.base/java.util.concurrent.FutureTask.run(Unknown Source)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
	at java.base/java.lang.Thread.run(Unknown Source)

ERROR: Exception in thread pool-4-thread-12
com.sonar.cpp.analyzer.Analyzer$AnalyzerException: Exit code 139: /opt/actions-runner/_work/EPEXcpp/EPEXcpp/EPEX/src/atc_table.cpp
	at com.sonar.cpp.analyzer.AnalysisHandler.acceptResult(AnalysisHandler.java:67)
	at com.sonar.cpp.analyzer.Subprocess.execute(Subprocess.java:128)
	at com.sonar.cpp.plugin.CFamilySensor.lambda$process$34(CFamilySensor.java:1328)
	at com.sonar.cpp.analyzer.AnalysisExecutor.lambda$submit$0(AnalysisExecutor.java:58)
	at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
	at java.base/java.util.concurrent.FutureTask.run(Unknown Source)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
	at java.base/java.lang.Thread.run(Unknown Source)

ERROR: Exception in thread pool-4-thread-22
com.sonar.cpp.analyzer.Analyzer$AnalyzerException: Exit code 139: /opt/actions-runner/_work/EPEXcpp/EPEXcpp/EPEX/src/epex_broker/messages/hub_to_hub_ntf.cpp
	at com.sonar.cpp.analyzer.AnalysisHandler.acceptResult(AnalysisHandler.java:67)
	at com.sonar.cpp.analyzer.Subprocess.execute(Subprocess.java:128)
	at com.sonar.cpp.plugin.CFamilySensor.lambda$process$34(CFamilySensor.java:1328)
	at com.sonar.cpp.analyzer.AnalysisExecutor.lambda$submit$0(AnalysisExecutor.java:58)
	at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
	at java.base/java.util.concurrent.FutureTask.run(Unknown Source)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
	at java.base/java.lang.Thread.run(Unknown Source)

ERROR: Exception in thread pool-4-thread-28
com.sonar.cpp.analyzer.Analyzer$AnalyzerException: Exit code 139: /opt/actions-runner/_work/EPEXcpp/EPEXcpp/EPEX/src/epex_broker/messages/order_execution_report.cpp
	at com.sonar.cpp.analyzer.AnalysisHandler.acceptResult(AnalysisHandler.java:67)
	at com.sonar.cpp.analyzer.Subprocess.execute(Subprocess.java:128)
	at com.sonar.cpp.plugin.CFamilySensor.lambda$process$34(CFamilySensor.java:1328)
	at com.sonar.cpp.analyzer.AnalysisExecutor.lambda$submit$0(AnalysisExecutor.java:58)
	at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
	at java.base/java.util.concurrent.FutureTask.run(Unknown Source)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
	at java.base/java.lang.Thread.run(Unknown Source)

ERROR: Exception in thread pool-4-thread-10
com.sonar.cpp.analyzer.Analyzer$AnalyzerException: Exit code 139: /opt/actions-runner/_work/EPEXcpp/EPEXcpp/EPEX/src/rabbit/trader_init.cpp
	at com.sonar.cpp.analyzer.AnalysisHandler.acceptResult(AnalysisHandler.java:67)
	at com.sonar.cpp.analyzer.Subprocess.execute(Subprocess.java:128)
	at com.sonar.cpp.plugin.CFamilySensor.lambda$process$34(CFamilySensor.java:1328)
	at com.sonar.cpp.analyzer.AnalysisExecutor.lambda$submit$0(AnalysisExecutor.java:58)
	at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
	at java.base/java.util.concurrent.FutureTask.run(Unknown Source)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
	at java.base/java.lang.Thread.run(Unknown Source)

ERROR: Exception in thread pool-4-thread-17
com.sonar.cpp.analyzer.Analyzer$AnalyzerException: Exit code 139: /opt/actions-runner/_work/EPEXcpp/EPEXcpp/EPEX/src/epex_broker/epex_broker.cpp
	at com.sonar.cpp.analyzer.AnalysisHandler.acceptResult(AnalysisHandler.java:67)
	at com.sonar.cpp.analyzer.Subprocess.execute(Subprocess.java:128)
	at com.sonar.cpp.plugin.CFamilySensor.lambda$process$34(CFamilySensor.java:1328)
	at com.sonar.cpp.analyzer.AnalysisExecutor.lambda$submit$0(AnalysisExecutor.java:58)
	at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
	at java.base/java.util.concurrent.FutureTask.run(Unknown Source)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
	at java.base/java.lang.Thread.run(Unknown Source)

ERROR: Exception in thread pool-4-thread-23
com.sonar.cpp.analyzer.Analyzer$AnalyzerException: Exit code 139: /opt/actions-runner/_work/EPEXcpp/EPEXcpp/EPEX/src/epex_broker/messages/hub_to_hub_response.cpp
	at com.sonar.cpp.analyzer.AnalysisHandler.acceptResult(AnalysisHandler.java:67)
	at com.sonar.cpp.analyzer.Subprocess.execute(Subprocess.java:128)
	at com.sonar.cpp.plugin.CFamilySensor.lambda$process$34(CFamilySensor.java:1328)
	at com.sonar.cpp.analyzer.AnalysisExecutor.lambda$submit$0(AnalysisExecutor.java:58)
	at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
	at java.base/java.util.concurrent.FutureTask.run(Unknown Source)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
	at java.base/java.lang.Thread.run(Unknown Source)

ERROR: Exception in thread pool-4-thread-18
com.sonar.cpp.analyzer.Analyzer$AnalyzerException: Exit code 139: /opt/actions-runner/_work/EPEXcpp/EPEXcpp/EPEX/src/epex_broker/messages/broadcast.cpp
	at com.sonar.cpp.analyzer.AnalysisHandler.acceptResult(AnalysisHandler.java:67)
	at com.sonar.cpp.analyzer.Subprocess.execute(Subprocess.java:128)
	at com.sonar.cpp.plugin.CFamilySensor.lambda$process$34(CFamilySensor.java:1328)
	at com.sonar.cpp.analyzer.AnalysisExecutor.lambda$submit$0(AnalysisExecutor.java:58)
	at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
	at java.base/java.util.concurrent.FutureTask.run(Unknown Source)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
	at java.base/java.lang.Thread.run(Unknown Source)

ERROR: Exception in thread pool-4-thread-5
com.sonar.cpp.analyzer.Analyzer$AnalyzerException: Exit code 139: /opt/actions-runner/_work/EPEXcpp/EPEXcpp/datasets/src/dataset_types.cpp
	at com.sonar.cpp.analyzer.AnalysisHandler.acceptResult(AnalysisHandler.java:67)
	at com.sonar.cpp.analyzer.Subprocess.execute(Subprocess.java:128)
	at com.sonar.cpp.plugin.CFamilySensor.lambda$process$34(CFamilySensor.java:1328)
	at com.sonar.cpp.analyzer.AnalysisExecutor.lambda$submit$0(AnalysisExecutor.java:58)
	at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
	at java.base/java.util.concurrent.FutureTask.run(Unknown Source)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
	at java.base/java.lang.Thread.run(Unknown Source)

ERROR: Exception in thread pool-4-thread-21
com.sonar.cpp.analyzer.Analyzer$AnalyzerException: Exit code 139: /opt/actions-runner/_work/EPEXcpp/EPEXcpp/EPEX/src/epex_broker/messages/error_response.cpp
	at com.sonar.cpp.analyzer.Subprocess.lambda$execute$1(Subprocess.java:43)
	at com.sonar.cpp.analyzer.Subprocess.execute(Subprocess.java:128)
	at com.sonar.cpp.analyzer.Subprocess.execute(Subprocess.java:39)
	at com.sonar.cpp.analyzer.ReproducerRequester.requestReproducer(ReproducerRequester.java:37)
	at com.sonar.cpp.analyzer.AnalysisHandler.acceptResult(AnalysisHandler.java:66)
	at com.sonar.cpp.analyzer.Subprocess.execute(Subprocess.java:128)
	at com.sonar.cpp.plugin.CFamilySensor.lambda$process$34(CFamilySensor.java:1328)
	at com.sonar.cpp.analyzer.AnalysisExecutor.lambda$submit$0(AnalysisExecutor.java:58)
	at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
	at java.base/java.util.concurrent.FutureTask.run(Unknown Source)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
	at java.base/java.lang.Thread.run(Unknown Source)

ERROR: Exception in thread pool-4-thread-9
com.sonar.cpp.analyzer.Analyzer$AnalyzerException: Exit code 139: /opt/actions-runner/_work/EPEXcpp/EPEXcpp/EPEX/benchmarks/model_benchmarks.cpp
	at com.sonar.cpp.analyzer.AnalysisHandler.acceptResult(AnalysisHandler.java:67)
	at com.sonar.cpp.analyzer.Subprocess.execute(Subprocess.java:128)
	at com.sonar.cpp.plugin.CFamilySensor.lambda$process$34(CFamilySensor.java:1328)
	at com.sonar.cpp.analyzer.AnalysisExecutor.lambda$submit$0(AnalysisExecutor.java:58)
	at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
	at java.base/java.util.concurrent.FutureTask.run(Unknown Source)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
	at java.base/java.lang.Thread.run(Unknown Source)

ERROR: Exception in thread pool-4-thread-8
com.sonar.cpp.analyzer.Analyzer$AnalyzerException: Exit code 139: /opt/actions-runner/_work/EPEXcpp/EPEXcpp/trader/src/generate_neighbour_data.cpp
	at com.sonar.cpp.analyzer.AnalysisHandler.acceptResult(AnalysisHandler.java:67)
	at com.sonar.cpp.analyzer.Subprocess.execute(Subprocess.java:128)
	at com.sonar.cpp.plugin.CFamilySensor.lambda$process$34(CFamilySensor.java:1328)
	at com.sonar.cpp.analyzer.AnalysisExecutor.lambda$submit$0(AnalysisExecutor.java:58)
	at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
	at java.base/java.util.concurrent.FutureTask.run(Unknown Source)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
	at java.base/java.lang.Thread.run(Unknown Source)

ERROR: Exception in thread pool-4-thread-27
com.sonar.cpp.analyzer.Analyzer$AnalyzerException: Exit code 139: /opt/actions-runner/_work/EPEXcpp/EPEXcpp/EPEX/src/epex_broker/messages/message.cpp
	at com.sonar.cpp.analyzer.AnalysisHandler.acceptResult(AnalysisHandler.java:67)
	at com.sonar.cpp.analyzer.Subprocess.execute(Subprocess.java:128)
	at com.sonar.cpp.plugin.CFamilySensor.lambda$process$34(CFamilySensor.java:1328)
	at com.sonar.cpp.analyzer.AnalysisExecutor.lambda$submit$0(AnalysisExecutor.java:58)
	at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
	at java.base/java.util.concurrent.FutureTask.run(Unknown Source)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
	at java.base/java.lang.Thread.run(Unknown Source)

ERROR: Exception in thread pool-4-thread-19
com.sonar.cpp.analyzer.Analyzer$AnalyzerException: Exit code 139: /opt/actions-runner/_work/EPEXcpp/EPEXcpp/EPEX/src/epex_broker/messages/response.cpp
	at com.sonar.cpp.analyzer.AnalysisHandler.acceptResult(AnalysisHandler.java:67)
	at com.sonar.cpp.analyzer.Subprocess.execute(Subprocess.java:128)
	at com.sonar.cpp.plugin.CFamilySensor.lambda$process$34(CFamilySensor.java:1328)
	at com.sonar.cpp.analyzer.AnalysisExecutor.lambda$submit$0(AnalysisExecutor.java:58)
	at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
	at java.base/java.util.concurrent.FutureTask.run(Unknown Source)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
	at java.base/java.lang.Thread.run(Unknown Source)

ERROR: 
An error occurred while analyzing the following compilation unit: 
  /opt/actions-runner/_work/EPEXcpp/EPEXcpp/EPEX/src/epex_broker/messages/error_response.cpp
A file named "sonar-cfamily-reproducer.zip" has been generated to help the problem investigation.
Please contact SonarSource support providing the following file to help improving the analyzer:
  /opt/actions-runner/_work/EPEXcpp/EPEXcpp/sonar-cfamily-reproducer.zip

INFO: ------------------------------------------------------------------------
INFO: EXECUTION FAILURE
INFO: ------------------------------------------------------------------------
INFO: Total time: 3:17.586s
ERROR: Error during SonarScanner execution
INFO: Final Memory: 68M/336M
INFO: ------------------------------------------------------------------------
java.lang.IllegalStateException: 
An error occurred while analyzing the following compilation unit: 
  /opt/actions-runner/_work/EPEXcpp/EPEXcpp/EPEX/src/epex_broker/messages/error_response.cpp
A file named "sonar-cfamily-reproducer.zip" has been generated to help the problem investigation.
Please contact SonarSource support providing the following file to help improving the analyzer:
  /opt/actions-runner/_work/EPEXcpp/EPEXcpp/sonar-cfamily-reproducer.zip

	at com.sonar.cpp.plugin.CFamilySensor.process(CFamilySensor.java:502)
	at com.sonar.cpp.plugin.CFamilySensor.execute(CFamilySensor.java:240)
	at org.sonar.scanner.sensor.AbstractSensorWrapper.analyse(AbstractSensorWrapper.java:62)
	at org.sonar.scanner.sensor.ModuleSensorsExecutor.execute(ModuleSensorsExecutor.java:75)
	at org.sonar.scanner.sensor.ModuleSensorsExecutor.execute(ModuleSensorsExecutor.java:51)
	at org.sonar.scanner.scan.ModuleScanContainer.doAfterStart(ModuleScanContainer.java:64)
	at org.sonar.core.platform.ComponentContainer.startComponents(ComponentContainer.java:123)
	at org.sonar.core.platform.ComponentContainer.execute(ComponentContainer.java:109)
	at org.sonar.scanner.scan.ProjectScanContainer.scan(ProjectScanContainer.java:468)
	at org.sonar.scanner.scan.ProjectScanContainer.scanRecursively(ProjectScanContainer.java:464)
	at org.sonar.scanner.scan.ProjectScanContainer.doAfterStart(ProjectScanContainer.java:420)
	at org.sonar.core.platform.ComponentContainer.startComponents(ComponentContainer.java:123)
	at org.sonar.core.platform.ComponentContainer.execute(ComponentContainer.java:109)
	at org.sonar.scanner.bootstrap.GlobalContainer.doAfterStart(GlobalContainer.java:130)
	at org.sonar.core.platform.ComponentContainer.startComponents(ComponentContainer.java:123)
	at org.sonar.core.platform.ComponentContainer.execute(ComponentContainer.java:109)
	at org.sonar.batch.bootstrapper.Batch.doExecute(Batch.java:57)
	at org.sonar.batch.bootstrapper.Batch.execute(Batch.java:51)
	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(Unknown Source)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.base/java.lang.reflect.Method.invoke(Unknown Source)
	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:126)
	at org.sonarsource.scanner.cli.Main.execute(Main.java:81)
	at org.sonarsource.scanner.cli.Main.main(Main.java:62)
ERROR: 
ERROR: Re-run SonarScanner using the -X switch to enable full debug logging.

Is there a way to make sonarcloud use the clang-15 frontend?

See Clang 16.0.4 compiler error: "clang frontend command failed with exit code 139" · Issue #62518 · llvm/llvm-project · GitHub for the llvm issue

Hi @Anders_Wind and thanks for your question,

Unfortunately no, there is no way to use a different version of the analyzer in SonarCloud. The only way to have control over the version of the analyzer is to use a specific SonarQube version (and then you can only use the analyzer bundled in that version). Note that each analyzer version is linked to a fixed version of clang and there is no way to change that.

Also, to share a bit more information, The analyzer version used on SonarCloud at the moment (6.44.0.61773) depends on llvmorg-16.0.0. I haven’t looked very deeply into the crash you are having, but I tried the C-Reduce example from your previous issue, and it doesn’t seem to crash on 16.0.0. Maybe it is something different, could you share the generated "sonar-cfamily-reproducer.zip" file so that we can have a further look? I can send you a message if you prefer to share it privately.

Thanks!

I am quite sure its a another issue. The stacktrace is slightly different in the new 16.0.4 build. My guess is that c-reduce does not output code for each type of error but I might be wrong.
But yes please do send a private message and Ill have a reproducer zip ready. Thanks

Hi @Anders_Wind and thanks for sharing the reproducer. I have created a ticket CPP-4402 to track this issue.

Thanks, that means a lot!

1 Like

So it seems that clang-17 contains a fix in their frontend: Clang 16.0.4 compiler error: "clang frontend command failed with exit code 139" · Issue #62518 · llvm/llvm-project · GitHub