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
-~----------~----~----~----~------~----~------~--~---

Reply via email to