Regression: Scanner Crash during post-analysis cleanup on Windows Agents (Scanner 5.0.2)

Environment:

  • SonarCloud Extension for Azure DevOps: 3.4.3
  • Scanner: SonarScanner 5.0.2.4997 / MSBuild 10.3
  • Java Version: 21.0.9 (Eclipse Adoptium)
  • Agent OS: Windows Server 2025 (Hosted Agent)

Issue Summary: Our “Run Code Analysis” task completes the analysis and successfully uploads the report to SonarCloud, but then immediately crashes with a Spring container shutdown stack trace. This appears to be a regression of the known “failed to delete temp folder” issue on Windows agents, specifically occurring as a “silent” error before the Spring bean destruction.

Key Evidence from Logs:

  • Successful Upload: The logs confirm: INFO: ANALYSIS SUCCESSFUL. You can find the results at: SonarQube Cloud
  • Shutdown Crash: Immediately after the upload, the scanner triggers a stopComponents call that fails.
  • Silent Failure: There is no explicit AccessDeniedException logged, but the process terminates during the cleanup of the working directory: D:\a\1.sonarqube\out.sonar

Full Stack Trace:

INFO: Successfully sent architecture data
2026-03-03T12:50:34.2323973Z INFO: Sensor cache published successfully
2026-03-03T12:50:34.3748272Z ##[error]ERROR: Failed to delete temp folder
java.nio.file.FileSystemException: D:\a\1\.sonarqube\out\.sonar\.sonartmp\architecture_graphs3134017834827781898.pb: The process cannot access the file because it is being used by another process
	at java.base/sun.nio.fs.WindowsException.translateToIOException(Unknown Source)
	at java.base/sun.nio.fs.WindowsException.rethrowAsIOException(Unknown Source)
	at java.base/sun.nio.fs.WindowsException.rethrowAsIOException(Unknown Source)
	at java.base/sun.nio.fs.WindowsFileSystemProvider.implDelete(Unknown Source)
	at java.base/sun.nio.fs.AbstractFileSystemProvider.deleteIfExists(Unknown Source)
	at java.base/java.nio.file.Files.deleteIfExists(Unknown Source)
	at org.sonar.api.impl.utils.DefaultTempFolder$DeleteRecursivelyFileVisitor.visitFile(DefaultTempFolder.java:106)
	at org.sonar.api.impl.utils.DefaultTempFolder$DeleteRecursivelyFileVisitor.visitFile(DefaultTempFolder.java:101)
	at java.base/java.nio.file.Files.walkFileTree(Unknown Source)
	at java.base/java.nio.file.Files.walkFileTree(Unknown Source)
	at org.sonar.api.impl.utils.DefaultTempFolder.clean(DefaultTempFolder.java:82)
	at org.sonar.api.impl.utils.DefaultTempFolder.stop(DefaultTempFolder.java:97)
	at org.sonar.scanner.spring.StartableBeanPostProcessor.postProcessBeforeDestruction(StartableBeanPostProcessor.java:34)
	at org.springframework.beans.factory.support.DisposableBeanAdapter.destroy(DisposableBeanAdapter.java:200)
	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroyBean(DefaultSingletonBeanRegistry.java:795)
	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroySingleton(DefaultSingletonBeanRegistry.java:745)
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.destroySingleton(DefaultListableBeanFactory.java:1500)
	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroySingletons(DefaultSingletonBeanRegistry.java:704)
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.destroySingletons(DefaultListableBeanFactory.java:1493)
	at org.springframework.context.support.AbstractApplicationContext.destroyBeans(AbstractApplicationContext.java:1246)
	at org.springframework.context.support.AbstractApplicationContext.doClose(AbstractApplicationContext.java:1207)
	at org.springframework.context.support.AbstractApplicationContext.close(AbstractApplicationContext.java:1153)
	at org.sonar.scanner.spring.SpringComponentContainer.stopComponents(SpringComponentContainer.java:216)
	at org.sonar.scanner.spring.SpringComponentContainer.execute(SpringComponentContainer.java:192)
	at org.sonar.scanner.bootstrap.SpringGlobalContainer.doAfterStart(SpringGlobalContainer.java:150)
	at org.sonar.scanner.spring.SpringComponentContainer.startComponents(SpringComponentContainer.java:208)
	at org.sonar.scanner.spring.SpringComponentContainer.execute(SpringComponentContainer.java:187)
	at org.sonar.batch.bootstrapper.Batch.doExecute(Batch.java:58)
	at org.sonar.batch.bootstrapper.Batch.execute(Batch.java:52)
	at org.sonarsource.scanner.api.internal.batch.BatchIsolatedLauncher.execute(BatchIsolatedLauncher.java:46)
	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.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 jdk.proxy1/jdk.proxy1.$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:123)
	at org.sonarsource.scanner.cli.Main.execute(Main.java:78)
	at org.sonarsource.scanner.cli.Main.main(Main.java:59)
2026-03-03T12:50:34.3963512Z ERROR: Failed to delete temp folder
2026-03-03T12:50:34.3965395Z java.nio.file.FileSystemException: D:\a\1\.sonarqube\out\.sonar\.sonartmp\architecture_graphs3134017834827781898.pb: The process cannot access the file because it is being used by another process
2026-03-03T12:50:34.3966753Z 	at java.base/sun.nio.fs.WindowsException.translateToIOException(Unknown Source)
2026-03-03T12:50:34.4345525Z 	at java.base/sun.nio.fs.WindowsException.rethrowAsIOException(Unknown Source)
2026-03-03T12:50:34.4346825Z 	at java.base/sun.nio.fs.WindowsException.rethrowAsIOException(Unknown Source)
2026-03-03T12:50:34.4347690Z 	at java.base/sun.nio.fs.WindowsFileSystemProvider.implDelete(Unknown Source)
2026-03-03T12:50:34.4348298Z 	at java.base/sun.nio.fs.AbstractFileSystemProvider.deleteIfExists(Unknown Source)
2026-03-03T12:50:34.4348857Z 	at java.base/java.nio.file.Files.deleteIfExists(Unknown Source)
2026-03-03T12:50:34.4350045Z 	at org.sonar.api.impl.utils.DefaultTempFolder$DeleteRecursivelyFileVisitor.visitFile(DefaultTempFolder.java:106)
2026-03-03T12:50:34.4350742Z 	at org.sonar.api.impl.utils.DefaultTempFolder$DeleteRecursivelyFileVisitor.visitFile(DefaultTempFolder.java:101)
2026-03-03T12:50:34.4351339Z 	at java.base/java.nio.file.Files.walkFileTree(Unknown Source)
2026-03-03T12:50:34.4351852Z 	at java.base/java.nio.file.Files.walkFileTree(Unknown Source)
2026-03-03T12:50:34.4352420Z 	at org.sonar.api.impl.utils.DefaultTempFolder.clean(DefaultTempFolder.java:82)
2026-03-03T12:50:34.4438777Z 	at org.sonar.api.impl.utils.DefaultTempFolder.stop(DefaultTempFolder.java:97)
2026-03-03T12:50:34.4441340Z 	at org.sonar.scanner.spring.StartableBeanPostProcessor.postProcessBeforeDestruction(StartableBeanPostProcessor.java:34)
2026-03-03T12:50:34.4442148Z 	at org.springframework.beans.factory.support.DisposableBeanAdapter.destroy(DisposableBeanAdapter.java:200)
2026-03-03T12:50:34.4442778Z 	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroyBean(DefaultSingletonBeanRegistry.java:795)
2026-03-03T12:50:34.4444981Z 	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroySingleton(DefaultSingletonBeanRegistry.java:745)
2026-03-03T12:50:34.4445681Z 	at org.springframework.beans.factory.support.DefaultListableBeanFactory.destroySingleton(DefaultListableBeanFactory.java:1500)
2026-03-03T12:50:34.4446350Z 	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroySingletons(DefaultSingletonBeanRegistry.java:704)
2026-03-03T12:50:34.4447035Z 	at org.springframework.beans.factory.support.DefaultListableBeanFactory.destroySingletons(DefaultListableBeanFactory.java:1493)
2026-03-03T12:50:34.4447853Z 	at org.springframework.context.support.AbstractApplicationContext.destroyBeans(AbstractApplicationContext.java:1246)
2026-03-03T12:50:34.4448521Z 	at org.springframework.context.support.AbstractApplicationContext.doClose(AbstractApplicationContext.java:1207)
2026-03-03T12:50:34.4449686Z 	at org.springframework.context.support.AbstractApplicationContext.close(AbstractApplicationContext.java:1153)
2026-03-03T12:50:34.4450326Z 	at org.sonar.scanner.spring.SpringComponentContainer.stopComponents(SpringComponentContainer.java:216)
2026-03-03T12:50:34.4450953Z 	at org.sonar.scanner.spring.SpringComponentContainer.execute(SpringComponentContainer.java:192)
2026-03-03T12:50:34.4451572Z 	at org.sonar.scanner.bootstrap.SpringGlobalContainer.doAfterStart(SpringGlobalContainer.java:150)
2026-03-03T12:50:34.4452198Z 	at org.sonar.scanner.spring.SpringComponentContainer.startComponents(SpringComponentContainer.java:208)
2026-03-03T12:50:34.4452838Z 	at org.sonar.scanner.spring.SpringComponentContainer.execute(SpringComponentContainer.java:187)
2026-03-03T12:50:34.4453415Z 	at org.sonar.batch.bootstrapper.Batch.doExecute(Batch.java:58)
2026-03-03T12:50:34.4454039Z 	at org.sonar.batch.bootstrapper.Batch.execute(Batch.java:52)
2026-03-03T12:50:34.4454647Z 	at org.sonarsource.scanner.api.internal.batch.BatchIsolatedLauncher.execute(BatchIsolatedLauncher.java:46)
2026-03-03T12:50:34.4455239Z 	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(Unknown Source)
2026-03-03T12:50:34.4455747Z 	at java.base/java.lang.reflect.Method.invoke(Unknown Source)
2026-03-03T12:50:34.4456308Z 	at org.sonarsource.scanner.api.internal.IsolatedLauncherProxy.invoke(IsolatedLauncherProxy.java:60)
2026-03-03T12:50:34.4456854Z 	at jdk.proxy1/jdk.proxy1.$Proxy0.execute(Unknown Source)
2026-03-03T12:50:34.4457518Z 	at org.sonarsource.scanner.api.EmbeddedScanner.doExecute(EmbeddedScanner.java:189)
2026-03-03T12:50:34.4458100Z 	at org.sonarsource.scanner.api.EmbeddedScanner.execute(EmbeddedScanner.java:138)
2026-03-03T12:50:34.4458656Z 	at org.sonarsource.scanner.cli.Main.execute(Main.java:123)
2026-03-03T12:50:34.4459173Z 	at org.sonarsource.scanner.cli.Main.execute(Main.java:78)
2026-03-03T12:50:34.4459856Z 	at org.sonarsource.scanner.cli.Main.main(Main.java:59)

Reference to Similar Issues:

Questions for the Team:

  • Is this a known regression in Scanner 5.0.2.4997 when running on Windows Server 2025?
  • Since the analysis is successful, is there a way to suppress this cleanup failure so it doesn’t break our build pipeline?

Regards,
Ganga.

2 Likes

Related: ERROR: Failed to delete temp folder for dependency-files.tar.xz

1 Like