Changeset 93871 in webkit
- Timestamp:
- Aug 26, 2011, 6:15:00 AM (14 years ago)
- Location:
- trunk/Source/WebCore
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r93870 r93871 1 2011-08-26 Gavin Peters <gavinp@chromium.org> 2 3 add a state enumeration to track down cause of null CachedScript execution 4 https://bugs.webkit.org/show_bug.cgi?id=66939 5 6 Reviewed by Alexey Proskuryakov. 7 8 Over in http://code.google.com/p/chromium/issues/detail?id=75604 I 9 have a bug I cannot reproduce. I added an earlier crash in 10 https://bugs.webkit.org/show_bug.cgi?id=65563 , and we've since 11 gotten many good stacks, all coming in through a failed request that 12 eventually calls notifyFinished() on a ScriptElement with a NULL 13 m_cachedScript. 14 15 I'd like to know how this got NULL. This enumeration should let 16 me find that in stack dumps from reproductions. 17 18 No new tests, as my goal here is to get telemetry on a bug that I cannot reproduce. 19 20 * dom/ScriptElement.cpp: 21 (WebCore::ScriptElement::ScriptElement): 22 (WebCore::ScriptElement::requestScript): 23 (WebCore::ScriptElement::stopLoadRequest): 24 (WebCore::ScriptElement::notifyFinished): 25 * dom/ScriptElement.h: 26 1 27 2011-08-26 Mike Reed <reed@google.com> 2 28 -
trunk/Source/WebCore/dom/ScriptElement.cpp
r91382 r93871 65 65 , m_forceAsync(!parserInserted) 66 66 , m_willExecuteInOrder(false) 67 , m_cachedScriptState(NeverSet) 67 68 { 68 69 ASSERT(m_element); … … 259 260 m_isExternalScript = true; 260 261 261 if (m_cachedScript) 262 if (m_cachedScript) { 263 ASSERT(m_cachedScriptState == NeverSet); 264 m_cachedScriptState = Set; 262 265 return true; 266 } 263 267 264 268 dispatchErrorEvent(); … … 296 300 if (!m_willBeParserExecuted) 297 301 m_cachedScript->removeClient(this); 302 ASSERT(m_cachedScriptState == Set); 303 m_cachedScriptState = ZeroedInStopLoadRequest; 298 304 m_cachedScript = 0; 299 305 } … … 321 327 else 322 328 m_element->document()->scriptRunner()->queueScriptForExecution(this, m_cachedScript, ScriptRunner::ASYNC_EXECUTION); 329 330 ASSERT(m_cachedScriptState == Set); 331 m_cachedScriptState = ZeroedInNotifyFinished; 323 332 m_cachedScript = 0; 324 333 } -
trunk/Source/WebCore/dom/ScriptElement.h
r84357 r93871 105 105 String m_characterEncoding; 106 106 String m_fallbackCharacterEncoding; 107 108 // Temporary: intended to help debug how we get notifyFinished() called when m_cachedScript is null, 109 // which seems to sometimes happen (see http://code.google.com/p/chromium/issues/detail?id=75604 ) 110 enum { 111 NeverSet, 112 Set, 113 ZeroedInStopLoadRequest, 114 ZeroedInNotifyFinished, 115 } m_cachedScriptState; 107 116 }; 108 117
Note:
See TracChangeset
for help on using the changeset viewer.