serilog-sinks-slack
serilog-sinks-slack copied to clipboard
Upgrading to the latest version of Serilog causes infinite loop
I haven't really dug into the problem yet but the symptoms first showed when a service wouldn't start up. Running the exe interactively resulted in:
Stack overflow.
Repeat 8733 times:
--------------------------------
at Serilog.Sinks.PeriodicBatching.PeriodicBatchingSink.Dispose()
at Serilog.Sinks.Slack.SlackSink.Dispose(Boolean)
at Serilog.Sinks.Slack.SlackSink.Dispose()
--------------------------------
at Serilog.LoggerConfiguration+<>c__DisplayClass33_0.<CreateLogger>g__Dispose|1()
at Serilog.Extensions.Hosting.ReloadableLogger.Reload(System.Func`2<Serilog.LoggerConfiguration,Serilog.LoggerConfiguration>)
at Serilog.SerilogServiceCollectionExtensions+<>c__DisplayClass3_0.<AddSerilog>b__0(System.IServiceProvider)
at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitRootCache(Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceCallSite, Microsoft.Extensions.DependencyInjection.ServiceLookup.RuntimeResolverContext)
at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteVisitor`2[[Microsoft.Extensions.DependencyInjection.ServiceLookup.RuntimeResolverContext, Microsoft.Extensions.DependencyInjection, Version=8.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60],[System.__Canon, System.Private.CoreLib, Version=7.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].VisitCallSite(Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceCallSite, Microsoft.Extensions.DependencyInjection.ServiceLookup.RuntimeResolverContext)
at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.Resolve(Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceCallSite, Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceProviderEngineScope)
at Microsoft.Extensions.DependencyInjection.ServiceProvider.CreateServiceAccessor(Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceIdentifier)
at System.Collections.Concurrent.ConcurrentDictionary`2[[Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceIdentifier, Microsoft.Extensions.DependencyInjection, Version=8.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60],[System.__Canon, System.Private.CoreLib, Version=7.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].GetOrAdd(Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceIdentifier, System.Func`2<Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceIdentifier,System.__Canon>)
at Microsoft.Extensions.DependencyInjection.ServiceProvider.GetService(Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceIdentifier, Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceProviderEngineScope)
at Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceProviderEngineScope.GetService(System.Type)
at Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService(System.IServiceProvider, System.Type)
at Serilog.SerilogServiceCollectionExtensions+<>c__DisplayClass3_0.<AddSerilog>b__2(System.IServiceProvider)
at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitRootCache(Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceCallSite, Microsoft.Extensions.DependencyInjection.ServiceLookup.RuntimeResolverContext)
at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteVisitor`2[[Microsoft.Extensions.DependencyInjection.ServiceLookup.RuntimeResolverContext, Microsoft.Extensions.DependencyInjection, Version=8.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60],[System.__Canon, System.Private.CoreLib, Version=7.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].VisitCallSite(Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceCallSite, Microsoft.Extensions.DependencyInjection.ServiceLookup.RuntimeResolverContext)
at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitConstructor(Microsoft.Extensions.DependencyInjection.ServiceLookup.ConstructorCallSite, Microsoft.Extensions.DependencyInjection.ServiceLookup.RuntimeResolverContext)
at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitRootCache(Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceCallSite, Microsoft.Extensions.DependencyInjection.ServiceLookup.RuntimeResolverContext)
at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteVisitor`2[[Microsoft.Extensions.DependencyInjection.ServiceLookup.RuntimeResolverContext, Microsoft.Extensions.DependencyInjection, Version=8.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60],[System.__Canon, System.Private.CoreLib, Version=7.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].VisitCallSite(Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceCallSite, Microsoft.Extensions.DependencyInjection.ServiceLookup.RuntimeResolverContext)
at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitConstructor(Microsoft.Extensions.DependencyInjection.ServiceLookup.ConstructorCallSite, Microsoft.Extensions.DependencyInjection.ServiceLookup.RuntimeResolverContext)
at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitRootCache(Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceCallSite, Microsoft.Extensions.DependencyInjection.ServiceLookup.RuntimeResolverContext)
at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteVisitor`2[[Microsoft.Extensions.DependencyInjection.ServiceLookup.RuntimeResolverContext, Microsoft.Extensions.DependencyInjection, Version=8.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60],[System.__Canon, System.Private.CoreLib, Version=7.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].VisitCallSite(Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceCallSite, Microsoft.Extensions.DependencyInjection.ServiceLookup.RuntimeResolverContext)
at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.Resolve(Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceCallSite, Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceProviderEngineScope)
at Microsoft.Extensions.DependencyInjection.ServiceProvider.CreateServiceAccessor(Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceIdentifier)
at System.Collections.Concurrent.ConcurrentDictionary`2[[Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceIdentifier, Microsoft.Extensions.DependencyInjection, Version=8.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60],[System.__Canon, System.Private.CoreLib, Version=7.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].GetOrAdd(Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceIdentifier, System.Func`2<Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceIdentifier,System.__Canon>)
at Microsoft.Extensions.DependencyInjection.ServiceProvider.GetService(Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceIdentifier, Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceProviderEngineScope)
at Microsoft.Extensions.DependencyInjection.ServiceProvider.GetService(System.Type)
at Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService(System.IServiceProvider, System.Type)
at Microsoft.Extensions.Hosting.HostBuilder+<>c__DisplayClass35_0.<PopulateServiceCollection>b__2(System.IServiceProvider)
at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitRootCache(Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceCallSite, Microsoft.Extensions.DependencyInjection.ServiceLookup.RuntimeResolverContext)
at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteVisitor`2[[Microsoft.Extensions.DependencyInjection.ServiceLookup.RuntimeResolverContext, Microsoft.Extensions.DependencyInjection, Version=8.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60],[System.__Canon, System.Private.CoreLib, Version=7.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].VisitCallSite(Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceCallSite, Microsoft.Extensions.DependencyInjection.ServiceLookup.RuntimeResolverContext)
at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.Resolve(Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceCallSite, Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceProviderEngineScope)
at Microsoft.Extensions.DependencyInjection.ServiceProvider.CreateServiceAccessor(Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceIdentifier)
at System.Collections.Concurrent.ConcurrentDictionary`2[[Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceIdentifier, Microsoft.Extensions.DependencyInjection, Version=8.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60],[System.__Canon, System.Private.CoreLib, Version=7.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].GetOrAdd(Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceIdentifier, System.Func`2<Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceIdentifier,System.__Canon>)
at Microsoft.Extensions.DependencyInjection.ServiceProvider.GetService(Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceIdentifier, Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceProviderEngineScope)
at Microsoft.Extensions.DependencyInjection.ServiceProvider.GetService(System.Type)
at Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService(System.IServiceProvider, System.Type)
at Microsoft.Extensions.Hosting.HostBuilder.ResolveHost(System.IServiceProvider, System.Diagnostics.DiagnosticListener)
at Microsoft.Extensions.Hosting.HostBuilder.Build()
at System.Linq.Utilities+<>c__DisplayClass2_0`3[[System.__Canon, System.Private.CoreLib, Version=7.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[System.__Canon, System.Private.CoreLib, Version=7.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[System.__Canon, System.Private.CoreLib, Version=7.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].<CombineSelectors>b__0(System.__Canon)
at System.Linq.Enumerable+SelectArrayIterator`2[[System.__Canon, System.Private.CoreLib, Version=7.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[System.__Canon, System.Private.CoreLib, Version=7.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].MoveNext()
at System.Threading.Tasks.Task.WhenAll(System.Collections.Generic.IEnumerable`1<System.Threading.Tasks.Task>)
at ServiceBase.ServiceHost+<RunBackgroundServices>d__1.MoveNext()
at System.Runtime.CompilerServices.AsyncMethodBuilderCore.Start[[ServiceBase.ServiceHost+<RunBackgroundServices>d__1, ServiceBase, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]](<RunBackgroundServices>d__1 ByRef)
at ServiceBase.ServiceHost.RunBackgroundServices(System.Collections.Generic.IEnumerable`1<System.Action`2<Microsoft.Extensions.Hosting.HostBuilderContext,Microsoft.Extensions.DependencyInjection.IServiceCollection>>)
at Program+<<Main>$>d__0.MoveNext()
at System.Runtime.CompilerServices.AsyncMethodBuilderCore.Start[[Program+<<Main>$>d__0, ItemWorker, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]](<<Main>$>d__0 ByRef)
at Program.<Main>$(System.String[])
at Program.<Main>(System.String[])
That's pretty hard to diagnose especially without any backing code that is producing this problem.
In common usage the latest version of the code doesn't / shouldn't produce stack-overflow exceptions within the Dispose method.
Are you using a ConcurrentDictionary
to keep track of the dependencies? Are you trying to reload the logging configuration / logger?
Are you sure that the issue occurs only with the latest version? Would reverting to a prior version resolve the issue?
Thanks for getting back to me, and sorry for dumping a half-baked issue on you :) I'll do some proper digging and local debugging and let you know how I get on. It's a hugely useful extension for us, so we're really missing it.
We're running into the same problem. We started experiencing it after upgrading from dotnet6 to dotnet8 and updating SlackSink to 2.2.2. Downgrading SlackSink back to the original version 2.2.1 doesn't have any impact. We only get the error spam when the host stopped.
Edit: when I downgrade back to dotnet6, there's no more StackoverflowException with the same SlackSink version.
I'm seeing this same issue in a .NET WebJob. We are using a similar stack to any other WebJob where we don't see the behavior but in this one we do. As soon as the host unloads it dumps a long error stack to the console like this:
[16:16:00 INF] Job host stopped Stack overflow. at Serilog.Sinks.PeriodicBatching.PeriodicBatchingSink.SignalShutdown() at Serilog.Sinks.PeriodicBatching.PeriodicBatchingSink.Dispose() at Serilog.Sinks.Slack.SlackSink.Dispose(Boolean) at Serilog.Sinks.Slack.SlackSink.Dispose() at Serilog.Sinks.PeriodicBatching.PeriodicBatchingSink.Dispose() at Serilog.Sinks.Slack.SlackSink.Dispose(Boolean) at Serilog.Sinks.Slack.SlackSink.Dispose() at Serilog.Sinks.PeriodicBatching.PeriodicBatchingSink.Dispose() at Serilog.Sinks.Slack.SlackSink.Dispose(Boolean) at Serilog.Sinks.Slack.SlackSink.Dispose() at Serilog.Sinks.PeriodicBatching.PeriodicBatchingSink.Dispose() at Serilog.Sinks.Slack.SlackSink.Dispose(Boolean) at Serilog.Sinks.Slack.SlackSink.Dispose() at Serilog.Sinks.PeriodicBatching.PeriodicBatchingSink.Dispose() at Serilog.Sinks.Slack.SlackSink.Dispose(Boolean) at Serilog.Sinks.Slack.SlackSink.Dispose() at Serilog.Sinks.PeriodicBatching.PeriodicBatchingSink.Dispose() at Serilog.Sinks.Slack.SlackSink.Dispose(Boolean) at Serilog.Sinks.Slack.SlackSink.Dispose() at Serilog.Sinks.PeriodicBatching.PeriodicBatchingSink.Dispose() at Serilog.Sinks.Slack.SlackSink.Dispose(Boolean) at Serilog.Sinks.Slack.SlackSink.Dispose() at Serilog.Sinks.PeriodicBatching.PeriodicBatchingSink.Dispose() at Serilog.Sinks.Slack.SlackSink.Dispose(Boolean) at Serilog.Sinks.Slack.SlackSink.Dispose() at Serilog.Sinks.PeriodicBatching.PeriodicBatchingSink.Dispose() at Serilog.Sinks.Slack.SlackSink.Dispose(Boolean) at Serilog.Sinks.Slack.SlackSink.Dispose() at Serilog.Sinks.PeriodicBatching.PeriodicBatchingSink.Dispose() at Serilog.Sinks.Slack.SlackSink.Dispose(Boolean) at Serilog.Sinks.Slack.SlackSink.Dispose() at Serilog.Sinks.PeriodicBatching.PeriodicBatchingSink.Dispose() at Serilog.Sinks.Slack.SlackSink.Dispose(Boolean) at Serilog.Sinks.Slack.SlackSink.Dispose() at Serilog.Sinks.PeriodicBatching.PeriodicBatchingSink.Dispose() at Serilog.Sinks.Slack.SlackSink.Dispose(Boolean) at Serilog.Sinks.Slack.SlackSink.Dispose() at Serilog.Sinks.PeriodicBatching.PeriodicBatchingSink.Dispose() at Serilog.Sinks.Slack.SlackSink.Dispose(Boolean) at Serilog.Sinks.Slack.SlackSink.Dispose() at Serilog.Sinks.PeriodicBatching.PeriodicBatchingSink.Dispose() at Serilog.Sinks.Slack.SlackSink.Dispose(Boolean) at Serilog.Sinks.Slack.SlackSink.Dispose() at Serilog.Sinks.PeriodicBatching.PeriodicBatchingSink.Dispose() at Serilog.Sinks.Slack.SlackSink.Dispose(Boolean) at Serilog.Sinks.Slack.SlackSink.Dispose() at Serilog.Sinks.PeriodicBatching.PeriodicBatchingSink.Dispose() at Serilog.Sinks.Slack.SlackSink.Dispose(Boolean) at Serilog.Sinks.Slack.SlackSink.Dispose() at Serilog.Sinks.PeriodicBatching.PeriodicBatchingSink.Dispose() at Serilog.Sinks.Slack.SlackSink.Dispose(Boolean) at Serilog.Sinks.Slack.SlackSink.Dispose() at Serilog.Sinks.PeriodicBatching.PeriodicBatchingSink.Dispose() at Serilog.Sinks.Slack.SlackSink.Dispose(Boolean) at Serilog.Sinks.Slack.SlackSink.Dispose() at Serilog.Sinks.PeriodicBatching.PeriodicBatchingSink.Dispose() at Serilog.Sinks.Slack.SlackSink.Dispose(Boolean) at Serilog.Sinks.Slack.SlackSink.Dispose() at Serilog.Sinks.PeriodicBatching.PeriodicBatchingSink.Dispose() at Serilog.Sinks.Slack.SlackSink.Dispose(Boolean) at Serilog.Sinks.Slack.SlackSink.Dispose() at Serilog.Sinks.PeriodicBatching.PeriodicBatchingSink.Dispose() at Serilog.Sinks.Slack.SlackSink.Dispose(Boolean) at Serilog.Sinks.Slack.SlackSink.Dispose() at Serilog.Sinks.PeriodicBatching.PeriodicBatchingSink.Dispose() at Serilog.Sinks.Slack.SlackSink.Dispose(Boolean) at Serilog.Sinks.Slack.SlackSink.Dispose() at Serilog.Sinks.PeriodicBatching.PeriodicBatchingSink.Dispose() at Serilog.Sinks.Slack.SlackSink.Dispose(Boolean) at Serilog.Sinks.Slack.SlackSink.Dispose() at Serilog.Sinks.PeriodicBatching.PeriodicBatchingSink.Dispose() at Serilog.Sinks.Slack.SlackSink.Dispose(Boolean) at Serilog.Sinks.Slack.SlackSink.Dispose() at Serilog.Sinks.PeriodicBatching.PeriodicBatchingSink.Dispose() at Serilog.Sinks.Slack.SlackSink.Dispose(Boolean) at Serilog.Sinks.Slack.SlackSink.Dispose() at Serilog.Sinks.PeriodicBatching.PeriodicBatchingSink.Dispose() at Serilog.Sinks.Slack.SlackSink.Dispose(Boolean) at Serilog.Sinks.Slack.SlackSink.Dispose() at Serilog.Sinks.PeriodicBatching.PeriodicBatchingSink.Dispose() at Serilog.Sinks.Slack.SlackSink.Dispose(Boolean) at Serilog.Sinks.Slack.SlackSink.Dispose() at Serilog.Sinks.PeriodicBatching.PeriodicBatchingSink.Dispose() at Serilog.Sinks.Slack.SlackSink.Dispose(Boolean) at Serilog.Sinks.Slack.SlackSink.Dispose() at Serilog.Sinks.PeriodicBatching.PeriodicBatchingSink.Dispose() at Serilog.Sinks.Slack.SlackSink.Dispose(Boolean) at Serilog.Sinks.Slack.SlackSink.Dispose() at Serilog.Sinks.PeriodicBatching.PeriodicBatchingSink.Dispose() at Serilog.Sinks.Slack.SlackSink.Dispose(Boolean) at Serilog.Sinks.Slack.SlackSink.Dispose() at Serilog.Sinks.PeriodicBatching.PeriodicBatchingSink.Dispose() at Serilog.Sinks.Slack.SlackSink.Dispose(Boolean) at Serilog.Sinks.Slack.SlackSink.Dispose() at Serilog.Sinks.PeriodicBatching.PeriodicBatchingSink.Dispose() at Serilog.Sinks.Slack.SlackSink.Dispose(Boolean) at Serilog.Sinks.Slack.SlackSink.Dispose() at Serilog.Sinks.PeriodicBatching.PeriodicBatchingSink.Dispose() at Serilog.Sinks.Slack.SlackSink.Dispose(Boolean) at Serilog.Sinks.Slack.SlackSink.Dispose() at Serilog.Sinks.PeriodicBatching.PeriodicBatchingSink.Dispose() at Serilog.Sinks.Slack.SlackSink.Dispose(Boolean) at Serilog.Sinks.Slack.SlackSink.Dispose() at Serilog.Sinks.PeriodicBatching.PeriodicBatchingSink.Dispose() at Serilog.Sinks.Slack.SlackSink.Dispose(Boolean) at Serilog.Sinks.Slack.SlackSink.Dispose() at Serilog.Sinks.PeriodicBatching.PeriodicBatchingSink.Dispose() ... at Serilog.Sinks.PeriodicBatching.PeriodicBatchingSink.Dispose() at Serilog.Sinks.Slack.SlackSink.Dispose(Boolean) at Serilog.Sinks.Slack.SlackSink.Dispose() at Serilog.Sinks.PeriodicBatching.PeriodicBatchingSink.Dispose() at Serilog.Sinks.Slack.SlackSink.Dispose(Boolean) at Serilog.Sinks.Slack.SlackSink.Dispose() at Serilog.LoggerConfiguration+<>c__DisplayClass33_0.<CreateLogger>g__Dispose|1() at Serilog.Core.Logger.Dispose() at Serilog.Log.CloseAndFlush() at Serilog.Extensions.Logging.SerilogLoggerProvider.Dispose() at Serilog.Extensions.Logging.SerilogLoggerFactory.Dispose() at JasperFx.Core.DisposableExtensions.SafeDispose(System.IDisposable) at Lamar.IoC.Scope+<DisposeAsync>d__28.MoveNext() at System.Runtime.CompilerServices.AsyncMethodBuilderCore.Start[[Lamar.IoC.Scope+<DisposeAsync>d__28, Lamar, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null]](<DisposeAsync>d__28 ByRef) at System.Runtime.CompilerServices.AsyncValueTaskMethodBuilder.Start[[Lamar.IoC.Scope+<DisposeAsync>d__28, Lamar, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null]](<DisposeAsync>d__28 ByRef) at Lamar.IoC.Scope.DisposeAsync() at Lamar.Container.<>n__0() at Lamar.Container+<DisposeAsync>d__7.MoveNext() at System.Runtime.CompilerServices.AsyncMethodBuilderCore.Start[[Lamar.Container+<DisposeAsync>d__7, Lamar, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null]](<DisposeAsync>d__7 ByRef) at System.Runtime.CompilerServices.AsyncValueTaskMethodBuilder.Start[[Lamar.Container+<DisposeAsync>d__7, Lamar, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null]](<DisposeAsync>d__7 ByRef) at Lamar.Container.DisposeAsync() at Microsoft.Extensions.Hosting.Internal.Host+<<DisposeAsync>g__DisposeAsync|21_0>d.MoveNext() at System.Runtime.CompilerServices.AsyncMethodBuilderCore.Start[[Microsoft.Extensions.Hosting.Internal.Host+<<DisposeAsync>g__DisposeAsync|21_0>d, Microsoft.Extensions.Hosting, Version=8.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60]](<<DisposeAsync>g__DisposeAsync|21_0>d ByRef) at System.Runtime.CompilerServices.AsyncValueTaskMethodBuilder.Start[[Microsoft.Extensions.Hosting.Internal.Host+<<DisposeAsync>g__DisposeAsync|21_0>d, Microsoft.Extensions.Hosting, Version=8.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60]](<<DisposeAsync>g__DisposeAsync|21_0>d ByRef) at Microsoft.Extensions.Hosting.Internal.Host.<DisposeAsync>g__DisposeAsync|21_0(System.Object) at Microsoft.Extensions.Hosting.Internal.Host+<DisposeAsync>d__21.MoveNext() at System.Runtime.CompilerServices.AsyncMethodBuilderCore.Start[[Microsoft.Extensions.Hosting.Internal.Host+<DisposeAsync>d__21, Microsoft.Extensions.Hosting, Version=8.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60]](<DisposeAsync>d__21 ByRef) at System.Runtime.CompilerServices.AsyncValueTaskMethodBuilder.Start[[Microsoft.Extensions.Hosting.Internal.Host+<DisposeAsync>d__21, Microsoft.Extensions.Hosting, Version=8.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60]](<DisposeAsync>d__21 ByRef) at Microsoft.Extensions.Hosting.Internal.Host.DisposeAsync() at Microsoft.Extensions.Hosting.HostingAbstractionsHostExtensions+<RunAsync>d__4.MoveNext() at System.Runtime.CompilerServices.AsyncTaskMethodBuilder
1+AsyncStateMachineBox1[[System.Threading.Tasks.VoidTaskResult, System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[Microsoft.Extensions.Hosting.HostingAbstractionsHostExtensions+<RunAsync>d__4, Microsoft.Extensions.Hosting.Abstractions, Version=8.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60]].ExecutionContextCallback(System.Object) at System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object) at System.Runtime.CompilerServices.AsyncTaskMethodBuilder
1+AsyncStateMachineBox1[[System.Threading.Tasks.VoidTaskResult, System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[Microsoft.Extensions.Hosting.HostingAbstractionsHostExtensions+<RunAsync>d__4, Microsoft.Extensions.Hosting.Abstractions, Version=8.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60]].MoveNext(System.Threading.Thread) at System.Runtime.CompilerServices.AsyncTaskMethodBuilder
1+AsyncStateMachineBox1[[System.Threading.Tasks.VoidTaskResult, System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[Microsoft.Extensions.Hosting.HostingAbstractionsHostExtensions+<RunAsync>d__4, Microsoft.Extensions.Hosting.Abstractions, Version=8.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60]].MoveNext() at System.Runtime.CompilerServices.TaskAwaiter+<>c.<OutputWaitEtwEvents>b__12_0(System.Action, System.Threading.Tasks.Task) at System.Threading.Tasks.AwaitTaskContinuation.RunOrScheduleAction(System.Action, Boolean) at System.Threading.Tasks.Task.RunContinuations(System.Object) at System.Runtime.CompilerServices.AsyncTaskMethodBuilder
1[[System.Threading.Tasks.VoidTaskResult, System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].SetExistingTaskResult(System.Threading.Tasks.Task1<System.Threading.Tasks.VoidTaskResult>, System.Threading.Tasks.VoidTaskResult) at System.Runtime.CompilerServices.AsyncTaskMethodBuilder.SetResult() at Microsoft.Extensions.Hosting.HostingAbstractionsHostExtensions+<WaitForShutdownAsync>d__5.MoveNext() at System.Runtime.CompilerServices.AsyncTaskMethodBuilder
1+AsyncStateMachineBox1[[System.Threading.Tasks.VoidTaskResult, System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[Microsoft.Extensions.Hosting.HostingAbstractionsHostExtensions+<WaitForShutdownAsync>d__5, Microsoft.Extensions.Hosting.Abstractions, Version=8.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60]].ExecutionContextCallback(System.Object) at System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object) at System.Runtime.CompilerServices.AsyncTaskMethodBuilder
1+AsyncStateMachineBox1[[System.Threading.Tasks.VoidTaskResult, System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[Microsoft.Extensions.Hosting.HostingAbstractionsHostExtensions+<WaitForShutdownAsync>d__5, Microsoft.Extensions.Hosting.Abstractions, Version=8.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60]].MoveNext(System.Threading.Thread) at System.Runtime.CompilerServices.AsyncTaskMethodBuilder
1+AsyncStateMachineBox1[[System.Threading.Tasks.VoidTaskResult, System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[Microsoft.Extensions.Hosting.HostingAbstractionsHostExtensions+<WaitForShutdownAsync>d__5, Microsoft.Extensions.Hosting.Abstractions, Version=8.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60]].MoveNext() at System.Runtime.CompilerServices.TaskAwaiter+<>c.<OutputWaitEtwEvents>b__12_0(System.Action, System.Threading.Tasks.Task) at System.Threading.Tasks.AwaitTaskContinuation.RunOrScheduleAction(System.Action, Boolean) at System.Threading.Tasks.Task.RunContinuations(System.Object) at System.Runtime.CompilerServices.AsyncTaskMethodBuilder
1[[System.Threading.Tasks.VoidTaskResult, System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].SetExistingTaskResult(System.Threading.Tasks.Task1<System.Threading.Tasks.VoidTaskResult>, System.Threading.Tasks.VoidTaskResult) at System.Runtime.CompilerServices.AsyncTaskMethodBuilder.SetResult() at Microsoft.Extensions.Hosting.Internal.Host+<StopAsync>d__17.MoveNext() at System.Runtime.CompilerServices.AsyncTaskMethodBuilder
1+AsyncStateMachineBox1[[System.Threading.Tasks.VoidTaskResult, System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[Microsoft.Extensions.Hosting.Internal.Host+<StopAsync>d__17, Microsoft.Extensions.Hosting, Version=8.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60]].ExecutionContextCallback(System.Object) at System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object) at System.Runtime.CompilerServices.AsyncTaskMethodBuilder
1+AsyncStateMachineBox1[[System.Threading.Tasks.VoidTaskResult, System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[Microsoft.Extensions.Hosting.Internal.Host+<StopAsync>d__17, Microsoft.Extensions.Hosting, Version=8.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60]].MoveNext(System.Threading.Thread) at System.Runtime.CompilerServices.AsyncTaskMethodBuilder
1+AsyncStateMachineBox1[[System.Threading.Tasks.VoidTaskResult, System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[Microsoft.Extensions.Hosting.Internal.Host+<StopAsync>d__17, Microsoft.Extensions.Hosting, Version=8.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60]].MoveNext() at System.Runtime.CompilerServices.TaskAwaiter+<>c.<OutputWaitEtwEvents>b__12_0(System.Action, System.Threading.Tasks.Task) at System.Threading.Tasks.AwaitTaskContinuation.RunOrScheduleAction(System.Action, Boolean) at System.Threading.Tasks.Task.RunContinuations(System.Object) at System.Runtime.CompilerServices.AsyncTaskMethodBuilder
1[[System.Threading.Tasks.VoidTaskResult, System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].SetExistingTaskResult(System.Threading.Tasks.Task1<System.Threading.Tasks.VoidTaskResult>, System.Threading.Tasks.VoidTaskResult) at System.Runtime.CompilerServices.AsyncTaskMethodBuilder.SetResult() at Microsoft.Extensions.Hosting.Internal.Host+<ForeachService>d__18
1[[System.__Canon, System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].MoveNext()
at System.Runtime.CompilerServices.AsyncTaskMethodBuilder1+AsyncStateMachineBox
1[[System.Threading.Tasks.VoidTaskResult, System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[Microsoft.Extensions.Hosting.Internal.Host+<ForeachService>d__181[[System.__Canon, System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]], Microsoft.Extensions.Hosting, Version=8.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60]].ExecutionContextCallback(System.Object) at System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object) at System.Runtime.CompilerServices.AsyncTaskMethodBuilder
1+AsyncStateMachineBox1[[System.Threading.Tasks.VoidTaskResult, System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[Microsoft.Extensions.Hosting.Internal.Host+<ForeachService>d__18
1[[System.__Canon, System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]], Microsoft.Extensions.Hosting, Version=8.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60]].MoveNext(System.Threading.Thread)
at System.Runtime.CompilerServices.AsyncTaskMethodBuilder1+AsyncStateMachineBox
1[[System.Threading.Tasks.VoidTaskResult, System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[Microsoft.Extensions.Hosting.Internal.Host+<ForeachService>d__181[[System.__Canon, System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]], Microsoft.Extensions.Hosting, Version=8.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60]].MoveNext() at System.Runtime.CompilerServices.TaskAwaiter+<>c.<OutputWaitEtwEvents>b__12_0(System.Action, System.Threading.Tasks.Task) at System.Threading.Tasks.AwaitTaskContinuation.RunOrScheduleAction(System.Action, Boolean) at System.Threading.Tasks.Task.RunContinuations(System.Object) at System.Runtime.CompilerServices.AsyncTaskMethodBuilder
1[[System.Threading.Tasks.VoidTaskResult, System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].SetExistingTaskResult(System.Threading.Tasks.Task1<System.Threading.Tasks.VoidTaskResult>, System.Threading.Tasks.VoidTaskResult) at System.Runtime.CompilerServices.AsyncTaskMethodBuilder.SetResult() at Microsoft.Azure.WebJobs.Hosting.OptionsLoggingService+<StopAsync>d__6.MoveNext() at System.Runtime.CompilerServices.AsyncTaskMethodBuilder
1+AsyncStateMachineBox1[[System.Threading.Tasks.VoidTaskResult, System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[Microsoft.Azure.WebJobs.Hosting.OptionsLoggingService+<StopAsync>d__6, Microsoft.Azure.WebJobs.Host, Version=3.0.39.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]].ExecutionContextCallback(System.Object) at System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object) at System.Runtime.CompilerServices.AsyncTaskMethodBuilder
1+AsyncStateMachineBox1[[System.Threading.Tasks.VoidTaskResult, System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[Microsoft.Azure.WebJobs.Hosting.OptionsLoggingService+<StopAsync>d__6, Microsoft.Azure.WebJobs.Host, Version=3.0.39.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]].MoveNext(System.Threading.Thread) at System.Runtime.CompilerServices.AsyncTaskMethodBuilder
1+AsyncStateMachineBox1[[System.Threading.Tasks.VoidTaskResult, System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[Microsoft.Azure.WebJobs.Hosting.OptionsLoggingService+<StopAsync>d__6, Microsoft.Azure.WebJobs.Host, Version=3.0.39.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]].MoveNext() at System.Runtime.CompilerServices.TaskAwaiter+<>c.<OutputWaitEtwEvents>b__12_0(System.Action, System.Threading.Tasks.Task) at System.Threading.Tasks.AwaitTaskContinuation.RunOrScheduleAction(System.Action, Boolean) at System.Threading.Tasks.Task.RunContinuations(System.Object) at System.Runtime.CompilerServices.AsyncTaskMethodBuilder
1[[System.Threading.Tasks.VoidTaskResult, System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].SetExistingTaskResult(System.Threading.Tasks.Task1<System.Threading.Tasks.VoidTaskResult>, System.Threading.Tasks.VoidTaskResult) at System.Runtime.CompilerServices.AsyncTaskMethodBuilder.SetResult() at Microsoft.Azure.WebJobs.Hosting.OptionsLoggingService+<ProcessLogs>d__7.MoveNext() at System.Runtime.CompilerServices.AsyncTaskMethodBuilder
1+AsyncStateMachineBox1[[System.Threading.Tasks.VoidTaskResult, System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[Microsoft.Azure.WebJobs.Hosting.OptionsLoggingService+<ProcessLogs>d__7, Microsoft.Azure.WebJobs.Host, Version=3.0.39.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]].ExecutionContextCallback(System.Object) at System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object) at System.Runtime.CompilerServices.AsyncTaskMethodBuilder
1+AsyncStateMachineBox1[[System.Threading.Tasks.VoidTaskResult, System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[Microsoft.Azure.WebJobs.Hosting.OptionsLoggingService+<ProcessLogs>d__7, Microsoft.Azure.WebJobs.Host, Version=3.0.39.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]].MoveNext(System.Threading.Thread) at System.Runtime.CompilerServices.AsyncTaskMethodBuilder
1+AsyncStateMachineBox1[[System.Threading.Tasks.VoidTaskResult, System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[Microsoft.Azure.WebJobs.Hosting.OptionsLoggingService+<ProcessLogs>d__7, Microsoft.Azure.WebJobs.Host, Version=3.0.39.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]].MoveNext() at System.Runtime.CompilerServices.TaskAwaiter+<>c.<OutputWaitEtwEvents>b__12_0(System.Action, System.Threading.Tasks.Task) at System.Threading.Tasks.AwaitTaskContinuation.System.Threading.IThreadPoolWorkItem.Execute() at System.Threading.ThreadPoolWorkQueue.Dispatch() at System.Threading.PortableThreadPool+WorkerThread.WorkerThreadStart()
Thank you for that. Could you kindly confirm that downgrading to 2.2.1 resolves this issue for you too @jdub4237 ?