dotnet / dotnet/msbuild

[Bug]: OOM Exception due to infinite loop in FileMatcher

Open
#10,187 2 comments 0 reactions 0 assignees View on GitHub
bug Priority:2 symlink triaged
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.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.