[Bug]: OOM Exception due to infinite loop in FileMatcher
- Dominant language
- C#
- Stars
- 5.5k
- Forks
- 1.5k
- Avg merge
- 1d 8h
- Merged PRs (30d)
- 141
Description
### Issue Description
Got consistent OOM exceptions while building aspnet locally. Weird thing is that the MSBUILD.exe **32bits** was the process hanging.
```
MSBUILD : error : System.AggregateException: One or more errors occurred. ---> System.OutOfMemoryException: Exception of type 'System.OutOfMemor
yException' was thrown. [D:\.nuget\packages\microsoft.dotnet.arcade.sdk\9.0.0-beta.24266.1\tools\Build.proj]
MSBUILD : error : at System.String.CtorCharCount(Char c, Int32 count) [D:\.nuget\packages\microsoft.dotnet.arcade.sdk\9.0.0-beta.24266.1\tools\Bu
ild.proj]
MSBUILD : error : at Microsoft.IO.StringExtensions.Create[TState](Int32 length, TState state, SpanAction`2 action) [D:\.nuget\packages\microsoft.
dotnet.arcade.sdk\9.0.0-beta.24266.1\tools\Build.proj]
MSBUILD : error : at Microsoft.IO.Path.JoinInternal(ReadOnlySpan`1 first, ReadOnlySpan`1 second) [D:\.nuget\packages\microsoft.dotnet.arcade.sdk\
9.0.0-beta.24266.1\tools\Build.proj]
MSBUILD : error : at Microsoft.IO.Path.Join(ReadOnlySpan`1 path1, ReadOnlySpan`1 path2) [D:\.nuget\packages\microsoft.dotnet.arcade.sdk\9.0.0-bet
a.24266.1\tools\Build.proj]
MSBUILD : error : at Microsoft.IO.Path.Join(ReadOnlySpan`1 path1, ReadOnlySpan`1 path2, ReadOnlySpan`1 path3) [D:\.nuget\packages\microsoft.dotne
t.arcade.sdk\9.0.0-beta.24266.1\tools\Build.proj]
MSBUILD : error : at Microsoft.IO.Enumeration.FileSystemEntry.ToSpecifiedFullPath() [D:\.nuget\packages\microsoft.dotnet.arcade.sdk\9.0.0-beta.24
266.1\tools\Build.proj]
MSBUILD : error : at Microsoft.IO.Enumeration.FileSystemEnumerableFactory.<>c.b__3_0(FileSystemEntry& entry) [D:\.nuget\packages\micro
soft.dotnet.arcade.sdk\9.0.0-beta.24266.1\tools\Build.proj]
MSBUILD : error : at Microsoft.IO.Enumeration.FileSystemEnumerable`1.DelegateEnumerator.TransformEntry(FileSystemEntry& entry) [D:\.nuget\package
s\microsoft.dotnet.arcade.sdk\9.0.0-beta.24266.1\tools\Build.proj]
MSBUILD : error : at Microsoft.IO.Enumeration.FileSystemEnumerator`1.MoveNext() [D:\.nuget\packages\microsoft.dotnet.arcade.sdk\9.0.0-beta.24266.
1\tools\Build.proj]
MSBUILD : error : at Microsoft.Build.Shared.FileMatcher.d__35.MoveNext() [D:\.nuget\packages\microsoft.dotnet.arcade.sdk\9
.0.0-beta.24266.1\tools\Build.proj]
MSBUILD : error : at System.Collections.Generic.List`1..ctor(IEnumerable`1 collection) [D:\.nuget\packages\microsoft.dotnet.arcade.sdk\9.0.0-beta
.24266.1\tools\Build.proj]
MSBUILD : error : at System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source) [D:\.nuget\packages\microsoft.dotnet.arcade.sdk\9.0.0-beta.2426
6.1\tools\Build.proj]
MSBUILD : error : at Microsoft.Build.Shared.FileMatcher.GetAccessibleFiles(IFileSystem fileSystem, String path, String filespec, String projectDi
rectory, Boolean stripProjectDirectory) [D:\.nuget\packages\microsoft.dotnet.arcade.sdk\9.0.0-beta.24266.1\tools\Build.proj]
MSBUILD : error : at Microsoft.Build.Shared.FileMatcher.GetAccessibleFileSystemEntries(IFileSystem fileSystem, FileSystemEntity entityType, Strin
g path, String pattern, String projectDirectory, Boolean stripProjectDirectory) [D:\.nuget\packages\microsoft.dotnet.arcade.sdk\9.0.0-beta.24266.1\t
ools\Build.proj]
MSBUILD : error : at Microsoft.Build.Shared.FileMatcher.<>c__DisplayClass18_0.<.ctor>b__0(FileSystemEntity entityType, String path, String patter
n, String projectDirectory, Boolean stripProjectDirectory) [D:\.nuget\packages\microsoft.dotnet.arcade.sdk\9.0.0-beta.24266.1\tools\Build.proj]
MSBUILD : error : at Microsoft.Build.Shared.FileMatcher.<>c__DisplayClass19_1.<.ctor>b__1(String s) [D:\.nuget\packages\microsoft.dotnet.arcade.s
dk\9.0.0-beta.24266.1\tools\Build.proj]
MSBUILD : error : at System.Collections.Concurrent.ConcurrentDictionary`2.GetOrAdd(TKey key, Func`2 valueFactory) [D:\.nuget\packages\microsoft.d
otnet.arcade.sdk\9.0.0-beta.24266.1\tools\Build.proj]
MSBUILD : error : at Microsoft.Build.Shared.FileMatcher.<>c__DisplayClass19_0.<.ctor>b__0(FileSystemEntity type, String path, String pattern, Str
ing directory, Boolean stripProjectDirectory) [D:\.nuget\packages\microsoft.dotnet.arcade.sdk\9.0.0-beta.24266.1\tools\Build.proj]
MSBUILD : error : at Microsoft.Build.Shared.FileMatcher.GetFilesForStep(RecursiveStepResult stepResult, RecursionState recursionState, String pro
jectDirectory, Boolean stripProjectDirectory) [D:\.nuget\packages\microsoft.dotnet.arcade.sdk\9.0.0-beta.24266.1\tools\Build.proj]
MSBUILD : error : at Microsoft.Build.Shared.FileMatcher.GetFilesRecursive(ConcurrentStack`1 listOfFiles, RecursionState recursionState, String pr
ojectDirectory, Boolean stripProjectDirectory, IList`1 searchesToExclude, Dictionary`2 searchesToExcludeInSubdirs, TaskOptions taskOptions) [D:\.nug
et\packages\microsoft.dotnet.arcade.sdk\9.0.0-beta.24266.1\tools\Build.proj]
MSBUILD : error : at Microsoft.Build.Shared.FileMatcher.<>c__DisplayClass41_0.b__0(String subdir) [D:\.nuget\packages\microsof
t.dotnet.arcade.sdk\9.0.0-beta.24266.1\tools\Build.proj]
MSBUILD : error : at Microsoft.Build.Shared.FileMatcher.GetFilesRecursive(ConcurrentStack`1 listOfFiles, RecursionState recursionState, String pr
ojectDirectory, Boolean stripProjectDirectory, IList`1 searchesToExclude, Dictionary`2 searchesToExcludeInSubdirs, TaskOptions taskOptions) [D:\.nug
et\packages\microsoft.dotnet.arcade.sdk\9.0.0-beta.24266.1\tools\Build.proj]
MSBUILD : error : at Microsoft.Build.Shared.FileMatcher.<>c__DisplayClass41_0.b__0(String subdir) [D:\.nuget\packages\microsof
t.dotnet.arcade.sdk\9.0.0-beta.24266.1\tools\Build.proj]
MSBUILD : error : at Microsoft.Build.Shared.FileMatcher.GetFilesRecursive(ConcurrentStack`1 listOfFiles, RecursionState recursionState, String pr
ojectDirectory, Boolean stripProjectDirectory, IList`1 searchesToExclude, Dictionary`2 searchesToExcludeInSubdirs, TaskOptions taskOptions) [D:\.nug
et\packages\microsoft.dotnet.arcade.sdk\9.0.0-beta.24266.1\tools\Build.proj]
MSBUILD : error : at Microsoft.Build.Shared.FileMatcher.<>c__DisplayClass41_0.b__0(String subdir) [D:\.nuget\packages\microsof
t.dotnet.arcade.sdk\9.0.0-beta.24266.1\tools\Build.proj]
MSBUILD : error : at Microsoft.Build.Shared.FileMatcher.GetFilesRecursive(ConcurrentStack`1 listOfFiles, RecursionState recursionState, String pr
o
```
... more calls to `GetFilesRecursive`
### Steps to Reproduce
I can't anymore, I cleaned my repos (`git clean -xdff`) and then the issue went away, so definitely due to some specific pattern in my folder structure.
### Expected Behavior
No exception
### Actual Behavior
Exception
### Analysis
Maybe knowing that there can be a recursivity issue will let you see it without repro. Sorry I don't have one to share.
### Versions & Configurations
_No response_
Contributor guide
No contributing guide indexed for this repository
Assessment
This issue has not been assessed yet.