The networking process stops loading pages after some hours of loading random Alexa urls. When this happens we noticed that the process had hit its limit of dispatch queue threads - we had 64 com.apple.WebKit/CFNetwork threads in the Networking process. Networking comes to a stall and no progress is made until the process is killed and restarted. This can happen if ResourceHandleCFURLConnectionDelegateWithOperationQueue code is waiting for a semaphore signal and the web process dies. The cleanup code for ResourceHandleCFURLConnectionDelegateWithOperationQueue does not signal the semaphore and thus the thread just hangs around forever. Eventually, we can accumulate enough threads to hit the queue thread limit.
<rdar://problem/18507382>
Created attachment 239147 [details] Patch
Committed r174244: <http://trac.webkit.org/changeset/174244>