-
-
Notifications
You must be signed in to change notification settings - Fork 2.1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Force MainThreadScheduler to yield even when called from the main thread #5139
Conversation
Codecov Report
@@ Coverage Diff @@
## master #5139 +/- ##
==========================================
+ Coverage 34.92% 34.94% +0.02%
==========================================
Files 563 564 +1
Lines 44673 44719 +46
Branches 6193 6194 +1
==========================================
+ Hits 15600 15629 +29
- Misses 28293 28311 +18
+ Partials 780 779 -1 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks simple enough.
Is there likely to be any downside to this? Given this only occurred in one location. If this introduces significant latency for other operations, then we could just fix the problem in this instance.
Still get an exception Stack trace[Managed to Native Transition] System.Drawing.dll!System.Drawing.Font.GetHeight() Unknown System.Drawing.dll!System.Drawing.Font.Height.get() Unknown System.Windows.Forms.dll!System.Windows.Forms.DataGridViewRow.DataGridViewRow() Unknown System.Windows.Forms.dll!System.Windows.Forms.DataGridViewRow.Clone() Unknown System.Windows.Forms.dll!System.Windows.Forms.DataGridViewRowCollection.this[int].get(int index) Unknown > GitUI.dll!GitUI.BuildServerIntegration.BuildServerWatcher.OnBuildInfoUpdate(GitUIPluginInterfaces.BuildServerIntegration.BuildInfo buildInfo) Line 279 C# System.Reactive.Core.dll!System.Reactive.AnonymousSafeObserver.OnNext(GitUIPluginInterfaces.BuildServerIntegration.BuildInfo value) Unknown System.Reactive.Core.dll!System.Reactive.ScheduledObserver.Run(object state, System.Action recurse) Unknown System.Reactive.Core.dll!System.Reactive.Concurrency.Scheduler.InvokeRec1.AnonymousMethod__2(System.Reactive.Concurrency.IScheduler scheduler1, System.__Canon state3) Unknown GitUI.dll!GitUI.UserControls.MainThreadScheduler.Schedule.AnonymousMethod__0() Line 23 C# Microsoft.VisualStudio.Threading.dll!Microsoft.VisualStudio.Threading.JoinableTaskFactory.ExecuteJob(System.Func asyncMethod, Microsoft.VisualStudio.Threading.JoinableTask job) Unknown Microsoft.VisualStudio.Threading.dll!Microsoft.VisualStudio.Threading.JoinableTaskFactory.RunAsync(System.Func asyncMethod, bool synchronouslyBlocking, Microsoft.VisualStudio.Threading.JoinableTaskCreationOptions creationOptions, System.Delegate entrypointOverride) Unknown Microsoft.VisualStudio.Threading.dll!Microsoft.VisualStudio.Threading.JoinableTaskFactory.RunAsync(System.Func asyncMethod) Unknown GitUI.dll!GitUI.UserControls.MainThreadScheduler.Schedule(object state, System.TimeSpan dueTime, System.Func action) Line 18 C# System.Reactive.Core.dll!System.Reactive.Concurrency.Scheduler.InvokeRec1.AnonymousMethod__1(object state2) Unknown System.Reactive.Core.dll!System.Reactive.ScheduledObserver.Run(object state, System.Action recurse) Unknown System.Reactive.Core.dll!System.Reactive.Concurrency.Scheduler.InvokeRec1.AnonymousMethod__2(System.Reactive.Concurrency.IScheduler scheduler1, System.__Canon state3) Unknown GitUI.dll!GitUI.UserControls.MainThreadScheduler.Schedule.AnonymousMethod__0() Line 23 C# Microsoft.VisualStudio.Threading.dll!Microsoft.VisualStudio.Threading.JoinableTaskFactory.ExecuteJob(System.Func asyncMethod, Microsoft.VisualStudio.Threading.JoinableTask job) Unknown Microsoft.VisualStudio.Threading.dll!Microsoft.VisualStudio.Threading.JoinableTaskFactory.RunAsync(System.Func asyncMethod, bool synchronouslyBlocking, Microsoft.VisualStudio.Threading.JoinableTaskCreationOptions creationOptions, System.Delegate entrypointOverride) Unknown Microsoft.VisualStudio.Threading.dll!Microsoft.VisualStudio.Threading.JoinableTaskFactory.RunAsync(System.Func asyncMethod) Unknown GitUI.dll!GitUI.UserControls.MainThreadScheduler.Schedule(object state, System.TimeSpan dueTime, System.Func action) Line 18 C# System.Reactive.Core.dll!System.Reactive.Concurrency.Scheduler.InvokeRec1.AnonymousMethod__1(object state2) Unknown System.Reactive.Core.dll!System.Reactive.ScheduledObserver.Run(object state, System.Action recurse) Unknown System.Reactive.Core.dll!System.Reactive.Concurrency.Scheduler.InvokeRec1.AnonymousMethod__2(System.Reactive.Concurrency.IScheduler scheduler1, System.__Canon state3) Unknown GitUI.dll!GitUI.UserControls.MainThreadScheduler.Schedule.AnonymousMethod__0() Line 23 C# Microsoft.VisualStudio.Threading.dll!Microsoft.VisualStudio.Threading.JoinableTaskFactory.ExecuteJob(System.Func asyncMethod, Microsoft.VisualStudio.Threading.JoinableTask job) Unknown Microsoft.VisualStudio.Threading.dll!Microsoft.VisualStudio.Threading.JoinableTaskFactory.RunAsync(System.Func asyncMethod, bool synchronouslyBlocking, Microsoft.VisualStudio.Threading.JoinableTaskCreationOptions creationOptions, System.Delegate entrypointOverride) Unknown Microsoft.VisualStudio.Threading.dll!Microsoft.VisualStudio.Threading.JoinableTaskFactory.RunAsync(System.Func asyncMethod) Unknown GitUI.dll!GitUI.UserControls.MainThreadScheduler.Schedule(object state, System.TimeSpan dueTime, System.Func action) Line 18 C# System.Reactive.Core.dll!System.Reactive.Concurrency.Scheduler.InvokeRec1.AnonymousMethod__1(object state2) Unknown System.Reactive.Core.dll!System.Reactive.ScheduledObserver.Run(object state, System.Action recurse) Unknown System.Reactive.Core.dll!System.Reactive.Concurrency.Scheduler.InvokeRec1.AnonymousMethod__2(System.Reactive.Concurrency.IScheduler scheduler1, System.__Canon state3) Unknown GitUI.dll!GitUI.UserControls.MainThreadScheduler.Schedule.AnonymousMethod__0() Line 23 C# Microsoft.VisualStudio.Threading.dll!Microsoft.VisualStudio.Threading.JoinableTaskFactory.ExecuteJob(System.Func asyncMethod, Microsoft.VisualStudio.Threading.JoinableTask job) Unknown Microsoft.VisualStudio.Threading.dll!Microsoft.VisualStudio.Threading.JoinableTaskFactory.RunAsync(System.Func asyncMethod, bool synchronouslyBlocking, Microsoft.VisualStudio.Threading.JoinableTaskCreationOptions creationOptions, System.Delegate entrypointOverride) Unknown Microsoft.VisualStudio.Threading.dll!Microsoft.VisualStudio.Threading.JoinableTaskFactory.RunAsync(System.Func asyncMethod) Unknown GitUI.dll!GitUI.UserControls.MainThreadScheduler.Schedule(object state, System.TimeSpan dueTime, System.Func action) Line 18 C# System.Reactive.Core.dll!System.Reactive.Concurrency.Scheduler.InvokeRec1.AnonymousMethod__1(object state2) Unknown System.Reactive.Core.dll!System.Reactive.ScheduledObserver.Run(object state, System.Action recurse) Unknown System.Reactive.Core.dll!System.Reactive.Concurrency.Scheduler.InvokeRec1.AnonymousMethod__2(System.Reactive.Concurrency.IScheduler scheduler1, System.__Canon state3) Unknown GitUI.dll!GitUI.UserControls.MainThreadScheduler.Schedule.AnonymousMethod__0() Line 23 C# Microsoft.VisualStudio.Threading.dll!Microsoft.VisualStudio.Threading.JoinableTaskFactory.ExecuteJob(System.Func asyncMethod, Microsoft.VisualStudio.Threading.JoinableTask job) Unknown Microsoft.VisualStudio.Threading.dll!Microsoft.VisualStudio.Threading.JoinableTaskFactory.RunAsync(System.Func asyncMethod, bool synchronouslyBlocking, Microsoft.VisualStudio.Threading.JoinableTaskCreationOptions creationOptions, System.Delegate entrypointOverride) Unknown Microsoft.VisualStudio.Threading.dll!Microsoft.VisualStudio.Threading.JoinableTaskFactory.RunAsync(System.Func asyncMethod) Unknown GitUI.dll!GitUI.UserControls.MainThreadScheduler.Schedule(object state, System.TimeSpan dueTime, System.Func action) Line 18 C# System.Reactive.Core.dll!System.Reactive.Concurrency.Scheduler.InvokeRec1.AnonymousMethod__1(object state2) Unknown System.Reactive.Core.dll!System.Reactive.ScheduledObserver.Run(object state, System.Action recurse) Unknown System.Reactive.Core.dll!System.Reactive.Concurrency.Scheduler.InvokeRec1.AnonymousMethod__2(System.Reactive.Concurrency.IScheduler scheduler1, System.__Canon state3) Unknown GitUI.dll!GitUI.UserControls.MainThreadScheduler.Schedule.AnonymousMethod__0() Line 23 C# Microsoft.VisualStudio.Threading.dll!Microsoft.VisualStudio.Threading.JoinableTaskFactory.ExecuteJob(System.Func asyncMethod, Microsoft.VisualStudio.Threading.JoinableTask job) Unknown Microsoft.VisualStudio.Threading.dll!Microsoft.VisualStudio.Threading.JoinableTaskFactory.RunAsync(System.Func asyncMethod, bool synchronouslyBlocking, Microsoft.VisualStudio.Threading.JoinableTaskCreationOptions creationOptions, System.Delegate entrypointOverride) Unknown Microsoft.VisualStudio.Threading.dll!Microsoft.VisualStudio.Threading.JoinableTaskFactory.RunAsync(System.Func asyncMethod) Unknown GitUI.dll!GitUI.UserControls.MainThreadScheduler.Schedule(object state, System.TimeSpan dueTime, System.Func action) Line 18 C# System.Reactive.Core.dll!System.Reactive.Concurrency.Scheduler.InvokeRec1.AnonymousMethod__1(object state2) Unknown System.Reactive.Core.dll!System.Reactive.ScheduledObserver.Run(object state, System.Action recurse) Unknown System.Reactive.Core.dll!System.Reactive.Concurrency.Scheduler.InvokeRec1.AnonymousMethod__2(System.Reactive.Concurrency.IScheduler scheduler1, System.__Canon state3) Unknown GitUI.dll!GitUI.UserControls.MainThreadScheduler.Schedule.AnonymousMethod__0() Line 23 C# Microsoft.VisualStudio.Threading.dll!Microsoft.VisualStudio.Threading.JoinableTaskFactory.ExecuteJob(System.Func asyncMethod, Microsoft.VisualStudio.Threading.JoinableTask job) Unknown Microsoft.VisualStudio.Threading.dll!Microsoft.VisualStudio.Threading.JoinableTaskFactory.RunAsync(System.Func asyncMethod, bool synchronouslyBlocking, Microsoft.VisualStudio.Threading.JoinableTaskCreationOptions creationOptions, System.Delegate entrypointOverride) Unknown Microsoft.VisualStudio.Threading.dll!Microsoft.VisualStudio.Threading.JoinableTaskFactory.RunAsync(System.Func asyncMethod) Unknown GitUI.dll!GitUI.UserControls.MainThreadScheduler.Schedule(object state, System.TimeSpan dueTime, System.Func action) Line 18 C# System.Reactive.Core.dll!System.Reactive.Concurrency.Scheduler.InvokeRec1.AnonymousMethod__1(object state2) Unknown System.Reactive.Core.dll!System.Reactive.ScheduledObserver.Run(object state, System.Action recurse) Unknown System.Reactive.Core.dll!System.Reactive.Concurrency.Scheduler.InvokeRec1.AnonymousMethod__2(System.Reactive.Concurrency.IScheduler scheduler1, System.__Canon state3) Unknown GitUI.dll!GitUI.UserControls.MainThreadScheduler.Schedule.AnonymousMethod__0() Line 23 C# Microsoft.VisualStudio.Threading.dll!Microsoft.VisualStudio.Threading.JoinableTaskFactory.ExecuteJob(System.Func asyncMethod, Microsoft.VisualStudio.Threading.JoinableTask job) Unknown Microsoft.VisualStudio.Threading.dll!Microsoft.VisualStudio.Threading.JoinableTaskFactory.RunAsync(System.Func asyncMethod, bool synchronouslyBlocking, Microsoft.VisualStudio.Threading.JoinableTaskCreationOptions creationOptions, System.Delegate entrypointOverride) Unknown Microsoft.VisualStudio.Threading.dll!Microsoft.VisualStudio.Threading.JoinableTaskFactory.RunAsync(System.Func asyncMethod) Unknown GitUI.dll!GitUI.UserControls.MainThreadScheduler.Schedule(object state, System.TimeSpan dueTime, System.Func action) Line 18 C# System.Reactive.Core.dll!System.Reactive.Concurrency.Scheduler.InvokeRec1.AnonymousMethod__1(object state2) Unknown System.Reactive.Core.dll!System.Reactive.ScheduledObserver.Run(object state, System.Action recurse) Unknown System.Reactive.Core.dll!System.Reactive.Concurrency.Scheduler.InvokeRec1.AnonymousMethod__2(System.Reactive.Concurrency.IScheduler scheduler1, System.__Canon state3) Unknown GitUI.dll!GitUI.UserControls.MainThreadScheduler.Schedule.AnonymousMethod__0() Line 23 C# Microsoft.VisualStudio.Threading.dll!Microsoft.VisualStudio.Threading.JoinableTaskFactory.ExecuteJob(System.Func asyncMethod, Microsoft.VisualStudio.Threading.JoinableTask job) Unknown Microsoft.VisualStudio.Threading.dll!Microsoft.VisualStudio.Threading.JoinableTaskFactory.RunAsync(System.Func asyncMethod, bool synchronouslyBlocking, Microsoft.VisualStudio.Threading.JoinableTaskCreationOptions creationOptions, System.Delegate entrypointOverride) Unknown Microsoft.VisualStudio.Threading.dll!Microsoft.VisualStudio.Threading.JoinableTaskFactory.RunAsync(System.Func asyncMethod) Unknown GitUI.dll!GitUI.UserControls.MainThreadScheduler.Schedule(object state, System.TimeSpan dueTime, System.Func action) Line 18 C# System.Reactive.Core.dll!System.Reactive.Concurrency.Scheduler.InvokeRec1.AnonymousMethod__1(object state2) Unknown System.Reactive.Core.dll!System.Reactive.ScheduledObserver.Run(object state, System.Action recurse) Unknown System.Reactive.Core.dll!System.Reactive.Concurrency.Scheduler.InvokeRec1.AnonymousMethod__2(System.Reactive.Concurrency.IScheduler scheduler1, System.__Canon state3) Unknown GitUI.dll!GitUI.UserControls.MainThreadScheduler.Schedule.AnonymousMethod__0() Line 23 C# Microsoft.VisualStudio.Threading.dll!Microsoft.VisualStudio.Threading.JoinableTaskFactory.ExecuteJob(System.Func asyncMethod, Microsoft.VisualStudio.Threading.JoinableTask job) Unknown Microsoft.VisualStudio.Threading.dll!Microsoft.VisualStudio.Threading.JoinableTaskFactory.RunAsync(System.Func asyncMethod, bool synchronouslyBlocking, Microsoft.VisualStudio.Threading.JoinableTaskCreationOptions creationOptions, System.Delegate entrypointOverride) Unknown Microsoft.VisualStudio.Threading.dll!Microsoft.VisualStudio.Threading.JoinableTaskFactory.RunAsync(System.Func asyncMethod) Unknown GitUI.dll!GitUI.UserControls.MainThreadScheduler.Schedule(object state, System.TimeSpan dueTime, System.Func action) Line 18 C# System.Reactive.Core.dll!System.Reactive.Concurrency.Scheduler.InvokeRec1.AnonymousMethod__1(object state2) Unknown System.Reactive.Core.dll!System.Reactive.ScheduledObserver.Run(object state, System.Action recurse) Unknown System.Reactive.Core.dll!System.Reactive.Concurrency.Scheduler.InvokeRec1.AnonymousMethod__2(System.Reactive.Concurrency.IScheduler scheduler1, System.__Canon state3) Unknown GitUI.dll!GitUI.UserControls.MainThreadScheduler.Schedule.AnonymousMethod__0() Line 23 C# Microsoft.VisualStudio.Threading.dll!Microsoft.VisualStudio.Threading.JoinableTaskFactory.ExecuteJob(System.Func asyncMethod, Microsoft.VisualStudio.Threading.JoinableTask job) Unknown Microsoft.VisualStudio.Threading.dll!Microsoft.VisualStudio.Threading.JoinableTaskFactory.RunAsync(System.Func asyncMethod, bool synchronouslyBlocking, Microsoft.VisualStudio.Threading.JoinableTaskCreationOptions creationOptions, System.Delegate entrypointOverride) Unknown Microsoft.VisualStudio.Threading.dll!Microsoft.VisualStudio.Threading.JoinableTaskFactory.RunAsync(System.Func asyncMethod) Unknown GitUI.dll!GitUI.UserControls.MainThreadScheduler.Schedule(object state, System.TimeSpan dueTime, System.Func action) Line 18 C# System.Reactive.Core.dll!System.Reactive.Concurrency.Scheduler.InvokeRec1.AnonymousMethod__1(object state2) Unknown System.Reactive.Core.dll!System.Reactive.ScheduledObserver.Run(object state, System.Action recurse) Unknown System.Reactive.Core.dll!System.Reactive.Concurrency.Scheduler.InvokeRec1.AnonymousMethod__2(System.Reactive.Concurrency.IScheduler scheduler1, System.__Canon state3) Unknown GitUI.dll!GitUI.UserControls.MainThreadScheduler.Schedule.AnonymousMethod__0() Line 23 C# Microsoft.VisualStudio.Threading.dll!Microsoft.VisualStudio.Threading.JoinableTaskFactory.ExecuteJob(System.Func asyncMethod, Microsoft.VisualStudio.Threading.JoinableTask job) Unknown Microsoft.VisualStudio.Threading.dll!Microsoft.VisualStudio.Threading.JoinableTaskFactory.RunAsync(System.Func asyncMethod, bool synchronouslyBlocking, Microsoft.VisualStudio.Threading.JoinableTaskCreationOptions creationOptions, System.Delegate entrypointOverride) Unknown Microsoft.VisualStudio.Threading.dll!Microsoft.VisualStudio.Threading.JoinableTaskFactory.RunAsync(System.Func asyncMethod) Unknown GitUI.dll!GitUI.UserControls.MainThreadScheduler.Schedule(object state, System.TimeSpan dueTime, System.Func action) Line 18 C# System.Reactive.Core.dll!System.Reactive.Concurrency.Scheduler.InvokeRec1.AnonymousMethod__1(object state2) Unknown System.Reactive.Core.dll!System.Reactive.ScheduledObserver.Run(object state, System.Action recurse) Unknown System.Reactive.Core.dll!System.Reactive.Concurrency.Scheduler.InvokeRec1.AnonymousMethod__2(System.Reactive.Concurrency.IScheduler scheduler1, System.__Canon state3) Unknown GitUI.dll!GitUI.UserControls.MainThreadScheduler.Schedule.AnonymousMethod__0() Line 23 C# Microsoft.VisualStudio.Threading.dll!Microsoft.VisualStudio.Threading.JoinableTaskFactory.ExecuteJob(System.Func asyncMethod, Microsoft.VisualStudio.Threading.JoinableTask job) Unknown Microsoft.VisualStudio.Threading.dll!Microsoft.VisualStudio.Threading.JoinableTaskFactory.RunAsync(System.Func asyncMethod, bool synchronouslyBlocking, Microsoft.VisualStudio.Threading.JoinableTaskCreationOptions creationOptions, System.Delegate entrypointOverride) Unknown Microsoft.VisualStudio.Threading.dll!Microsoft.VisualStudio.Threading.JoinableTaskFactory.RunAsync(System.Func asyncMethod) Unknown GitUI.dll!GitUI.UserControls.MainThreadScheduler.Schedule(object state, System.TimeSpan dueTime, System.Func action) Line 18 C# System.Reactive.Core.dll!System.Reactive.Concurrency.Scheduler.InvokeRec1.AnonymousMethod__1(object state2) Unknown System.Reactive.Core.dll!System.Reactive.ScheduledObserver.Run(object state, System.Action recurse) Unknown System.Reactive.Core.dll!System.Reactive.Concurrency.Scheduler.InvokeRec1.AnonymousMethod__2(System.Reactive.Concurrency.IScheduler scheduler1, System.__Canon state3) Unknown GitUI.dll!GitUI.UserControls.MainThreadScheduler.Schedule.AnonymousMethod__0() Line 23 C# Microsoft.VisualStudio.Threading.dll!Microsoft.VisualStudio.Threading.JoinableTaskFactory.ExecuteJob(System.Func asyncMethod, Microsoft.VisualStudio.Threading.JoinableTask job) Unknown Microsoft.VisualStudio.Threading.dll!Microsoft.VisualStudio.Threading.JoinableTaskFactory.RunAsync(System.Func asyncMethod, bool synchronouslyBlocking, Microsoft.VisualStudio.Threading.JoinableTaskCreationOptions creationOptions, System.Delegate entrypointOverride) Unknown Microsoft.VisualStudio.Threading.dll!Microsoft.VisualStudio.Threading.JoinableTaskFactory.RunAsync(System.Func asyncMethod) Unknown GitUI.dll!GitUI.UserControls.MainThreadScheduler.Schedule(object state, System.TimeSpan dueTime, System.Func action) Line 18 C# System.Reactive.Core.dll!System.Reactive.Concurrency.Scheduler.InvokeRec1.AnonymousMethod__1(object state2) Unknown System.Reactive.Core.dll!System.Reactive.ScheduledObserver.Run(object state, System.Action recurse) Unknown System.Reactive.Core.dll!System.Reactive.Concurrency.Scheduler.InvokeRec1.AnonymousMethod__2(System.Reactive.Concurrency.IScheduler scheduler1, System.__Canon state3) Unknown GitUI.dll!GitUI.UserControls.MainThreadScheduler.Schedule.AnonymousMethod__0() Line 23 C# Microsoft.VisualStudio.Threading.dll!Microsoft.VisualStudio.Threading.JoinableTaskFactory.ExecuteJob(System.Func asyncMethod, Microsoft.VisualStudio.Threading.JoinableTask job) Unknown Microsoft.VisualStudio.Threading.dll!Microsoft.VisualStudio.Threading.JoinableTaskFactory.RunAsync(System.Func asyncMethod, bool synchronouslyBlocking, Microsoft.VisualStudio.Threading.JoinableTaskCreationOptions creationOptions, System.Delegate entrypointOverride) Unknown Microsoft.VisualStudio.Threading.dll!Microsoft.VisualStudio.Threading.JoinableTaskFactory.RunAsync(System.Func asyncMethod) Unknown GitUI.dll!GitUI.UserControls.MainThreadScheduler.Schedule(object state, System.TimeSpan dueTime, System.Func action) Line 18 C# System.Reactive.Core.dll!System.Reactive.Concurrency.Scheduler.InvokeRec1.AnonymousMethod__1(object state2) Unknown System.Reactive.Core.dll!System.Reactive.ScheduledObserver.Run(object state, System.Action recurse) Unknown System.Reactive.Core.dll!System.Reactive.Concurrency.Scheduler.InvokeRec1.AnonymousMethod__2(System.Reactive.Concurrency.IScheduler scheduler1, System.__Canon state3) Unknown GitUI.dll!GitUI.UserControls.MainThreadScheduler.Schedule.AnonymousMethod__0() Line 23 C# Microsoft.VisualStudio.Threading.dll!Microsoft.VisualStudio.Threading.JoinableTaskFactory.ExecuteJob(System.Func asyncMethod, Microsoft.VisualStudio.Threading.JoinableTask job) Unknown Microsoft.VisualStudio.Threading.dll!Microsoft.VisualStudio.Threading.JoinableTaskFactory.RunAsync(System.Func asyncMethod, bool synchronouslyBlocking, Microsoft.VisualStudio.Threading.JoinableTaskCreationOptions creationOptions, System.Delegate entrypointOverride) Unknown Microsoft.VisualStudio.Threading.dll!Microsoft.VisualStudio.Threading.JoinableTaskFactory.RunAsync(System.Func asyncMethod) Unknown GitUI.dll!GitUI.UserControls.MainThreadScheduler.Schedule(object state, System.TimeSpan dueTime, System.Func action) Line 18 C# System.Reactive.Core.dll!System.Reactive.Concurrency.Scheduler.InvokeRec1.AnonymousMethod__1(object state2) Unknown System.Reactive.Core.dll!System.Reactive.ScheduledObserver.Run(object state, System.Action recurse) Unknown System.Reactive.Core.dll!System.Reactive.Concurrency.Scheduler.InvokeRec1.AnonymousMethod__2(System.Reactive.Concurrency.IScheduler scheduler1, System.__Canon state3) Unknown GitUI.dll!GitUI.UserControls.MainThreadScheduler.Schedule.AnonymousMethod__0() Line 23 C# Microsoft.VisualStudio.Threading.dll!Microsoft.VisualStudio.Threading.JoinableTaskFactory.ExecuteJob(System.Func asyncMethod, Microsoft.VisualStudio.Threading.JoinableTask job) Unknown Microsoft.VisualStudio.Threading.dll!Microsoft.VisualStudio.Threading.JoinableTaskFactory.RunAsync(System.Func asyncMethod, bool synchronouslyBlocking, Microsoft.VisualStudio.Threading.JoinableTaskCreationOptions creationOptions, System.Delegate entrypointOverride) Unknown Microsoft.VisualStudio.Threading.dll!Microsoft.VisualStudio.Threading.JoinableTaskFactory.RunAsync(System.Func asyncMethod) Unknown GitUI.dll!GitUI.UserControls.MainThreadScheduler.Schedule(object state, System.TimeSpan dueTime, System.Func action) Line 18 C# System.Reactive.Core.dll!System.Reactive.Concurrency.Scheduler.InvokeRec1.AnonymousMethod__1(object state2) Unknown System.Reactive.Core.dll!System.Reactive.ScheduledObserver.Run(object state, System.Action recurse) Unknown System.Reactive.Core.dll!System.Reactive.Concurrency.Scheduler.InvokeRec1.AnonymousMethod__2(System.Reactive.Concurrency.IScheduler scheduler1, System.__Canon state3) Unknown GitUI.dll!GitUI.UserControls.MainThreadScheduler.Schedule.AnonymousMethod__0() Line 23 C# Microsoft.VisualStudio.Threading.dll!Microsoft.VisualStudio.Threading.JoinableTaskFactory.ExecuteJob(System.Func asyncMethod, Microsoft.VisualStudio.Threading.JoinableTask job) Unknown Microsoft.VisualStudio.Threading.dll!Microsoft.VisualStudio.Threading.JoinableTaskFactory.RunAsync(System.Func asyncMethod, bool synchronouslyBlocking, Microsoft.VisualStudio.Threading.JoinableTaskCreationOptions creationOptions, System.Delegate entrypointOverride) Unknown Microsoft.VisualStudio.Threading.dll!Microsoft.VisualStudio.Threading.JoinableTaskFactory.RunAsync(System.Func asyncMethod) Unknown GitUI.dll!GitUI.UserControls.MainThreadScheduler.Schedule(object state, System.TimeSpan dueTime, System.Func action) Line 18 C# System.Reactive.Core.dll!System.Reactive.Concurrency.Scheduler.InvokeRec1.AnonymousMethod__1(object state2) Unknown System.Reactive.Core.dll!System.Reactive.ScheduledObserver.Run(object state, System.Action recurse) Unknown System.Reactive.Core.dll!System.Reactive.Concurrency.Scheduler.InvokeRec1.AnonymousMethod__2(System.Reactive.Concurrency.IScheduler scheduler1, System.__Canon state3) Unknown GitUI.dll!GitUI.UserControls.MainThreadScheduler.Schedule.AnonymousMethod__0() Line 23 C# Microsoft.VisualStudio.Threading.dll!Microsoft.VisualStudio.Threading.JoinableTaskFactory.ExecuteJob(System.Func asyncMethod, Microsoft.VisualStudio.Threading.JoinableTask job) Unknown Microsoft.VisualStudio.Threading.dll!Microsoft.VisualStudio.Threading.JoinableTaskFactory.RunAsync(System.Func asyncMethod, bool synchronouslyBlocking, Microsoft.VisualStudio.Threading.JoinableTaskCreationOptions creationOptions, System.Delegate entrypointOverride) Unknown Microsoft.VisualStudio.Threading.dll!Microsoft.VisualStudio.Threading.JoinableTaskFactory.RunAsync(System.Func asyncMethod) Unknown GitUI.dll!GitUI.UserControls.MainThreadScheduler.Schedule(object state, System.TimeSpan dueTime, System.Func action) Line 18 C# System.Reactive.Core.dll!System.Reactive.Concurrency.Scheduler.InvokeRec1.AnonymousMethod__1(object state2) Unknown System.Reactive.Core.dll!System.Reactive.ScheduledObserver.Run(object state, System.Action recurse) Unknown System.Reactive.Core.dll!System.Reactive.Concurrency.Scheduler.InvokeRec1.AnonymousMethod__2(System.Reactive.Concurrency.IScheduler scheduler1, System.__Canon state3) Unknown GitUI.dll!GitUI.UserControls.MainThreadScheduler.Schedule.AnonymousMethod__0() Line 23 C# Microsoft.VisualStudio.Threading.dll!Microsoft.VisualStudio.Threading.JoinableTaskFactory.ExecuteJob(System.Func asyncMethod, Microsoft.VisualStudio.Threading.JoinableTask job) Unknown Microsoft.VisualStudio.Threading.dll!Microsoft.VisualStudio.Threading.JoinableTaskFactory.RunAsync(System.Func asyncMethod, bool synchronouslyBlocking, Microsoft.VisualStudio.Threading.JoinableTaskCreationOptions creationOptions, System.Delegate entrypointOverride) Unknown Microsoft.VisualStudio.Threading.dll!Microsoft.VisualStudio.Threading.JoinableTaskFactory.RunAsync(System.Func asyncMethod) Unknown GitUI.dll!GitUI.UserControls.MainThreadScheduler.Schedule(object state, System.TimeSpan dueTime, System.Func action) Line 18 C# System.Reactive.Core.dll!System.Reactive.Concurrency.Scheduler.InvokeRec1.AnonymousMethod__1(object state2) Unknown System.Reactive.Core.dll!System.Reactive.ScheduledObserver.Run(object state, System.Action recurse) Unknown System.Reactive.Core.dll!System.Reactive.Concurrency.Scheduler.InvokeRec1.AnonymousMethod__2(System.Reactive.Concurrency.IScheduler scheduler1, System.__Canon state3) Unknown GitUI.dll!GitUI.UserControls.MainThreadScheduler.Schedule.AnonymousMethod__0() Line 23 C# Microsoft.VisualStudio.Threading.dll!Microsoft.VisualStudio.Threading.JoinableTaskFactory.ExecuteJob(System.Func asyncMethod, Microsoft.VisualStudio.Threading.JoinableTask job) Unknown Microsoft.VisualStudio.Threading.dll!Microsoft.VisualStudio.Threading.JoinableTaskFactory.RunAsync(System.Func asyncMethod, bool synchronouslyBlocking, Microsoft.VisualStudio.Threading.JoinableTaskCreationOptions creationOptions, System.Delegate entrypointOverride) Unknown Microsoft.VisualStudio.Threading.dll!Microsoft.VisualStudio.Threading.JoinableTaskFactory.RunAsync(System.Func asyncMethod) Unknown GitUI.dll!GitUI.UserControls.MainThreadScheduler.Schedule(object state, System.TimeSpan dueTime, System.Func action) Line 18 C# System.Reactive.Core.dll!System.Reactive.Concurrency.Scheduler.InvokeRec1.AnonymousMethod__1(object state2) Unknown System.Reactive.Core.dll!System.Reactive.ScheduledObserver.Run(object state, System.Action recurse) Unknown System.Reactive.Core.dll!System.Reactive.Concurrency.Scheduler.InvokeRec1.AnonymousMethod__2(System.Reactive.Concurrency.IScheduler scheduler1, System.__Canon state3) Unknown GitUI.dll!GitUI.UserControls.MainThreadScheduler.Schedule.AnonymousMethod__0() Line 23 C# Microsoft.VisualStudio.Threading.dll!Microsoft.VisualStudio.Threading.JoinableTaskFactory.ExecuteJob(System.Func asyncMethod, Microsoft.VisualStudio.Threading.JoinableTask job) Unknown Microsoft.VisualStudio.Threading.dll!Microsoft.VisualStudio.Threading.JoinableTaskFactory.RunAsync(System.Func asyncMethod, bool synchronouslyBlocking, Microsoft.VisualStudio.Threading.JoinableTaskCreationOptions creationOptions, System.Delegate entrypointOverride) Unknown Microsoft.VisualStudio.Threading.dll!Microsoft.VisualStudio.Threading.JoinableTaskFactory.RunAsync(System.Func asyncMethod) Unknown GitUI.dll!GitUI.UserControls.MainThreadScheduler.Schedule(object state, System.TimeSpan dueTime, System.Func action) Line 18 C# System.Reactive.Core.dll!System.Reactive.Concurrency.Scheduler.InvokeRec1.AnonymousMethod__1(object state2) Unknown System.Reactive.Core.dll!System.Reactive.ScheduledObserver.Run(object state, System.Action recurse) Unknown System.Reactive.Core.dll!System.Reactive.Concurrency.Scheduler.InvokeRec1.AnonymousMethod__2(System.Reactive.Concurrency.IScheduler scheduler1, System.__Canon state3) Unknown GitUI.dll!GitUI.UserControls.MainThreadScheduler.Schedule.AnonymousMethod__0() Line 23 C# Microsoft.VisualStudio.Threading.dll!Microsoft.VisualStudio.Threading.JoinableTaskFactory.ExecuteJob(System.Func asyncMethod, Microsoft.VisualStudio.Threading.JoinableTask job) Unknown Microsoft.VisualStudio.Threading.dll!Microsoft.VisualStudio.Threading.JoinableTaskFactory.RunAsync(System.Func asyncMethod, bool synchronouslyBlocking, Microsoft.VisualStudio.Threading.JoinableTaskCreationOptions creationOptions, System.Delegate entrypointOverride) Unknown Microsoft.VisualStudio.Threading.dll!Microsoft.VisualStudio.Threading.JoinableTaskFactory.RunAsync(System.Func asyncMethod) Unknown GitUI.dll!GitUI.UserControls.MainThreadScheduler.Schedule(object state, System.TimeSpan dueTime, System.Func action) Line 18 C# System.Reactive.Core.dll!System.Reactive.Concurrency.Scheduler.InvokeRec1.AnonymousMethod__1(object state2) Unknown System.Reactive.Core.dll!System.Reactive.ScheduledObserver.Run(object state, System.Action recurse) Unknown System.Reactive.Core.dll!System.Reactive.Concurrency.Scheduler.InvokeRec1.AnonymousMethod__2(System.Reactive.Concurrency.IScheduler scheduler1, System.__Canon state3) Unknown GitUI.dll!GitUI.UserControls.MainThreadScheduler.Schedule.AnonymousMethod__0() Line 23 C# Microsoft.VisualStudio.Threading.dll!Microsoft.VisualStudio.Threading.JoinableTaskFactory.ExecuteJob(System.Func asyncMethod, Microsoft.VisualStudio.Threading.JoinableTask job) Unknown Microsoft.VisualStudio.Threading.dll!Microsoft.VisualStudio.Threading.JoinableTaskFactory.RunAsync(System.Func asyncMethod, bool synchronouslyBlocking, Microsoft.VisualStudio.Threading.JoinableTaskCreationOptions creationOptions, System.Delegate entrypointOverride) Unknown Microsoft.VisualStudio.Threading.dll!Microsoft.VisualStudio.Threading.JoinableTaskFactory.RunAsync(System.Func asyncMethod) Unknown GitUI.dll!GitUI.UserControls.MainThreadScheduler.Schedule(object state, System.TimeSpan dueTime, System.Func action) Line 18 C# System.Reactive.Core.dll!System.Reactive.Concurrency.Scheduler.InvokeRec1.AnonymousMethod__1(object state2) Unknown System.Reactive.Core.dll!System.Reactive.ScheduledObserver.Run(object state, System.Action recurse) Unknown System.Reactive.Core.dll!System.Reactive.Concurrency.Scheduler.InvokeRec1.AnonymousMethod__2(System.Reactive.Concurrency.IScheduler scheduler1, System.__Canon state3) Unknown GitUI.dll!GitUI.UserControls.MainThreadScheduler.Schedule.AnonymousMethod__0() Line 23 C# Microsoft.VisualStudio.Threading.dll!Microsoft.VisualStudio.Threading.JoinableTaskFactory.ExecuteJob(System.Func asyncMethod, Microsoft.VisualStudio.Threading.JoinableTask job) Unknown Microsoft.VisualStudio.Threading.dll!Microsoft.VisualStudio.Threading.JoinableTaskFactory.RunAsync(System.Func asyncMethod, bool synchronouslyBlocking, Microsoft.VisualStudio.Threading.JoinableTaskCreationOptions creationOptions, System.Delegate entrypointOverride) Unknown Microsoft.VisualStudio.Threading.dll!Microsoft.VisualStudio.Threading.JoinableTaskFactory.RunAsync(System.Func asyncMethod) Unknown GitUI.dll!GitUI.UserControls.MainThreadScheduler.Schedule(object state, System.TimeSpan dueTime, System.Func action) Line 18 C# System.Reactive.Core.dll!System.Reactive.Concurrency.Scheduler.InvokeRec1.AnonymousMethod__1(object state2) Unknown System.Reactive.Core.dll!System.Reactive.ScheduledObserver.Run(object state, System.Action recurse) Unknown System.Reactive.Core.dll!System.Reactive.Concurrency.Scheduler.InvokeRec1.AnonymousMethod__2(System.Reactive.Concurrency.IScheduler scheduler1, System.__Canon state3) Unknown GitUI.dll!GitUI.UserControls.MainThreadScheduler.Schedule.AnonymousMethod__0() Line 23 C# Microsoft.VisualStudio.Threading.dll!Microsoft.VisualStudio.Threading.JoinableTaskFactory.ExecuteJob(System.Func asyncMethod, Microsoft.VisualStudio.Threading.JoinableTask job) Unknown Microsoft.VisualStudio.Threading.dll!Microsoft.VisualStudio.Threading.JoinableTaskFactory.RunAsync(System.Func asyncMethod, bool synchronouslyBlocking, Microsoft.VisualStudio.Threading.JoinableTaskCreationOptions creationOptions, System.Delegate entrypointOverride) Unknown Microsoft.VisualStudio.Threading.dll!Microsoft.VisualStudio.Threading.JoinableTaskFactory.RunAsync(System.Func asyncMethod) Unknown GitUI.dll!GitUI.UserControls.MainThreadScheduler.Schedule(object state, System.TimeSpan dueTime, System.Func action) Line 18 C# System.Reactive.Core.dll!System.Reactive.Concurrency.Scheduler.InvokeRec1.AnonymousMethod__1(object state2) Unknown System.Reactive.Core.dll!System.Reactive.ScheduledObserver.Run(object state, System.Action recurse) Unknown System.Reactive.Core.dll!System.Reactive.Concurrency.Scheduler.InvokeRec1.AnonymousMethod__2(System.Reactive.Concurrency.IScheduler scheduler1, System.__Canon state3) Unknown GitUI.dll!GitUI.UserControls.MainThreadScheduler.Schedule.AnonymousMethod__0() Line 23 C# Microsoft.VisualStudio.Threading.dll!Microsoft.VisualStudio.Threading.JoinableTaskFactory.ExecuteJob(System.Func asyncMethod, Microsoft.VisualStudio.Threading.JoinableTask job) Unknown Microsoft.VisualStudio.Threading.dll!Microsoft.VisualStudio.Threading.JoinableTaskFactory.RunAsync(System.Func asyncMethod, bool synchronouslyBlocking, Microsoft.VisualStudio.Threading.JoinableTaskCreationOptions creationOptions, System.Delegate entrypointOverride) Unknown Microsoft.VisualStudio.Threading.dll!Microsoft.VisualStudio.Threading.JoinableTaskFactory.RunAsync(System.Func asyncMethod) Unknown GitUI.dll!GitUI.UserControls.MainThreadScheduler.Schedule(object state, System.TimeSpan dueTime, System.Func action) Line 18 C# System.Reactive.Core.dll!System.Reactive.Concurrency.Scheduler.InvokeRec1.AnonymousMethod__1(object state2) Unknown System.Reactive.Core.dll!System.Reactive.ScheduledObserver.Run(object state, System.Action recurse) Unknown System.Reactive.Core.dll!System.Reactive.Concurrency.Scheduler.InvokeRec1.AnonymousMethod__2(System.Reactive.Concurrency.IScheduler scheduler1, System.__Canon state3) Unknown GitUI.dll!GitUI.UserControls.MainThreadScheduler.Schedule.AnonymousMethod__0() Line 23 C# Microsoft.VisualStudio.Threading.dll!Microsoft.VisualStudio.Threading.JoinableTaskFactory.ExecuteJob(System.Func asyncMethod, Microsoft.VisualStudio.Threading.JoinableTask job) Unknown Microsoft.VisualStudio.Threading.dll!Microsoft.VisualStudio.Threading.JoinableTaskFactory.RunAsync(System.Func asyncMethod, bool synchronouslyBlocking, Microsoft.VisualStudio.Threading.JoinableTaskCreationOptions creationOptions, System.Delegate entrypointOverride) Unknown Microsoft.VisualStudio.Threading.dll!Microsoft.VisualStudio.Threading.JoinableTaskFactory.RunAsync(System.Func asyncMethod) Unknown GitUI.dll!GitUI.UserControls.MainThreadScheduler.Schedule(object state, System.TimeSpan dueTime, System.Func action) Line 18 C# System.Reactive.Core.dll!System.Reactive.Concurrency.Scheduler.InvokeRec1.AnonymousMethod__1(object state2) Unknown System.Reactive.Core.dll!System.Reactive.ScheduledObserver.Run(object state, System.Action recurse) Unknown System.Reactive.Core.dll!System.Reactive.Concurrency.Scheduler.InvokeRec1.AnonymousMethod__2(System.Reactive.Concurrency.IScheduler scheduler1, System.__Canon state3) Unknown GitUI.dll!GitUI.UserControls.MainThreadScheduler.Schedule.AnonymousMethod__0() Line 23 C# Microsoft.VisualStudio.Threading.dll!Microsoft.VisualStudio.Threading.JoinableTaskFactory.ExecuteJob(System.Func asyncMethod, Microsoft.VisualStudio.Threading.JoinableTask job) Unknown Microsoft.VisualStudio.Threading.dll!Microsoft.VisualStudio.Threading.JoinableTaskFactory.RunAsync(System.Func asyncMethod, bool synchronouslyBlocking, Microsoft.VisualStudio.Threading.JoinableTaskCreationOptions creationOptions, System.Delegate entrypointOverride) Unknown Microsoft.VisualStudio.Threading.dll!Microsoft.VisualStudio.Threading.JoinableTaskFactory.RunAsync(System.Func asyncMethod) Unknown GitUI.dll!GitUI.UserControls.MainThreadScheduler.Schedule(object state, System.TimeSpan dueTime, System.Func action) Line 18 C# System.Reactive.Core.dll!System.Reactive.Concurrency.Scheduler.InvokeRec1.AnonymousMethod__1(object state2) Unknown System.Reactive.Core.dll!System.Reactive.ScheduledObserver.Run(object state, System.Action recurse) Unknown System.Reactive.Core.dll!System.Reactive.Concurrency.Scheduler.InvokeRec1.AnonymousMethod__2(System.Reactive.Concurrency.IScheduler scheduler1, System.__Canon state3) Unknown GitUI.dll!GitUI.UserControls.MainThreadScheduler.Schedule.AnonymousMethod__0() Line 23 C# Microsoft.VisualStudio.Threading.dll!Microsoft.VisualStudio.Threading.JoinableTaskFactory.ExecuteJob(System.Func asyncMethod, Microsoft.VisualStudio.Threading.JoinableTask job) Unknown Microsoft.VisualStudio.Threading.dll!Microsoft.VisualStudio.Threading.JoinableTaskFactory.RunAsync(System.Func asyncMethod, bool synchronouslyBlocking, Microsoft.VisualStudio.Threading.JoinableTaskCreationOptions creationOptions, System.Delegate entrypointOverride) Unknown Microsoft.VisualStudio.Threading.dll!Microsoft.VisualStudio.Threading.JoinableTaskFactory.RunAsync(System.Func asyncMethod) Unknown GitUI.dll!GitUI.UserControls.MainThreadScheduler.Schedule(object state, System.TimeSpan dueTime, System.Func action) Line 18 C# System.Reactive.Core.dll!System.Reactive.Concurrency.Scheduler.InvokeRec1.AnonymousMethod__1(object state2) Unknown System.Reactive.Core.dll!System.Reactive.ScheduledObserver.Run(object state, System.Action recurse) Unknown System.Reactive.Core.dll!System.Reactive.Concurrency.Scheduler.InvokeRec1.AnonymousMethod__2(System.Reactive.Concurrency.IScheduler scheduler1, System.__Canon state3) Unknown GitUI.dll!GitUI.UserControls.MainThreadScheduler.Schedule.AnonymousMethod__0() Line 23 C# Microsoft.VisualStudio.Threading.dll!Microsoft.VisualStudio.Threading.JoinableTaskFactory.ExecuteJob(System.Func asyncMethod, Microsoft.VisualStudio.Threading.JoinableTask job) Unknown Microsoft.VisualStudio.Threading.dll!Microsoft.VisualStudio.Threading.JoinableTaskFactory.RunAsync(System.Func asyncMethod, bool synchronouslyBlocking, Microsoft.VisualStudio.Threading.JoinableTaskCreationOptions creationOptions, System.Delegate entrypointOverride) Unknown Microsoft.VisualStudio.Threading.dll!Microsoft.VisualStudio.Threading.JoinableTaskFactory.RunAsync(System.Func asyncMethod) Unknown GitUI.dll!GitUI.UserControls.MainThreadScheduler.Schedule(object state, System.TimeSpan dueTime, System.Func action) Line 18 C# System.Reactive.Core.dll!System.Reactive.Concurrency.Scheduler.InvokeRec1.AnonymousMethod__1(object state2) Unknown System.Reactive.Core.dll!System.Reactive.ScheduledObserver.Run(object state, System.Action recurse) Unknown System.Reactive.Core.dll!System.Reactive.Concurrency.Scheduler.InvokeRec1.AnonymousMethod__2(System.Reactive.Concurrency.IScheduler scheduler1, System.__Canon state3) Unknown GitUI.dll!GitUI.UserControls.MainThreadScheduler.Schedule.AnonymousMethod__0() Line 23 C# Microsoft.VisualStudio.Threading.dll!Microsoft.VisualStudio.Threading.JoinableTaskFactory.ExecuteJob(System.Func asyncMethod, Microsoft.VisualStudio.Threading.JoinableTask job) Unknown Microsoft.VisualStudio.Threading.dll!Microsoft.VisualStudio.Threading.JoinableTaskFactory.RunAsync(System.Func |
@gerhardol Do you have steps to reproduce this? The original issue did not include them. (Ideally the original issue would be edited to insert steps to reproduce in the first post, where it currently says "Don't know".) |
It occurs in a specific repo with Jenkins that I cannot share. I have not figured out what is specific with the repo. Edit: this occurs when opening, every time. Not sure if I have access to the setup after tomorrow, for some weeks. |
For me, it happens when solving merge conflicts but only sometimes - don't know how to reproduce it. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The change did not fix the problem for me and without deep knowledge about threading my vote will not have much value. But it looks ok to me.
@gerhardol Are you absolutely certain that my change was applied when you observed the failure with this pull request? I'm asking because the stack trace of the exception was unchanged from the one in the original issue (including the appearance of line 23, which had one meaning before this pull request and a different meaning after), and at minimum I would have expected this pull request to slightly change the stack trace. |
Reopening this pull request because I believe the analysis by @gerhardol was partially in error (either the stack trace from the new failure was incorrectly copied, or the application wasn't using the new code at the time of the failure). 📝 I'm not saying this pull request fixes the issue, because I was never able to reproduce it. I am simply saying I am not longer confident that this pull request doesn't fix the issue, so we should review it again to be sure. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM
I could reproduce the problem on a specific repo in a specific environment that I do not have full access to. I got to the computer again today. For the original test, I know I screwed up the first time, but then I updated the stacktrace as noted in the post. I am pretty sure I got the problem with the change too though. Of course, this may still be a a required part of the solution. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I have not come across the SO issue since I merged this patch. It is not 100% prove of correctness since I was not able to reproduce the issue consistently, but the patch seems to be correct and harmless.
@@ -19,7 +19,15 @@ public override IDisposable Schedule<TState>(TState state, TimeSpan dueTime, Fun | |||
async () => | |||
{ | |||
await Task.Delay(normalizedTime, token); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The context does not need to be captured here.
await Task.Delay(normalizedTime, token).ConfigureAwait(false);
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I used ConfigureAwaitRunInline
, a new extension from vs-threading 15.8. For now I had to define a copy of the extension in GitExtUtils, but I'm going to start the process of updating Git Extensions to use the new version of vs-threading.
This method is provided by vs-threading 15.8, but Git Extensions is not yet updated to that version. A copy is included temporarily, and can be removed when the project updates to a newer version of the vs-threading library.
0f8c51c
to
aee7019
Compare
Fixes #5134
📝 If the underlying cause of the bug was an infinite recursive loop in code, this pull request will avoid a Stack Overflow but may not correct the source of the problem. The implementation change here is similar to tail call elimination, and assumes the sequence is finite but can be larger that what fits in a stack.