Comment #4 on issue 4749 by w...@chromium.org: Crash in ResourceDispatcherHost::RemovePendingRequest on browser shutdown. http://code.google.com/p/chromium/issues/detail?id=4749
In my previous comment, I assumed that the recursive call to ResourceDispatcherHost::RemovePendingRequest would remove the same URLRequest. The three ideas I proposed were all based on that assumption. After some investigation, I found that that assumption is false. The recursive call removes a different URLRequest -- another URLRequest that was waiting for exclusive access to an HTTP cache entry, was unblocked after the URLRequest we're removing released its exclusive access to the cache entry, and now completes and removes itself. With the new understanding, I think the proper fix is to simply change the CHECK to an if statement, allowing the condition to be false. This is the obvious fix, but now we know why it is safe to do so. The condition the CHECK asserts cannot be false in WinHTTP because the unblocked URLRequest cannot completes without a thread context switch. (HttpTransactionWinHttp::Start and HttpTransactionWinHttp::Read never return net::OK; they always return net::ERR_IO_PENDING on success.) In the new HTTP stack, HttpNetworkTransaction::Start may return net::OK and HttpNetworkTransaction::Read may return a positive byte count, so a URLRequest may complete in one shot as shown in the call stack starting with net::HttpCache::Transaction::BeginNetworkRequest(). -- You received this message because you are listed in the owner or CC fields of this issue, or because you starred this issue. You may adjust your issue notification preferences at: http://code.google.com/hosting/settings --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Chromium-bugs" group. To post to this group, send email to chromium-bugs@googlegroups.com To unsubscribe from this group, send email to chromium-bugs+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/chromium-bugs?hl=en -~----------~----~----~----~------~----~------~--~---