I have come across an issue with our ASP.NET application where occasionally a nightly recycle cases the w3wp to hang.
This is what happens:
Recycle is triggered. obviously this forces ThreadAbortException on all running threads. However, it doesn't seem to trigger a new w3wp, or it is the new w3wp that actually throws the exception (haven't been able to reproduce it yet).
In my logs I get a lot of ThreadAbortException, and the thread count just goes up and up indefinitely, meaning that any new request spawns a new thread that never finishes. If this would have been the old w3wp, any new request would be routed to the newly started w3wp.
Neither the shutdown timeout nor the rapid-fail protection seems to trigger as well, leaving the saite unavailable until it is manually recycled. Most of the time it also eats up a lot of CPU leaving the server almost unusable as well.
We are using Monorail MVC which probably doesn't have anything to do with it, however we do utilize their RescueController system. If we we're to unintentionally catch the ThreadAbortException in our error handling, could that cause a infinite loop that would hang the w3wp so badly that IIS cant recover from it?