Steps to Reproduce
- Set an environment variable prefixed with “UnrealBuildTool_”
- Run multiple UBT processes at the same time
- Observe a failure to read/write the “UnrealBuildTool.Env.BuildConfiguration.xml” file:
Unable to rename C:\WINDOWS\system32\config\systemprofile\AppData\Local\UnrealEngine\Intermediate\Build\UnrealBuildTool.Env.BuildConfiguration.xml to C:\WINDOWS\system32\config\systemprofile\AppData\Local\UnrealEngine\Intermediate\Build\UnrealBuildTool.Env.BuildConfiguration.xml.old
System.IO.IOException: The process cannot access the file 'C:\WINDOWS\system32\config\systemprofile\AppData\Local\UnrealEngine\Intermediate\Build\UnrealBuildTool.Env.BuildConfiguration.xml' because it is being used by another process.
at Microsoft.Win32.SafeHandles.SafeFileHandle.CreateFile(String fullPath, FileMode mode, FileAccess access, FileShare share, FileOptions options)
at Microsoft.Win32.SafeHandles.SafeFileHandle.Open(String fullPath, FileMode mode, FileAccess access, FileShare share, FileOptions options, Int64 preallocationSize, Nullable1 unixCreateMode)`
at System.IO.File.OpenHandle(String path, FileMode mode, FileAccess access, FileShare share, FileOptions options, Int64 preallocationSize)
at System.IO.File.WriteToFile(String path, FileMode mode, String contents, Encoding encoding)
at EpicGames.Core.FileReference.WriteAllText(FileReference location, String contents, Encoding encoding) in D:\build\++UE5\Sync\Engine\Source\Programs\Shared\EpicGames.Core\FileReference.cs:line 709
at UnrealBuildTool.Utils.WriteFileIfChanged(FileItem FileItem, String Contents, StringComparison Comparison, ILogger Logger) in D:\build\++UE5\Sync\Engine\Source\Programs\UnrealBuildTool\System\Utils.cs:line 1905
at UnrealBuildTool.Utils.WriteFileIfChanged(FileReference Location, String Contents, StringComparison Comparison, ILogger Logger) in D:\build\++UE5\Sync\Engine\Source\Programs\UnrealBuildTool\System\Utils.cs:line 1705
at UnrealBuildTool.Utils.WriteFileIfChanged(FileReference Location, String Contents, ILogger Logger) in D:\build\++UE5\Sync\Engine\Source\Programs\UnrealBuildTool\System\Utils.cs:line 1693
at UnrealBuildTool.XmlConfig.WriteEnvironmentXml(FileReference location, ILogger logger) in D:\build\++UE5\Sync\Engine\Source\Programs\UnrealBuildTool\System\XmlConfig.cs:line 862
at UnrealBuildTool.XmlConfig.ReadConfigFiles(FileReference overrideCacheFile, DirectoryReference projectRootDirectory, ILogger logger) in D:\build\++UE5\Sync\Engine\Source\Programs\UnrealBuildTool\System\XmlConfig.cs:line 134
at UnrealBuildTool.PlatformExports.Initialize(String[] CommandLineArgs, ILogger Logger) in D:\build\++UE5\Sync\Engine\Source\Programs\UnrealBuildTool\System\PlatformExports.cs:line 155
at AutomationTool.Automation.ProcessAsync(ParsedCommandLine AutomationToolCommandLine, StartupTraceListener StartupListener, HashSet1 ScriptModuleAssemblies) in D:\build++UE5\Sync\Engine\Source\Programs\AutomationTool\AutomationUtils\Automation.cs:line 123`