question-mark
Stuck on an issue?

Lightrun Answers was designed to reduce the constant googling that comes with debugging 3rd party libraries. It collects links to all the places you might be looking at while hunting down a tough bug.

And, if you’re still stuck at the end, we’re happy to hop on a call to see how we can help out.

Possible deadlock

See original GitHub issue

Description

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:closed
  • Created 3 years ago
  • Comments:5 (5 by maintainers)

github_iconTop GitHub Comments

3reactions
lg2decommented, Sep 18, 2020

I was fighting for 1324, so I feel responsible (a bit). I would like to analyze in detail.

0reactions
jnyrupcommented, Jun 1, 2021

Thanks for the explanation 👍 With fingers crossed, I’ll close this issue.

Read more comments on GitHub >

github_iconTop 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 >

github_iconTop Related Medium Post

No results found

github_iconTop Related StackOverflow Question

No results found

github_iconTroubleshoot Live Code

Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start Free

github_iconTop Related Reddit Thread

No results found

github_iconTop Related Hackernoon Post

No results found

github_iconTop Related Tweet

No results found

github_iconTop Related Dev.to Post

No results found

github_iconTop Related Hashnode Post

No results found