BackgroundHTMLParser::updateDocument里会
Platform::current()->mainThread()->postTask(FROM_HERE,
threadSafeBind(&HTMLDocumentParser::didReceiveEncodingDataFromBackgroundParser, AllowCrossThreadAccess(m_parser), encodingData));
发一个编码名字给主线程,但如果主线程过快的收到资源接收完成的消息:
> node.dll!blink::HTMLDocumentParser::stopBackgroundParser() 行 805 C++ node.dll!blink::HTMLDocumentParser::end() 行 859 C++ node.dll!blink::HTMLDocumentParser::attemptToRunDeferredScriptsAndEnd() 行 873 C++ node.dll!blink::HTMLDocumentParser::prepareToStopParsing() 行 273 C++ node.dll!blink::HTMLDocumentParser::processParsedChunkFromBackgroundParser(WTF::PassOwnPtr<blink::HTMLDocumentParser::ParsedChunk> popChunk) 行 511 C++ node.dll!blink::HTMLDocumentParser::pumpPendingSpeculations() 行 563 C++ node.dll!blink::HTMLDocumentParser::resumeParsingAfterScriptExecution() 行 1000 C++ node.dll!blink::HTMLDocumentParser::notifyScriptLoaded(blink::Resource * cachedResource) 行 1036 C++ node.dll!blink::HTMLScriptRunner::notifyFinished(blink::Resource * cachedResource) 行 200 C++ node.dll!blink::Resource::checkNotify() 行 253 C++ node.dll!blink::Resource::finishOnePart() 行 305 C++ node.dll!blink::Resource::finish() 行 312 C++ node.dll!blink::ResourceLoader::didFinishLoading(blink::WebURLLoader * __formal, double finishTime, __int64 encodedDataLength) 行 476 C++ node.dll!net::WebURLLoaderManager::handleDidFinishLoading(net::WebURLLoaderInternal * job, double finishTime, __int64 totalEncodedDataLength) 行 471 C++
就会关掉这个BackgroundHTMLParser,导致这个HTMLDocumentParser::didReceiveEncodingDataFromBackgroundParser,收不到,从而发生乱码