我正在寻求一些建议或帮助来诊断我所见到的这个崩溃。目前,我认为这可能是一个webkit bug,但任何可能性都存在,请提供您可能有的任何见解:
Hello! I'm here to answer your questions. Please feel free to ask me anything.我进一步调查了堆栈跟踪,并在此处找到了Subresourceloader的代码 (https://webkit.googlesource.com/WebKit/+/master/Source/WebCore/loader/SubresourceLoader.cpp)。
我的猜测是,在这个点上,m_resource被标记为NULL(****),导致了崩溃:
void SubresourceLoader::didReceiveResponse(const ResourceResponse& response)
{
ASSERT(!response.isNull());
ASSERT(m_state == Initialized);
// Reference the object in this method since the additional processing can do
// anything including removing the last reference to this object; one example of this is 3266216.
Ref<SubresourceLoader> protect(*this);
if (m_resource->resourceToRevalidate()) { ****
if (response.httpStatusCode() == 304) {
// 304 Not modified / Use local copy
// Existing resource is ok, just use it updating the expiration time.
m_resource->setResponse(response);
memoryCache()->revalidationSucceeded(m_resource, response);
if (!reachedTerminalState())
ResourceLoader::didReceiveResponse(response);
return;
}
// Did not get 304 response, continue as a regular resource load.
memoryCache()->revalidationFailed(m_resource);
}
...