Possible deadlock
See original GitHub issueDescription
While running tests locally in debug mode, I’ve hit what seems to a deadlock due executing too many tasks simultaneously.
I’ve captured a dump of the testhost.exe
process.
I can’t attach the dump here, but if anyone is interested in analyzing the dump, please let me know
Blocked FluentAssertions.Specs.ExecutionTimeAssertionsSpecs.<>c.<When_action_runs_indefinitely_it_should_be_stopped_and_throw_if_there_is_be_close_to_condition>b__27_0 FluentAssertions.Specialized.ExecutionTime.<>c__DisplayClass2_0.<.ctor>b__0
Blocked Xunit.Runner.VisualStudio.VsTestRunner.RunTestsInAssembly Microsoft.VisualStudio.TestPlatform.Utilities.JobQueue.<.ctor>b__12_0
Blocked FluentAssertions.Specs.ExecutionTimeAssertionsSpecs.<>c.<When_action_runs_indefinitely_it_should_be_stopped_and_throw_if_there_is_less_or_equal_condition>b__4_0 FluentAssertions.Specialized.ExecutionTime.<>c__DisplayClass2_0.<.ctor>b__0
Blocked FluentAssertions.Specs.ExecutionTimeAssertionsSpecs.<>c.<When_action_runs_indefinitely_it_should_be_stopped_and_not_throw_if_there_is_greater_than_condition>b__21_0 FluentAssertions.Specialized.ExecutionTime.<>c__DisplayClass2_0.<.ctor>b__0
Blocked Xunit.Sdk.MaxConcurrencySyncContext.WorkerThreadProc Xunit.Sdk.XunitWorkerThread.<>c.<QueueUserWorkItem>b__5_0
Blocked FluentAssertions.Specs.ExecutionTimeAssertionsSpecs.<>c.<When_action_runs_indefinitely_it_should_be_stopped_and_not_throw_if_there_is_greater_or_equal_condition>b__16_0 FluentAssertions.Specialized.ExecutionTime.<>c__DisplayClass2_0.<.ctor>b__0
Blocked Xunit.Sdk.MaxConcurrencySyncContext.WorkerThreadProc Xunit.Sdk.XunitWorkerThread.<>c.<QueueUserWorkItem>b__5_0
Blocked FluentAssertions.Specs.ExecutionTimeAssertionsSpecs.<>c.<When_action_runs_indefinitely_it_should_be_stopped_and_throw_if_there_is_less_than_condition>b__11_0 FluentAssertions.Specialized.ExecutionTime.<>c__DisplayClass2_0.<.ctor>b__0
Blocked Xunit.Sdk.MaxConcurrencySyncContext.WorkerThreadProc Xunit.Sdk.XunitWorkerThread.<>c.<QueueUserWorkItem>b__5_0
Blocked Microsoft.VisualStudio.TestPlatform.CommunicationUtilities.TestRequestHandler.ProcessRequests Microsoft.VisualStudio.TestPlatform.TestHost.DefaultEngineInvoker.<>c__DisplayClass19_0.<StartProcessingAsync>b__0
Awaiting Xunit.Sdk.TestCollectionRunner<TTestCase>.RunAsync() Xunit.Sdk.TestCollectionRunner<TTestCase>.RunAsync()
Awaiting Xunit.Sdk.TestMethodRunner<TTestCase>.RunTestCasesAsync() Xunit.Sdk.TestMethodRunner<TTestCase>.RunTestCasesAsync()
Awaiting Xunit.Sdk.TestMethodRunner<TTestCase>.RunAsync() Xunit.Sdk.TestMethodRunner<TTestCase>.RunAsync()
Awaiting Xunit.Sdk.UISynchronizationContext.PumpMessages.AnonymousMethod__15_0(_) Xunit.Sdk.UISynchronizationContext.PumpMessages.AnonymousMethod__15_0(_)
Awaiting System.Threading.Tasks.UnwrapPromise<TResult>.Invoke(completingTask) System.Threading.Tasks.UnwrapPromise<TResult>.Invoke(completingTask)
Awaiting Xunit.Sdk.TestCollectionRunner<TTestCase>.RunAsync() Xunit.Sdk.TestCollectionRunner<TTestCase>.RunAsync()
Awaiting System.Threading.Tasks.UnwrapPromise<TResult>.Invoke(completingTask) System.Threading.Tasks.UnwrapPromise<TResult>.Invoke(completingTask)
Awaiting Xunit.Sdk.TestClassRunner<TTestCase>.RunAsync() Xunit.Sdk.TestClassRunner<TTestCase>.RunAsync()
Awaiting Xunit.Sdk.TestClassRunner<TTestCase>.RunAsync() Xunit.Sdk.TestClassRunner<TTestCase>.RunAsync()
Awaiting Xunit.Sdk.TestCollectionRunner<TTestCase>.RunTestClassesAsync() Xunit.Sdk.TestCollectionRunner<TTestCase>.RunTestClassesAsync()
Awaiting System.Threading.Tasks.UnwrapPromise<TResult>.Invoke(completingTask) System.Threading.Tasks.UnwrapPromise<TResult>.Invoke(completingTask)
Awaiting Xunit.Sdk.TestCollectionRunner<TTestCase>.RunAsync() Xunit.Sdk.TestCollectionRunner<TTestCase>.RunAsync()
Awaiting Xunit.Sdk.TestCollectionRunner<TTestCase>.RunTestClassesAsync() Xunit.Sdk.TestCollectionRunner<TTestCase>.RunTestClassesAsync()
Awaiting Xunit.Sdk.XunitTestFrameworkExecutor.RunTestCases(testCases, executionMessageSink, executionOptions) Xunit.Sdk.XunitTestFrameworkExecutor.RunTestCases(testCases, executionMessageSink, executionOptions)
Awaiting System.Threading.Tasks.UnwrapPromise<TResult>.Invoke(completingTask) System.Threading.Tasks.UnwrapPromise<TResult>.Invoke(completingTask)
Awaiting System.Threading.Tasks.UnwrapPromise<TResult>.Invoke(completingTask) System.Threading.Tasks.UnwrapPromise<TResult>.Invoke(completingTask)
Awaiting Xunit.Sdk.TestAssemblyRunner<TTestCase>.RunAsync() Xunit.Sdk.TestAssemblyRunner<TTestCase>.RunAsync()
Awaiting Xunit.Sdk.XunitTestAssemblyRunner.RunTestCollectionsAsync(messageBus, cancellationTokenSource) Xunit.Sdk.XunitTestAssemblyRunner.RunTestCollectionsAsync(messageBus, cancellationTokenSource)
Awaiting System.Threading.Tasks.UnwrapPromise<TResult>.Invoke(completingTask) System.Threading.Tasks.UnwrapPromise<TResult>.Invoke(completingTask)
Awaiting System.Threading.Tasks.UnwrapPromise<TResult>.Invoke(completingTask) System.Threading.Tasks.UnwrapPromise<TResult>.Invoke(completingTask)
Awaiting System.Threading.Tasks.UnwrapPromise<TResult>.Invoke(completingTask) System.Threading.Tasks.UnwrapPromise<TResult>.Invoke(completingTask)
Awaiting System.Threading.Tasks.UnwrapPromise<TResult>.Invoke(completingTask) System.Threading.Tasks.UnwrapPromise<TResult>.Invoke(completingTask)
Awaiting System.Threading.Tasks.UnwrapPromise<TResult>.Invoke(completingTask) System.Threading.Tasks.UnwrapPromise<TResult>.Invoke(completingTask)
Awaiting Xunit.Sdk.TestClassRunner<TTestCase>.RunAsync() Xunit.Sdk.TestClassRunner<TTestCase>.RunAsync()
Awaiting System.Threading.Tasks.UnwrapPromise<TResult>.Invoke(completingTask) System.Threading.Tasks.UnwrapPromise<TResult>.Invoke(completingTask)
Awaiting Xunit.Sdk.TestCollectionRunner<TTestCase>.RunTestClassesAsync() Xunit.Sdk.TestCollectionRunner<TTestCase>.RunTestClassesAsync()
Awaiting Xunit.Sdk.TestClassRunner<TTestCase>.RunTestMethodsAsync() Xunit.Sdk.TestClassRunner<TTestCase>.RunTestMethodsAsync()
Active Xunit.Sdk.XunitTestAssemblyRunner.RunTestCollectionAsync Xunit.Sdk.XunitTestAssemblyRunner.<>c__DisplayClass14_2.<RunTestCollectionsAsync>b__2
Active Xunit.Sdk.XunitTestAssemblyRunner.RunTestCollectionAsync Xunit.Sdk.XunitTestAssemblyRunner.<>c__DisplayClass14_2.<RunTestCollectionsAsync>b__2
Active Xunit.Sdk.XunitTestAssemblyRunner.RunTestCollectionAsync Xunit.Sdk.XunitTestAssemblyRunner.<>c__DisplayClass14_2.<RunTestCollectionsAsync>b__2
Active Xunit.Sdk.XunitTestClassRunner.RunTestMethodAsync(testMethod, method, testCases, constructorArguments) System.Runtime.CompilerServices.AsyncTaskMethodBuilder+AsyncStateMachineBox<Xunit.Sdk.RunSummary, Xunit.Sdk.TestClassRunner+<RunTestMethodsAsync>d__38<Xunit.Sdk.IXunitTestCase>>
Active Xunit.Sdk.XunitTestAssemblyRunner.RunTestCollectionAsync Xunit.Sdk.XunitTestAssemblyRunner.<>c__DisplayClass14_2.<RunTestCollectionsAsync>b__2
Active Xunit.Sdk.XunitTestAssemblyRunner.RunTestCollectionAsync Xunit.Sdk.XunitTestAssemblyRunner.<>c__DisplayClass14_2.<RunTestCollectionsAsync>b__2
Active Xunit.Sdk.XunitTestClassRunner.RunTestMethodAsync(testMethod, method, testCases, constructorArguments) System.Runtime.CompilerServices.AsyncTaskMethodBuilder+AsyncStateMachineBox<Xunit.Sdk.RunSummary, Xunit.Sdk.TestClassRunner+<RunTestMethodsAsync>d__38<Xunit.Sdk.IXunitTestCase>>
Active Xunit.Sdk.UITestCase.RunAsync(diagnosticMessageSink, messageBus, constructorArguments, aggregator, cancellationTokenSource) System.Runtime.CompilerServices.AsyncTaskMethodBuilder+AsyncStateMachineBox<Xunit.Sdk.RunSummary, Xunit.Sdk.UITestCase+<RunAsync>d__8>
Active Xunit.Sdk.MaxConcurrencySyncContext.RunOnSyncContext Xunit.Sdk.XunitWorkerThread.<>c.<QueueUserWorkItem>b__5_0
Active Xunit.Sdk.XunitTestAssemblyRunner.RunTestCollectionAsync Xunit.Sdk.XunitTestAssemblyRunner.<>c__DisplayClass14_2.<RunTestCollectionsAsync>b__2
Active Xunit.Sdk.MaxConcurrencySyncContext.RunOnSyncContext Xunit.Sdk.XunitWorkerThread.<>c.<QueueUserWorkItem>b__5_0
Active Xunit.Sdk.MaxConcurrencySyncContext.RunOnSyncContext Xunit.Sdk.XunitWorkerThread.<>c.<QueueUserWorkItem>b__5_0
Active Xunit.Sdk.MaxConcurrencySyncContext.RunOnSyncContext Xunit.Sdk.XunitWorkerThread.<>c.<QueueUserWorkItem>b__5_0
Active Xunit.Sdk.TestMethodRunner.<RunTestCasesAsync>d__32.MoveNext Xunit.Sdk.XunitWorkerThread.<>c.<QueueUserWorkItem>b__5_0
Active Xunit.Sdk.XunitTestAssemblyRunner.RunTestCollectionAsync Xunit.Sdk.XunitTestAssemblyRunner.<>c__DisplayClass14_2.<RunTestCollectionsAsync>b__2
Active Xunit.Sdk.MaxConcurrencySyncContext.RunOnSyncContext Xunit.Sdk.XunitWorkerThread.<>c.<QueueUserWorkItem>b__5_0
Active Xunit.Sdk.MaxConcurrencySyncContext.RunOnSyncContext Xunit.Sdk.XunitWorkerThread.<>c.<QueueUserWorkItem>b__5_0
Active Newtonsoft.Json.JsonWriter.WriteValue Xunit.Sdk.XunitWorkerThread.<>c.<QueueUserWorkItem>b__5_0
Active Xunit.Sdk.TestInvoker.<InvokeTestMethodAsync>d__48.MoveNext Xunit.Sdk.XunitWorkerThread.<>c.<QueueUserWorkItem>b__5_0
Active System.Net.Sockets.SocketPal.Poll Microsoft.VisualStudio.TestPlatform.CommunicationUtilities.SocketClient.<OnServerConnected>b__16_0
Active Xunit.Sdk.MaxConcurrencySyncContext.RunOnSyncContext Xunit.Sdk.XunitWorkerThread.<>c.<QueueUserWorkItem>b__5_0
Scheduled [Scheduled and waiting to run] System.Threading.Tasks.Task<System.Decimal>
Scheduled [Scheduled and waiting to run] System.Threading.Tasks.Task<System.Boolean>
Scheduled [Scheduled and waiting to run] System.Threading.Tasks.Task<System.Boolean>
Scheduled [Scheduled and waiting to run] System.Threading.Tasks.Task<System.Boolean>
Scheduled [Scheduled and waiting to run] System.Threading.Tasks.Task<System.Boolean>
Scheduled [Scheduled and waiting to run] System.Threading.Tasks.Task<System.Threading.SynchronizationContext>
Scheduled [Scheduled and waiting to run] System.Threading.Tasks.Task<System.Decimal>
Scheduled [Scheduled and waiting to run] System.Threading.Tasks.Task<System.Object>
Scheduled [Scheduled and waiting to run] System.Threading.Tasks.Task<System.Object>
I’m suspecting this might be related https://github.com/fluentassertions/fluentassertions/pull/1324
but the problem might rather be that Execution
wraps the Subject
inside a Task.Run
for being able to “cancel” the infinite actions.
Issue Analytics
- State:
- Created 3 years ago
- Comments:5 (5 by maintainers)
Top Results From Across the Web
Deadlock Detection - Windows drivers
A deadlock is caused when two or more threads come into conflict over some resource, in such a way that no execution is...
Read more >Windows ERROR -- Possible Deadlock Condition
The server is my file server, other than that there is Symantec AV running on it and Netbackup 6 client. I don't see...
Read more >Deadlock: What It Is, How to Detect, Handle and Prevent?
A deadlock can occur in almost any situation where processes share resources. It can happen in any computing environment, but it is ...
Read more >c# - Execution stops in possible deadlock
First step is to try and run the code synchronously without any tasks involved at all. Second step is to check if you...
Read more >ESXi host may crash with a PSOD - Spin count exceeded
ESXi host may crash with a PSOD - Spin count exceeded - possible deadlock with PCPU; vSphere Replication is used to replicate the...
Read more >Top Related Medium Post
No results found
Top Related StackOverflow Question
No results found
Troubleshoot Live Code
Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start FreeTop Related Reddit Thread
No results found
Top Related Hackernoon Post
No results found
Top Related Tweet
No results found
Top Related Dev.to Post
No results found
Top Related Hashnode Post
No results found
Top GitHub Comments
I was fighting for 1324, so I feel responsible (a bit). I would like to analyze in detail.
Thanks for the explanation 👍 With fingers crossed, I’ll close this issue.