Skip to content

Commit f60ff7e

Browse files
authored
Prevent potential deadlocks when reading/writing assets (#47864)
* Prevent potential deadlocks when reading/writing assets * Fix * Handle cancellation during reading version bytes * Fix * Make sure to complete the pipe reader/writer even when canceling * Fix * Feedback * Always complete reader, complete writer on error * Fix comment * Reorder conditions in exception handler * Feedback * Only treat OCE triggred by incorrect token as critical error in debug builds * Feedback * Logging
1 parent d77f160 commit f60ff7e

File tree

152 files changed

+1150
-82
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

152 files changed

+1150
-82
lines changed

eng/Versions.props

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -208,6 +208,7 @@
208208
<SystemIOFileSystemVersion>4.3.0</SystemIOFileSystemVersion>
209209
<SystemIOFileSystemPrimitivesVersion>4.3.0</SystemIOFileSystemPrimitivesVersion>
210210
<SystemIOPipesAccessControlVersion>4.5.1</SystemIOPipesAccessControlVersion>
211+
<SystemIOPipelinesVersion>4.7.0</SystemIOPipelinesVersion>
211212
<SystemMemoryVersion>4.5.4</SystemMemoryVersion>
212213
<SystemResourcesExtensionsVersion>4.7.1</SystemResourcesExtensionsVersion>
213214
<SystemRuntimeCompilerServicesUnsafeVersion>4.7.1</SystemRuntimeCompilerServicesUnsafeVersion>

src/Analyzers/CSharp/Tests/AddBraces/AddBracesTests.cs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,17 @@
1212
using Microsoft.CodeAnalysis.Test.Utilities;
1313
using Roslyn.Test.Utilities;
1414
using Xunit;
15+
using Xunit.Abstractions;
1516

1617
namespace Microsoft.CodeAnalysis.Editor.CSharp.UnitTests.AddBraces
1718
{
1819
public partial class AddBracesTests : AbstractCSharpDiagnosticProviderBasedUserDiagnosticTest
1920
{
21+
public AddBracesTests(ITestOutputHelper logger)
22+
: base(logger)
23+
{
24+
}
25+
2026
internal override (DiagnosticAnalyzer, CodeFixProvider) CreateDiagnosticProviderAndFixer(Workspace workspace)
2127
=> (new CSharpAddBracesDiagnosticAnalyzer(), new CSharpAddBracesCodeFixProvider());
2228

src/Analyzers/CSharp/Tests/AddRequiredParentheses/AddRequiredExpressionParenthesesTests.cs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,17 @@
1111
using Microsoft.CodeAnalysis.Editor.UnitTests.CodeActions;
1212
using Microsoft.CodeAnalysis.Test.Utilities;
1313
using Xunit;
14+
using Xunit.Abstractions;
1415

1516
namespace Microsoft.CodeAnalysis.Editor.CSharp.UnitTests.AddRequiredParentheses
1617
{
1718
public partial class AddRequiredExpressionParenthesesTests : AbstractCSharpDiagnosticProviderBasedUserDiagnosticTest
1819
{
20+
public AddRequiredExpressionParenthesesTests(ITestOutputHelper logger)
21+
: base(logger)
22+
{
23+
}
24+
1925
internal override (DiagnosticAnalyzer, CodeFixProvider) CreateDiagnosticProviderAndFixer(Workspace workspace)
2026
=> (new CSharpAddRequiredExpressionParenthesesDiagnosticAnalyzer(), new AddRequiredParenthesesCodeFixProvider());
2127

src/Analyzers/CSharp/Tests/AddRequiredParentheses/AddRequiredPatternParenthesesTests.cs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,17 @@
1111
using Microsoft.CodeAnalysis.Editor.UnitTests.CodeActions;
1212
using Microsoft.CodeAnalysis.Test.Utilities;
1313
using Xunit;
14+
using Xunit.Abstractions;
1415

1516
namespace Microsoft.CodeAnalysis.Editor.CSharp.UnitTests.AddRequiredParentheses
1617
{
1718
public partial class AddRequiredPatternParenthesesTests : AbstractCSharpDiagnosticProviderBasedUserDiagnosticTest
1819
{
20+
public AddRequiredPatternParenthesesTests(ITestOutputHelper logger)
21+
: base(logger)
22+
{
23+
}
24+
1925
internal override (DiagnosticAnalyzer, CodeFixProvider) CreateDiagnosticProviderAndFixer(Workspace workspace)
2026
=> (new CSharpAddRequiredPatternParenthesesDiagnosticAnalyzer(), new AddRequiredParenthesesCodeFixProvider());
2127

src/Analyzers/CSharp/Tests/ConvertAnonymousTypeToTuple/ConvertAnonymousTypeToTupleTests.cs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,17 @@
99
using Microsoft.CodeAnalysis.Editor.CSharp.UnitTests.Diagnostics;
1010
using Microsoft.CodeAnalysis.Test.Utilities;
1111
using Xunit;
12+
using Xunit.Abstractions;
1213

1314
namespace Microsoft.CodeAnalysis.Editor.CSharp.UnitTests.ConvertAnonymousTypeToTuple
1415
{
1516
public partial class ConvertAnonymousTypeToTupleTests : AbstractCSharpDiagnosticProviderBasedUserDiagnosticTest
1617
{
18+
public ConvertAnonymousTypeToTupleTests(ITestOutputHelper logger)
19+
: base(logger)
20+
{
21+
}
22+
1723
internal override (DiagnosticAnalyzer, CodeFixProvider) CreateDiagnosticProviderAndFixer(Workspace workspace)
1824
=> (new CSharpConvertAnonymousTypeToTupleDiagnosticAnalyzer(), new CSharpConvertAnonymousTypeToTupleCodeFixProvider());
1925

src/Analyzers/CSharp/Tests/ConvertTypeOfToNameOf/ConvertTypeOfToNameOfTests.cs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,17 @@
99
using Microsoft.CodeAnalysis.Editor.CSharp.UnitTests.Diagnostics;
1010
using Microsoft.CodeAnalysis.Test.Utilities;
1111
using Xunit;
12+
using Xunit.Abstractions;
1213

1314
namespace Microsoft.CodeAnalysis.Editor.CSharp.UnitTests.ConvertTypeOfToNameOf
1415
{
1516
public partial class ConvertTypeOfToNameOfTests : AbstractCSharpDiagnosticProviderBasedUserDiagnosticTest
1617
{
18+
public ConvertTypeOfToNameOfTests(ITestOutputHelper logger)
19+
: base(logger)
20+
{
21+
}
22+
1723
internal override (DiagnosticAnalyzer, CodeFixProvider) CreateDiagnosticProviderAndFixer(Workspace workspace)
1824
=> (new CSharpConvertTypeOfToNameOfDiagnosticAnalyzer(), new CSharpConvertTypeOfToNameOfCodeFixProvider());
1925

src/Analyzers/CSharp/Tests/InlineDeclaration/CSharpInlineDeclarationTests.cs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,17 @@
1313
using Microsoft.CodeAnalysis.Test.Utilities;
1414
using Roslyn.Test.Utilities;
1515
using Xunit;
16+
using Xunit.Abstractions;
1617

1718
namespace Microsoft.CodeAnalysis.Editor.CSharp.UnitTests.InlineDeclaration
1819
{
1920
public partial class CSharpInlineDeclarationTests : AbstractCSharpDiagnosticProviderBasedUserDiagnosticTest
2021
{
22+
public CSharpInlineDeclarationTests(ITestOutputHelper logger)
23+
: base(logger)
24+
{
25+
}
26+
2127
internal override (DiagnosticAnalyzer, CodeFixProvider) CreateDiagnosticProviderAndFixer(Workspace workspace)
2228
=> (new CSharpInlineDeclarationDiagnosticAnalyzer(), new CSharpInlineDeclarationCodeFixProvider());
2329

src/Analyzers/CSharp/Tests/InvokeDelegateWithConditionalAccess/InvokeDelegateWithConditionalAccessTests.cs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,17 @@
1010
using Microsoft.CodeAnalysis.Test.Utilities;
1111
using Roslyn.Test.Utilities;
1212
using Xunit;
13+
using Xunit.Abstractions;
1314

1415
namespace Microsoft.CodeAnalysis.Editor.CSharp.UnitTests.Diagnostics.InvokeDelegateWithConditionalAccess
1516
{
1617
public partial class InvokeDelegateWithConditionalAccessTests : AbstractCSharpDiagnosticProviderBasedUserDiagnosticTest
1718
{
19+
public InvokeDelegateWithConditionalAccessTests(ITestOutputHelper logger)
20+
: base(logger)
21+
{
22+
}
23+
1824
internal override (DiagnosticAnalyzer, CodeFixProvider) CreateDiagnosticProviderAndFixer(Workspace workspace)
1925
=> (new InvokeDelegateWithConditionalAccessAnalyzer(), new InvokeDelegateWithConditionalAccessCodeFixProvider());
2026

src/Analyzers/CSharp/Tests/MakeFieldReadonly/MakeFieldReadonlyTests.cs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,17 @@
1111
using Microsoft.CodeAnalysis.Test.Utilities;
1212
using Roslyn.Test.Utilities;
1313
using Xunit;
14+
using Xunit.Abstractions;
1415

1516
namespace Microsoft.CodeAnalysis.Editor.CSharp.UnitTests.MakeFieldReadonly
1617
{
1718
public class MakeFieldReadonlyTests : AbstractCSharpDiagnosticProviderBasedUserDiagnosticTest
1819
{
20+
public MakeFieldReadonlyTests(ITestOutputHelper logger)
21+
: base(logger)
22+
{
23+
}
24+
1925
internal override (DiagnosticAnalyzer, CodeFixProvider) CreateDiagnosticProviderAndFixer(Workspace workspace)
2026
=> (new MakeFieldReadonlyDiagnosticAnalyzer(), new CSharpMakeFieldReadonlyCodeFixProvider());
2127

src/Analyzers/CSharp/Tests/MakeLocalFunctionStatic/MakeLocalFunctionStaticTests.cs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,17 @@
1313
using Microsoft.CodeAnalysis.Test.Utilities;
1414
using Roslyn.Test.Utilities;
1515
using Xunit;
16+
using Xunit.Abstractions;
1617

1718
namespace Microsoft.CodeAnalysis.Editor.CSharp.UnitTests.MakeLocalFunctionStatic
1819
{
1920
public partial class MakeLocalFunctionStaticTests : AbstractCSharpDiagnosticProviderBasedUserDiagnosticTest
2021
{
22+
public MakeLocalFunctionStaticTests(ITestOutputHelper logger)
23+
: base(logger)
24+
{
25+
}
26+
2127
internal override (DiagnosticAnalyzer, CodeFixProvider) CreateDiagnosticProviderAndFixer(Workspace workspace)
2228
=> (new MakeLocalFunctionStaticDiagnosticAnalyzer(), GetMakeLocalFunctionStaticCodeFixProvider());
2329

0 commit comments

Comments
 (0)