Skip to content
This repository has been archived by the owner on Dec 18, 2018. It is now read-only.

'WriteReqPool'.) (Cannot access a disposed object. #1112

Closed
benaadams opened this issue Sep 17, 2016 · 10 comments
Closed

'WriteReqPool'.) (Cannot access a disposed object. #1112

benaadams opened this issue Sep 17, 2016 · 10 comments
Assignees

Comments

@benaadams
Copy link
Contributor

During shutdown I received these errors (version 1.1.0-alpha1-22157)

Application is shutting down...

Unhandled Exception: System.AggregateException: One or more errors occurred. (Cannot access a disposed object.
Object name: 'WriteReqPool'.) (Cannot access a disposed object.
Object name: 'WriteReqPool'.) (Cannot access a disposed object.
Object name: 'WriteReqPool'.) (Cannot access a disposed object.
Object name: 'WriteReqPool'.) (Cannot access a disposed object.
Object name: 'WriteReqPool'.) (Cannot access a disposed object.
Object name: 'WriteReqPool'.) (Cannot access a disposed object.
Object name: 'WriteReqPool'.) (Cannot access a disposed object.
Object name: 'WriteReqPool'.) (Cannot access a disposed object.
Object name: 'WriteReqPool'.) (Cannot access a disposed object.
Object name: 'WriteReqPool'.) (Cannot access a disposed object.
Object name: 'WriteReqPool'.) (Cannot access a disposed object.
Object name: 'WriteReqPool'.) (Cannot access a disposed object.
Object name: 'WriteReqPool'.) (Cannot access a disposed object.
Object name: 'WriteReqPool'.) (Cannot access a disposed object.
Object name: 'WriteReqPool'.) ---> System.ObjectDisposedException: Cannot access a disposed object.
Object name: 'WriteReqPool'.
   at Microsoft.AspNetCore.Server.Kestrel.Internal.Infrastructure.WriteReqPool.Allocate()
   at Microsoft.AspNetCore.Server.Kestrel.Internal.Http.SocketOutput.WriteContext.DoWriteIfNeeded()
   at Microsoft.AspNetCore.Server.Kestrel.Internal.Http.SocketOutput.WriteAllPending()
   at Microsoft.AspNetCore.Server.Kestrel.Internal.KestrelThread.DoPostWork()
   at Microsoft.AspNetCore.Server.Kestrel.Internal.KestrelThread.OnPost()
   at Microsoft.AspNetCore.Server.Kestrel.Internal.Networking.Libuv.NativeMethods.uv_run(UvLoopHandle handle, Int32 mode)
   at Microsoft.AspNetCore.Server.Kestrel.Internal.Networking.Libuv.run(UvLoopHandle handle, Int32 mode)
   at Microsoft.AspNetCore.Server.Kestrel.Internal.KestrelThread.ThreadStart(Object parameter)
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at Microsoft.AspNetCore.Server.Kestrel.Internal.KestrelThread.<StopAsync>d__45.MoveNext()
   --- End of inner exception stack trace ---
   at System.ThrowHelper.ThrowAggregateException(List`1 exceptions)
   at System.Threading.Tasks.Task.WaitAll(Task[] tasks, Int32 millisecondsTimeout, CancellationToken cancellationToken)
   at Microsoft.AspNetCore.Server.Kestrel.Internal.KestrelEngine.Dispose()
   at Microsoft.AspNetCore.Server.Kestrel.KestrelServer.Dispose()
   at Microsoft.Extensions.DependencyInjection.ServiceProvider.Dispose()
   at Microsoft.AspNetCore.Hosting.Internal.WebHost.Dispose()
   at Microsoft.AspNetCore.Hosting.WebHostExtensions.Run(IWebHost host, CancellationToken token, String shutdownMessage)
   at Microsoft.AspNetCore.Hosting.WebHostExtensions.Run(IWebHost host)
   at AgeOfAscent.Space.Program.Main(String[] args) in D:\Work\AgeOfAscent.Space.Build\Program.cs:line 32
@benaadams
Copy link
Contributor Author

benaadams commented Sep 17, 2016

Was under very high load previously

@cesarblum
Copy link
Contributor

cesarblum commented Sep 21, 2016

I think we need to ensure the post work queue is empty before posting the WriteReqPool disposal.

@davidfowl
Copy link
Member

Yep.

@cesarblum
Copy link
Contributor

@muratg muratg added this to the 1.1.0 milestone Sep 23, 2016
@muratg muratg modified the milestones: 1.1.0, 1.1.0-preview1 Oct 11, 2016
@muratg muratg modified the milestones: 1.2.0, 1.1.0 Oct 31, 2016
@ayende
Copy link

ayende commented Nov 22, 2016

+1
I also just run into it, the server was under no load at all at the time.

@halter73
Copy link
Member

@ayende Were you referencing Kestrel 1.1.0 from NuGet.org?

@ayende
Copy link

ayende commented Nov 23, 2016

Yes, more specifically:

 "Microsoft.AspNetCore.Server.Kestrel": "1.1.0",

@ayende
Copy link

ayende commented Nov 23, 2016

This might also be related, although I got it on a different machine:
#1231

@ferrx
Copy link

ferrx commented May 3, 2017

info: Microsoft.AspNetCore.Hosting.Internal.WebHost[2]
      

Request finished in 3.5421ms 200 application/json; charset=UTF-8
info: Microsoft.AspNetCore.NodeServices[0]
      

Received SIGINT. Waiting for .NET process to exit...


Application is shutting down...


PS C:\dev\dna\project1> fail: Microsoft.AspNetCore.Server.Kestrel[0]
      
KestrelThread.DoPostWork
System.ObjectDisposedException: Cannot access a disposed object.
Object name: 'WriteReqPool'.
   at Microsoft.AspNetCore.Server.Kestrel.Internal.Infrastructure.WriteReqPool.Allocate()
   at Microsoft.AspNetCore.Server.Kestrel.Internal.Http.SocketOutput.WriteContext.DoWriteIfNeeded()
   at Microsoft.AspNetCore.Server.Kestrel.Internal.Http.SocketOutput.WriteAllPending()
   at Microsoft.AspNetCore.Server.Kestrel.Internal.KestrelThread.DoPostWork()

Unhandled Exception: System.AggregateException: One or more errors occurred. (Cannot access a disposed
 object.
Object name: 'WriteReqPool'.) ---> System.ObjectDisposedException: Cannot access a disposed object.
Object name: 'WriteReqPool'.
   at Microsoft.AspNetCore.Server.Kestrel.Internal.Infrastructure.WriteReqPool.Allocate()
   at Microsoft.AspNetCore.Server.Kestrel.Internal.Http.SocketOutput.WriteContext.DoWriteIfNeeded()
   at Microsoft.AspNetCore.Server.Kestrel.Internal.Http.SocketOutput.WriteAllPending()
   at Microsoft.AspNetCore.Server.Kestrel.Internal.KestrelThread.DoPostWork()
   at Microsoft.AspNetCore.Server.Kestrel.Internal.KestrelThread.OnPost()
   at Microsoft.AspNetCore.Server.Kestrel.Internal.Networking.Libuv.NativeMethods.uv_run(UvLoopHandle
handle, Int32 mode)
   at Microsoft.AspNetCore.Server.Kestrel.Internal.Networking.Libuv.run(UvLoopHandle handle, Int32 mod
e)
   at Microsoft.AspNetCore.Server.Kestrel.Internal.KestrelThread.ThreadStart(Object parameter)
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at Microsoft.AspNetCore.Server.Kestrel.Internal.KestrelThread.<StopAsync>d__45.MoveNext()
   --- End of inner exception stack trace ---

My project.assets.json file shows "Microsoft.AspNetCore.Server.Kestrel": "1.1.0"

Running in Development.

No load at all, just myself. Have WebPack's HotModuleReload running on the site with <PackageReference Include="Microsoft.AspNetCore.SpaServices" Version="1.1.0" /> but I see no evidence that's the cause.

@halter73
Copy link
Member

halter73 commented May 3, 2017

@ferrx This shutdown bug will be fixed in 2.0.0.

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

No branches or pull requests

7 participants