<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>18803</bug_id>
          
          <creation_ts>2008-04-29 13:56:45 -0700</creation_ts>
          <short_desc>CRASH: ContainerNode::willRemove()  called on deleted node</short_desc>
          <delta_ts>2019-02-06 09:04:02 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>DOM</component>
          <version>525.x (Safari 3.1)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>DUPLICATE</resolution>
          <dup_id>15707</dup_id>
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>HasReduction, InRadar</keywords>
          <priority>P1</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric Seidel (no email)">eric</reporter>
          <assigned_to name="Eric Seidel (no email)">eric</assigned_to>
          <cc>ap</cc>
    
    <cc>cdumez</cc>
    
    <cc>darin</cc>
    
    <cc>mjs</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>79241</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-04-29 13:56:45 -0700</bug_when>
    <thetext>I haven&apos;t looked into detail as to what&apos;s causing the crash, but I have created a reduction (probably could be even smaller).

This is a reduced copy of HTMLFrameElement09.html which started crashing for me when opened it after leaving a debugging alert in selfhtml.js (an overly complicated support file provided by the w3c).  That alert caused my copy of Safari to crash, and I reduced it to this...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>79242</commentid>
    <comment_count>1</comment_count>
      <attachid>20892</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-04-29 13:58:26 -0700</bug_when>
    <thetext>Created attachment 20892
multi-file reduced test case (will crash Safari!)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>79243</commentid>
    <comment_count>2</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-04-29 14:00:38 -0700</bug_when>
    <thetext>function loadComplete() {
        // loadComplete is called by each subframe as it&apos;s loaded (as well as the main document)
	// I think this was an error on the author&apos;s part.
	alert(&quot;Geronimo!&quot;);  // CAUSES CRASH IN SAFARI
	var testNode = document.getElementById(&quot;Frame1&quot;);
	document.open();
}</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>79250</commentid>
    <comment_count>3</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-04-29 15:13:19 -0700</bug_when>
    <thetext>I don&apos;t see this on my mac system, but happens ever time on my windows box.  I haven&apos;t stopped it in the debugger.  It&apos;s probably because I still have heap checking on for Safari from long ago.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>79254</commentid>
    <comment_count>4</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-04-29 16:46:57 -0700</bug_when>
    <thetext>If you run Safari under MallocScribble (on the mac), it&apos;s very easy to reproduce this given the test case.

Exception Type:  EXC_BAD_ACCESS (SIGSEGV)
Exception Codes: KERN_INVALID_ADDRESS at 0x0000000055555555
Crashed Thread:  0

Thread 0 Crashed:
0   com.apple.WebCore             	0x025fb4da WebCore::ContainerNode::willRemove() + 20 (ContainerNode.cpp:347)
1   com.apple.WebCore             	0x02775ee7 WebCore::HTMLFrameOwnerElement::willRemove() + 67 (HTMLFrameOwnerElement.cpp:50)
2   com.apple.WebCore             	0x025fb4eb WebCore::ContainerNode::willRemove() + 37 (ContainerNode.cpp:346)
3   com.apple.WebCore             	0x025fb4eb WebCore::ContainerNode::willRemove() + 37 (ContainerNode.cpp:346)
4   com.apple.WebCore             	0x025fcc4f WebCore::willRemoveChild(WebCore::Node*) + 77 (ContainerNode.cpp:363)
5   com.apple.WebCore             	0x025fcc8c WebCore::ContainerNode::removeChildren() + 48 (ContainerNode.cpp:464)
6   com.apple.WebCore             	0x026896ea WebCore::Document::clear() + 70 (Document.cpp:1702)
7   com.apple.WebCore             	0x0268f246 WebCore::Document::implicitOpen() + 28 (Document.cpp:1438)
8   com.apple.WebCore             	0x0269251f WebCore::Document::open() + 379 (Document.cpp:1416)
9   com.apple.WebCore             	0x02858355 WebCore::JSHTMLDocument::open(KJS::ExecState*, KJS::List const&amp;) + 301 (JSHTMLDocumentCustom.cpp:116)
10  com.apple.WebCore             	0x02856c3c WebCore::jsHTMLDocumentPrototypeFunctionOpen(KJS::ExecState*, KJS::JSObject*, KJS::List const&amp;) + 96 (JSHTMLDocument.cpp:276)
11  com.apple.JavaScriptCore      	0x0044dd5c KJS::PrototypeFunction::callAsFunction(KJS::ExecState*, KJS::JSObject*, KJS::List const&amp;) + 34 (function.cpp:906)
12  com.apple.JavaScriptCore      	0x0046fffa KJS::JSObject::call(KJS::ExecState*, KJS::JSObject*, KJS::List const&amp;) + 222 (object.cpp:99)
13  com.apple.JavaScriptCore      	0x004d2ad6 KJS::FunctionCallDotNode::inlineEvaluate(KJS::ExecState*) + 802 (nodes.cpp:1495)
14  com.apple.JavaScriptCore      	0x00486a4a KJS::FunctionCallDotNode::evaluate(KJS::ExecState*) + 30 (nodes.cpp:1501)
15  com.apple.JavaScriptCore      	0x00477559 KJS::ExprStatementNode::execute(KJS::ExecState*) + 43 (nodes.cpp:3993)
16  com.apple.JavaScriptCore      	0x00459a5b KJS::statementListExecute(WTF::Vector&lt;WTF::RefPtr&lt;KJS::StatementNode&gt;, 0ul&gt;&amp;, KJS::ExecState*) + 85 (nodes.cpp:3946)
17  com.apple.JavaScriptCore      	0x00459ae8 KJS::BlockNode::execute(KJS::ExecState*) + 26 (nodes.cpp:3972)
18  com.apple.JavaScriptCore      	0x00467cb2 KJS::FunctionBodyNode::execute(KJS::ExecState*) + 34 (nodes.cpp:4891)
19  com.apple.JavaScriptCore      	0x004684bc KJS::FunctionImp::callAsFunction(KJS::ExecState*, KJS::JSObject*, KJS::List const&amp;) + 134 (function.cpp:78)
20  com.apple.JavaScriptCore      	0x0046fffa KJS::JSObject::call(KJS::ExecState*, KJS::JSObject*, KJS::List const&amp;) + 222 (object.cpp:99)
21  com.apple.JavaScriptCore      	0x004d2ad6 KJS::FunctionCallDotNode::inlineEvaluate(KJS::ExecState*) + 802 (nodes.cpp:1495)
22  com.apple.JavaScriptCore      	0x00486a4a KJS::FunctionCallDotNode::evaluate(KJS::ExecState*) + 30 (nodes.cpp:1501)
23  com.apple.JavaScriptCore      	0x00477559 KJS::ExprStatementNode::execute(KJS::ExecState*) + 43 (nodes.cpp:3993)
24  com.apple.JavaScriptCore      	0x00459a5b KJS::statementListExecute(WTF::Vector&lt;WTF::RefPtr&lt;KJS::StatementNode&gt;, 0ul&gt;&amp;, KJS::ExecState*) + 85 (nodes.cpp:3946)
25  com.apple.JavaScriptCore      	0x00459ae8 KJS::BlockNode::execute(KJS::ExecState*) + 26 (nodes.cpp:3972)
26  com.apple.JavaScriptCore      	0x00467cb2 KJS::FunctionBodyNode::execute(KJS::ExecState*) + 34 (nodes.cpp:4891)
27  com.apple.JavaScriptCore      	0x004684bc KJS::FunctionImp::callAsFunction(KJS::ExecState*, KJS::JSObject*, KJS::List const&amp;) + 134 (function.cpp:78)
28  com.apple.JavaScriptCore      	0x0046fffa KJS::JSObject::call(KJS::ExecState*, KJS::JSObject*, KJS::List const&amp;) + 222 (object.cpp:99)
29  com.apple.WebCore             	0x02bd922e WebCore::JSAbstractEventListener::handleEvent(WebCore::Event*, bool) + 670 (kjs_events.cpp:100)
30  com.apple.WebCore             	0x02689c09 WebCore::Document::handleWindowEvent(WebCore::Event*, bool) + 281 (Document.cpp:2614)
31  com.apple.WebCore             	0x026e9964 WebCore::EventTargetNode::dispatchWindowEvent(WebCore::AtomicString const&amp;, bool, bool) + 332 (EventTargetNode.cpp:149)
32  com.apple.WebCore             	0x0268ef43 WebCore::Document::implicitClose() + 675 (Document.cpp:1550)
33  com.apple.WebCore             	0x02721b5c WebCore::FrameLoader::checkCallImplicitClose() + 226 (FrameLoader.cpp:1330)
34  com.apple.WebCore             	0x0272da2a WebCore::FrameLoader::checkCompleted() + 268 (FrameLoader.cpp:1285)
35  com.apple.WebCore             	0x0272d330 WebCore::FrameLoader::completed() + 148 (FrameLoader.cpp:1996)
36  com.apple.WebCore             	0x0272da80 WebCore::FrameLoader::checkCompleted() + 354 (FrameLoader.cpp:1289)
37  com.apple.WebCore             	0x0273049a WebCore::FrameLoader::finishedParsing() + 90 (FrameLoader.cpp:1233)
38  com.apple.WebCore             	0x0268cf64 WebCore::Document::finishedParsing() + 204 (Document.cpp:3699)
39  com.apple.WebCore             	0x027e882f WebCore::ImageTokenizer::finish() + 577 (ImageDocument.cpp:129)
40  com.apple.WebCore             	0x02687122 WebCore::Document::finishParsing() + 40 (Document.cpp:1693)
41  com.apple.WebCore             	0x0272dbee WebCore::FrameLoader::endIfNotLoadingMainResource() + 118 (FrameLoader.cpp:1060)
42  com.apple.WebCore             	0x0272dc23 WebCore::FrameLoader::end() + 27 (FrameLoader.cpp:1045)
43  com.apple.WebCore             	0x026b3488 WebCore::DocumentLoader::finishedLoading() + 76 (DocumentLoader.cpp:337)
44  com.apple.WebCore             	0x02728d56 WebCore::FrameLoader::finishedLoading() + 72 (FrameLoader.cpp:2893)
45  com.apple.WebCore             	0x0291aedb WebCore::MainResourceLoader::didFinishLoading() + 207 (MainResourceLoader.cpp:320)
46  com.apple.WebCore             	0x02a2f290 WebCore::ResourceLoader::didFinishLoading(WebCore::ResourceHandle*) + 24 (ResourceLoader.cpp:390)
47  com.apple.WebCore             	0x02a2c9f5 -[WebCoreResourceHandleAsDelegate connectionDidFinishLoading:] + 101 (ResourceHandleMac.mm:521)
48  com.apple.Foundation          	0x94c8e8b7 -[NSURLConnection(NSURLConnectionReallyInternal) sendDidFinishLoading] + 87
49  com.apple.Foundation          	0x94c8e844 _NSURLConnectionDidFinishLoading + 68
50  com.apple.CFNetwork           	0x9059a7f3 sendDidFinishLoadingCallback + 148
51  com.apple.CFNetwork           	0x90597920 _CFURLConnectionSendCallbacks + 1994
52  com.apple.CFNetwork           	0x905970d9 muxerSourcePerform + 283
53  com.apple.CoreFoundation      	0x90b2562e CFRunLoopRunSpecific + 3166
54  com.apple.CoreFoundation      	0x90b25d18 CFRunLoopRunInMode + 88
55  com.apple.HIToolbox           	0x926296a0 RunCurrentEventLoopInMode + 283
56  com.apple.HIToolbox           	0x926294b9 ReceiveNextEventCommon + 374
57  com.apple.HIToolbox           	0x9262932d BlockUntilNextEventMatchingListInMode + 106
58  com.apple.AppKit              	0x90c3f7d9 _DPSNextEvent + 657
59  com.apple.AppKit              	0x90c3f08e -[NSApplication nextEventMatchingMask:untilDate:inMode:dequeue:] + 128
60  com.apple.Safari              	0x00007f2e 0x1000 + 28462
61  com.apple.AppKit              	0x90c380c5 -[NSApplication run] + 795
62  com.apple.AppKit              	0x90c0530a NSApplicationMain + 574
63  com.apple.Safari              	0x000b9906 0x1000 + 755974

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>79289</commentid>
    <comment_count>5</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-04-30 11:04:03 -0700</bug_when>
    <thetext>Ok, I stopped this in the debugger for DRT.  And have a better stack trace.  We&apos;re re-entering ContainerNode::removeChildren(), this is similar to a bug we fixed a year ago in ContainerNode::removeAllChildren().

In this case, we&apos;re re-entering JS and running a second on-load handler while we&apos;re running the first.  I doubt that&apos;s what we intended...  Probably we should have been in a forbid event dispatch block?

I&apos;d be curious to hear other&apos;s thoughts.

#0	0x025fcc55 in WebCore::ContainerNode::removeChildren at ContainerNode.cpp:466
#1	0x026896ca in WebCore::Document::clear at Document.cpp:1700
#2	0x0268f226 in WebCore::Document::implicitOpen at Document.cpp:1437
#3	0x026924ff in WebCore::Document::open at Document.cpp:1414
#4	0x02858335 in WebCore::JSHTMLDocument::open at JSHTMLDocumentCustom.cpp:115
#5	0x02856c1c in WebCore::jsHTMLDocumentPrototypeFunctionOpen at JSHTMLDocument.cpp:276
#6	0x00271d5c in KJS::PrototypeFunction::callAsFunction at function.cpp:905
#7	0x00293ffa in KJS::JSObject::call at object.cpp:99
#8	0x002f6ad6 in KJS::FunctionCallDotNode::inlineEvaluate at nodes.cpp:1495
#9	0x002aaa4a in KJS::FunctionCallDotNode::evaluate at nodes.cpp:1500
#10	0x0029b559 in KJS::ExprStatementNode::execute at nodes.cpp:3993
#11	0x0027da5b in statementListExecute at nodes.cpp:3946
#12	0x0027dae8 in KJS::BlockNode::execute at nodes.cpp:3971
#13	0x0028bcb2 in KJS::FunctionBodyNode::execute at nodes.cpp:4890
#14	0x0028c4bc in KJS::FunctionImp::callAsFunction at function.cpp:78
#15	0x00293ffa in KJS::JSObject::call at object.cpp:99
#16	0x002f6ad6 in KJS::FunctionCallDotNode::inlineEvaluate at nodes.cpp:1495
#17	0x002aaa4a in KJS::FunctionCallDotNode::evaluate at nodes.cpp:1500
#18	0x0029b559 in KJS::ExprStatementNode::execute at nodes.cpp:3993
#19	0x0027da5b in statementListExecute at nodes.cpp:3946
#20	0x0027dae8 in KJS::BlockNode::execute at nodes.cpp:3971
#21	0x0028bcb2 in KJS::FunctionBodyNode::execute at nodes.cpp:4890
#22	0x0028c4bc in KJS::FunctionImp::callAsFunction at function.cpp:78
#23	0x00293ffa in KJS::JSObject::call at object.cpp:99
#24	0x02bd920e in WebCore::JSAbstractEventListener::handleEvent at kjs_events.cpp:100
#25	0x02689be9 in WebCore::Document::handleWindowEvent at Document.cpp:2616
#26	0x026e9944 in WebCore::EventTargetNode::dispatchWindowEvent at EventTargetNode.cpp:147
#27	0x0268ef23 in WebCore::Document::implicitClose at Document.cpp:1549
#28	0x02721b3c in WebCore::FrameLoader::checkCallImplicitClose at FrameLoader.cpp:1329
#29	0x0272da0a in WebCore::FrameLoader::checkCompleted at FrameLoader.cpp:1281
#30	0x0272d310 in WebCore::FrameLoader::completed at FrameLoader.cpp:1995
#31	0x0272da60 in WebCore::FrameLoader::checkCompleted at FrameLoader.cpp:1288 // NOW WE&apos;RE IN TROUBLE...
#32	0x0272dade in WebCore::FrameLoader::mainReceivedCompleteError at FrameLoader.cpp:4583
#33	0x026b2e21 in WebCore::DocumentLoader::mainReceivedError at DocumentLoader.cpp:261
#34	0x0272e095 in WebCore::FrameLoader::receivedMainResourceError at FrameLoader.cpp:3506
#35	0x0291ab96 in WebCore::MainResourceLoader::didCancel at MainResourceLoader.cpp:102
#36	0x02a2f6e6 in WebCore::ResourceLoader::cancel at ResourceLoader.cpp:349
#37	0x02a2f721 in WebCore::ResourceLoader::cancel at ResourceLoader.cpp:339
#38	0x026b2f28 in WebCore::DocumentLoader::stopLoading at DocumentLoader.cpp:299
#39	0x027281dc in WebCore::FrameLoader::stopAllLoaders at FrameLoader.cpp:2488
#40	0x0272860d in WebCore::FrameLoader::stopLoadingSubframes at FrameLoader.cpp:2473
#41	0x027281ae in WebCore::FrameLoader::stopAllLoaders at FrameLoader.cpp:2486
#42	0x02730e49 in WebCore::FrameLoader::frameDetached at FrameLoader.cpp:3294
#43	0x02775ebc in WebCore::HTMLFrameOwnerElement::willRemove at HTMLFrameOwnerElement.cpp:46 // HERE WE GO....
#44	0x025fb4ab in WebCore::ContainerNode::willRemove at ContainerNode.cpp:347
#45	0x025fb4ab in WebCore::ContainerNode::willRemove at ContainerNode.cpp:347
#46	0x025fcc0f in willRemoveChild at ContainerNode.cpp:361
#47	0x025fcc68 in WebCore::ContainerNode::removeChildren at ContainerNode.cpp:467
#48	0x026896ca in WebCore::Document::clear at Document.cpp:1700
#49	0x0268f226 in WebCore::Document::implicitOpen at Document.cpp:1437
#50	0x026924ff in WebCore::Document::open at Document.cpp:1414
#51	0x02858335 in WebCore::JSHTMLDocument::open at JSHTMLDocumentCustom.cpp:115
#52	0x02856c1c in WebCore::jsHTMLDocumentPrototypeFunctionOpen at JSHTMLDocument.cpp:276
#53	0x00271d5c in KJS::PrototypeFunction::callAsFunction at function.cpp:905
#54	0x00293ffa in KJS::JSObject::call at object.cpp:99
#55	0x002f6ad6 in KJS::FunctionCallDotNode::inlineEvaluate at nodes.cpp:1495
#56	0x002aaa4a in KJS::FunctionCallDotNode::evaluate at nodes.cpp:1500
#57	0x0029b559 in KJS::ExprStatementNode::execute at nodes.cpp:3993
#58	0x0027da5b in statementListExecute at nodes.cpp:3946
#59	0x0027dae8 in KJS::BlockNode::execute at nodes.cpp:3971
#60	0x0028bcb2 in KJS::FunctionBodyNode::execute at nodes.cpp:4890
#61	0x0028c4bc in KJS::FunctionImp::callAsFunction at function.cpp:78
#62	0x00293ffa in KJS::JSObject::call at object.cpp:99
#63	0x002f6ad6 in KJS::FunctionCallDotNode::inlineEvaluate at nodes.cpp:1495
#64	0x002aaa4a in KJS::FunctionCallDotNode::evaluate at nodes.cpp:1500
#65	0x0029b559 in KJS::ExprStatementNode::execute at nodes.cpp:3993
#66	0x0027da5b in statementListExecute at nodes.cpp:3946
#67	0x0027dae8 in KJS::BlockNode::execute at nodes.cpp:3971
#68	0x0028bcb2 in KJS::FunctionBodyNode::execute at nodes.cpp:4890
#69	0x0028c4bc in KJS::FunctionImp::callAsFunction at function.cpp:78
#70	0x00293ffa in KJS::JSObject::call at object.cpp:99
#71	0x02bd920e in WebCore::JSAbstractEventListener::handleEvent at kjs_events.cpp:100
#72	0x02689be9 in WebCore::Document::handleWindowEvent at Document.cpp:2616
#73	0x026e9944 in WebCore::EventTargetNode::dispatchWindowEvent at EventTargetNode.cpp:147
#74	0x0268ef23 in WebCore::Document::implicitClose at Document.cpp:1549
#75	0x02721b3c in WebCore::FrameLoader::checkCallImplicitClose at FrameLoader.cpp:1329
#76	0x0272da0a in WebCore::FrameLoader::checkCompleted at FrameLoader.cpp:1281
#77	0x0272d310 in WebCore::FrameLoader::completed at FrameLoader.cpp:1995
#78	0x0272da60 in WebCore::FrameLoader::checkCompleted at FrameLoader.cpp:1288
#79	0x0273047a in WebCore::FrameLoader::finishedParsing at FrameLoader.cpp:1231
#80	0x0268cf44 in WebCore::Document::finishedParsing at Document.cpp:3698
#81	0x027e880f in WebCore::ImageTokenizer::finish at ImageDocument.cpp:128
#82	0x02687102 in WebCore::Document::finishParsing at Document.cpp:1692
#83	0x0272dbce in WebCore::FrameLoader::endIfNotLoadingMainResource at FrameLoader.cpp:1060
#84	0x0272dc03 in WebCore::FrameLoader::end at FrameLoader.cpp:1044
#85	0x026b3468 in WebCore::DocumentLoader::finishedLoading at DocumentLoader.cpp:335
#86	0x02728d36 in WebCore::FrameLoader::finishedLoading at FrameLoader.cpp:2892
#87	0x0291aebb in WebCore::MainResourceLoader::didFinishLoading at MainResourceLoader.cpp:319
#88	0x02a2f270 in WebCore::ResourceLoader::didFinishLoading at ResourceLoader.cpp:389
#89	0x02a2c9d5 in -[WebCoreResourceHandleAsDelegate connectionDidFinishLoading:] at ResourceHandleMac.mm:521
#90	0x94c8e8b7 in -[NSURLConnection(NSURLConnectionReallyInternal) sendDidFinishLoading]
#91	0x94c8e844 in _NSURLConnectionDidFinishLoading
#92	0x9059a7f3 in sendDidFinishLoadingCallback
#93	0x90597920 in _CFURLConnectionSendCallbacks
#94	0x905970d9 in muxerSourcePerform
#95	0x90b2562e in CFRunLoopRunSpecific
#96	0x90b25d18 in CFRunLoopRunInMode
#97	0x94c5db15 in -[NSRunLoop(NSRunLoop) runMode:beforeDate:]
#98	0x0000598a in runTest at DumpRenderTree.mm:896
#99	0x0000604c in dumpRenderTree (100 of 101 frames) (100 of 101 frames) (100 of 101 frames) (100 of 101 frames) (100 of 101 frames) (100 of 101 frames) (100 of 101 frames) (100 of 101 frames) at DumpRenderTree.mm:424
#100	0x000061d4 in main at DumpRenderTree.mm:464

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>79290</commentid>
    <comment_count>6</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-04-30 11:10:16 -0700</bug_when>
    <thetext>Ah!  I was wrong.  The problem is that willRemoveChild(n) could have side-effects of causing n to be deleted.

    for (n = m_firstChild; n; n = n-&gt;nextSibling())
        willRemoveChild(n);

If we end up re-entering this method below that call, n will have been deleted (along with all of the siblings).  One solution would be so simply hold a Ref to n during traversal.  Not sure if that&apos;s the right fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>79294</commentid>
    <comment_count>7</comment_count>
      <attachid>20904</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-04-30 12:37:38 -0700</bug_when>
    <thetext>Created attachment 20904
First pass fix

 LayoutTests/ChangeLog                              |   13 +++++++++++++
 LayoutTests/fast/dom/removeChildren-crash.html     |   14 ++++++++++++++
 .../fast/dom/resources/removeChildren-crash.html   |    3 +++
 .../fast/dom/resources/removeChildren-crash.png    |  Bin 0 -&gt; 144 bytes
 .../fast/dom/resources/removeChildren-crash2.html  |    6 ++++++
 .../fast/dom/resources/removeChildren-crash2.png   |  Bin 0 -&gt; 10292 bytes
 WebCore/ChangeLog                                  |   12 ++++++++++++
 WebCore/dom/ContainerNode.cpp                      |   20 ++++++++------------
 8 files changed, 56 insertions(+), 12 deletions(-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>79365</commentid>
    <comment_count>8</comment_count>
      <attachid>20904</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-05-01 09:56:44 -0700</bug_when>
    <thetext>Comment on attachment 20904
First pass fix

This looks good. It&apos;s great that it fixes the crash. I worry that the willRemoveChild could still be used to make an infinite loop.

+    for (RefPtr&lt;Node&gt; n = m_firstChild; m_firstChild; n = m_firstChild) {

I can&apos;t see any reason to not write this as:

    while (RefPtr&lt;Node&gt; n = m_firstChild)

+    // children), so we keep n in a RefPtr, lest n-&gt;nextSibling() crash (18803)

I don&apos;t think the bug number is really all that valuable, not the specific &quot;lest n-&gt;nextSibling() crash&quot;.

Maybe the png files should have more generic names. Do we really need two separate images for this? Is there a way to make the timing right for the crash without having images?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>82629</commentid>
    <comment_count>9</comment_count>
      <attachid>20904</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-06-08 12:00:20 -0700</bug_when>
    <thetext>Comment on attachment 20904
First pass fix

I tried to land this patch and:

    1) Couldn&apos;t apply the patch because svn-apply didn&apos;t seem to understand the copied .png files.
    2) Noticed the patch didn&apos;t include results for the test.
    3) Couldn&apos;t get the test case to crash without the fix applied.

So I need to change this to review-. Lets get a working regression test and then find a way to land this fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>82922</commentid>
    <comment_count>10</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-06-11 00:58:31 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; (From update of attachment 20904 [edit])
&gt; I tried to land this patch and:
&gt; 
&gt;     1) Couldn&apos;t apply the patch because svn-apply didn&apos;t seem to understand the
&gt; copied .png files.
&gt;     2) Noticed the patch didn&apos;t include results for the test.
&gt;     3) Couldn&apos;t get the test case to crash without the fix applied.
&gt; 
&gt; So I need to change this to review-. Lets get a working regression test and
&gt; then find a way to land this fix.

The regression test only crashes if you run under MallocScribble.  I have not re-verified that today, but that was the case when I wrote the test (see earlier comments in the bug).

I&apos;ve rebased that git branch to TOT, and can re-post tomorrow (including test results).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>84045</commentid>
    <comment_count>11</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2008-06-21 11:57:45 -0700</bug_when>
    <thetext>See also: bug 15707.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>98308</commentid>
    <comment_count>12</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-11-11 11:00:22 -0800</bug_when>
    <thetext>I guess I should finally update and land this.  Assigning to myself.  Now I just have to find the git branch...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>98835</commentid>
    <comment_count>13</comment_count>
    <who name="Deirdre Saoirse Moen">desamo</who>
    <bug_when>2008-11-14 16:19:49 -0800</bug_when>
    <thetext>&lt;rdar://problem/6361982 &gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>99171</commentid>
    <comment_count>14</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-11-18 09:41:35 -0800</bug_when>
    <thetext>Odd.  I can&apos;t get the test case to crash either anymore. :(  I seems that we&apos;re no longer firing the main body onload like we were before.  This code still looks wrong to me, but I don&apos;t have a test case for it.  So I guess maybe we&apos;ll just wait and see if it crashes again... :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>99175</commentid>
    <comment_count>15</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-11-18 10:08:09 -0800</bug_when>
    <thetext>I still believe the code can crash.  Applying my ninja debugging skillz to see if I can&apos;t make a test case crash.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>99177</commentid>
    <comment_count>16</comment_count>
      <attachid>25240</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-11-18 10:20:35 -0800</bug_when>
    <thetext>Created attachment 25240
Fix updated to apply cleanly to ToT

 LayoutTests/ChangeLog                              |   13 +++++++++++++
 LayoutTests/fast/dom/removeChildren-crash.html     |   18 ++++++++++++++++++
 .../fast/dom/resources/removeChildren-crash.html   |    3 +++
 .../fast/dom/resources/removeChildren-crash.png    |  Bin 0 -&gt; 144 bytes
 .../fast/dom/resources/removeChildren-crash2.html  |    6 ++++++
 .../fast/dom/resources/removeChildren-crash2.png   |  Bin 0 -&gt; 10292 bytes
 WebCore/ChangeLog                                  |   12 ++++++++++++
 WebCore/dom/ContainerNode.cpp                      |   20 ++++++++------------
 8 files changed, 60 insertions(+), 12 deletions(-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>99205</commentid>
    <comment_count>17</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-11-18 12:27:15 -0800</bug_when>
    <thetext>Ok, this test almost works:

&lt;body&gt;
&lt;script&gt;
function gc()
{
    if (window.GCController)
        return GCController.collect();
}

var outerDiv = document.createElement(&quot;div&quot;);
outerDiv.appendChild(document.createElement(&quot;div&quot;));
outerDiv.appendChild(document.createElement(&quot;div&quot;));
outerDiv.appendChild(document.createElement(&quot;div&quot;));
document.body.appendChild(outerDiv);

// This function should be called right before innerDiv is removed
// by clearing the outerDiv, innerDiv-&gt;nextSibling() call should
// then crash once the event listener returns.  This crash was fixed
// by https://bugs.webkit.org/show_bug.cgi?id=18803
function kidRemoved(event) {
    outerDiv.removeEventListener(&quot;DOMNodeRemoved&quot;, kidRemoved, false);

    gc();

    // Remove any remaining kids to hopefully hit a crash.
    outerDiv.innerHTML = &quot;&quot;;
}
outerDiv.addEventListener(&quot;DOMNodeRemoved&quot;, kidRemoved, false);

// Remove all children to kick off the event sending
outerDiv.innerHTML = &quot;&quot;;
&lt;/script&gt;
&lt;div&gt;PASS&lt;/div&gt;

Unfortunately the MutationEvent is still holding onto the node at the time it should crash.  I still think it&apos;s possible to crash this code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>99221</commentid>
    <comment_count>18</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-11-18 14:33:04 -0800</bug_when>
    <thetext>I think it&apos;s no longer crashing due to a change to the HTMLParser where we reject &lt;frameset&gt; elements found inside a body element.  I wonder if that&apos;s a tested change? ;)  Attempting to re-work the original test case now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>99252</commentid>
    <comment_count>19</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-11-18 17:01:27 -0800</bug_when>
    <thetext>Ok, giving up.  I think this was partially caused by another bug.  Since now we seem to properly stop onload events if document.open was called between when the onload was registered and when it fired.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>110082</commentid>
    <comment_count>20</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2009-02-18 10:06:31 -0800</bug_when>
    <thetext>Bug 15707 has both a test and a fix, so marking as a duplicate.

*** This bug has been marked as a duplicate of 15707 ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1503086</commentid>
    <comment_count>21</comment_count>
    <who name="Lucas Forschler">lforschler</who>
    <bug_when>2019-02-06 09:04:02 -0800</bug_when>
    <thetext>Mass moving XML DOM bugs to the &quot;DOM&quot; Component.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>20892</attachid>
            <date>2008-04-29 13:58:26 -0700</date>
            <delta_ts>2008-04-29 13:58:26 -0700</delta_ts>
            <desc>multi-file reduced test case (will crash Safari!)</desc>
            <filename>bad.tgz</filename>
            <type>application/x-compressed</type>
            <size>11078</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">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
8Ic//OEPf/i/h/8GbsjM4QBQAAA=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>20904</attachid>
            <date>2008-04-30 12:37:38 -0700</date>
            <delta_ts>2008-06-08 12:00:20 -0700</delta_ts>
            <desc>First pass fix</desc>
            <filename>First-pass-fix.patch</filename>
            <type>text/plain</type>
            <size>5310</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">N2NiM2U5YTQ5OTMzYTIzZDljZTg4NzY4NThjYjExODFlN2YzYTNiNApkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDIyYzg5ZWQu
LjNlZjM4ODUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAwOC0wNC0zMCAgRXJpYyBTZWlkZWwg
IDxlcmljQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisgICAgICAgIAorICAgICAgICBDcmFzaCBpbiBDb250YWluZXJOb2RlOjpyZW1vdmVDaGlsZHJl
bgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg4MDMK
KworICAgICAgICAqIGZhc3QvZG9tL3JlbW92ZUNoaWxkcmVuLWNyYXNoLmh0bWw6IEFkZGVkLgor
ICAgICAgICAqIGZhc3QvZG9tL3Jlc291cmNlcy9yZW1vdmVDaGlsZHJlbi1jcmFzaC5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9yZXNvdXJjZXMvcmVtb3ZlQ2hpbGRyZW4tY3Jhc2gu
cG5nOiBDb3BpZWQgZnJvbSBMYXlvdXRUZXN0cy9kb20vaHRtbC9sZXZlbDIvaHRtbC9yaWdodC5w
bmcuCisgICAgICAgICogZmFzdC9kb20vcmVzb3VyY2VzL3JlbW92ZUNoaWxkcmVuLWNyYXNoMi5o
dG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9yZXNvdXJjZXMvcmVtb3ZlQ2hpbGRyZW4t
Y3Jhc2gyLnBuZzogQ29waWVkIGZyb20gTGF5b3V0VGVzdHMvZG9tL2h0bWwvbGV2ZWwyL2h0bWwv
dzNjX21haW4ucG5nLgorCiAyMDA4LTA0LTI5ICBBbmF0b2xpIFBhcGlyb3Zza2kgIDxhcGFwaXJv
dnNraUBtYWMuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhbiBCZXJuc3RlaW4uCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9yZW1vdmVDaGlsZHJlbi1jcmFzaC5odG1sIGIv
TGF5b3V0VGVzdHMvZmFzdC9kb20vcmVtb3ZlQ2hpbGRyZW4tY3Jhc2guaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi42YjU2ODdjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvZmFzdC9kb20vcmVtb3ZlQ2hpbGRyZW4tY3Jhc2guaHRtbApAQCAtMCwwICsxLDE0
IEBACis8c2NyaXB0IHR5cGU9J3RleHQvamF2YXNjcmlwdCc+CitmdW5jdGlvbiBsb2FkQ29tcGxl
dGUoKSB7CisgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODgw
MworCWFsZXJ0KCJHZXJvbmltbyEiKTsgIC8vIFRpY2tsZXMgY3Jhc2ggaW4gV2ViS2l0CisJdmFy
IHRlc3ROb2RlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImZyYW1lMSIpOworCWRvY3VtZW50
Lm9wZW4oKTsKK30KKzwvc2NyaXB0PgorPGZyYW1lc2V0IGNvbHM9IjIwLCA4MCIgIG9ubG9hZD0i
bG9hZENvbXBsZXRlKCkiPgorPGZyYW1lc2V0IHJvd3M9IjEwMCwgMjAwIj4KKzxmcmFtZSBpZD0i
ZnJhbWUxIiBzcmM9InJlc291cmNlcy9yZW1vdmVDaGlsZHJlbi1jcmFzaDIuaHRtbCI+Cis8L2Zy
YW1lc2V0PgorPGZyYW1lIHNyYz0icmVzb3VyY2VzL3JlbW92ZUNoaWxkcmVuLWNyYXNoLmh0bWwi
PgorPC9mcmFtZXNldD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3Jlc291cmNl
cy9yZW1vdmVDaGlsZHJlbi1jcmFzaC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vcmVzb3Vy
Y2VzL3JlbW92ZUNoaWxkcmVuLWNyYXNoLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXgg
MDAwMDAwMC4uYjIxODdjOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9t
L3Jlc291cmNlcy9yZW1vdmVDaGlsZHJlbi1jcmFzaC5odG1sCkBAIC0wLDAgKzEsMyBAQAorPGJv
ZHkgb25sb2FkPSJwYXJlbnQubG9hZENvbXBsZXRlKCkiPgorPGlmcmFtZSBzcmM9InJlbW92ZUNo
aWxkcmVuLWNyYXNoLnBuZyI+PC9pZnJhbWU+Cis8L2JvZHk+ClwgTm8gbmV3bGluZSBhdCBlbmQg
b2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vcmVzb3VyY2VzL3JlbW92
ZUNoaWxkcmVuLWNyYXNoLnBuZyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3Jlc291cmNlcy9yZW1v
dmVDaGlsZHJlbi1jcmFzaC5wbmcKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4u
MTQ0MjY4NQpCaW5hcnkgZmlsZXMgL2Rldi9udWxsIGFuZCBiL0xheW91dFRlc3RzL2Zhc3QvZG9t
L3Jlc291cmNlcy9yZW1vdmVDaGlsZHJlbi1jcmFzaC5wbmcgZGlmZmVyCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9mYXN0L2RvbS9yZXNvdXJjZXMvcmVtb3ZlQ2hpbGRyZW4tY3Jhc2gyLmh0bWwg
Yi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9yZXNvdXJjZXMvcmVtb3ZlQ2hpbGRyZW4tY3Jhc2gyLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uODRjMGVkNwotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3Jlc291cmNlcy9yZW1vdmVDaGlsZHJlbi1j
cmFzaDIuaHRtbApAQCAtMCwwICsxLDYgQEAKKzxmcmFtZXNldCBjb2xzPSIyMCwgODAiICBvbmxv
YWQ9InBhcmVudC5sb2FkQ29tcGxldGUoKSI+Cis8ZnJhbWVzZXQgcm93cz0iMTAwLCAyMDAiPgor
PGZyYW1lIGxvbmdkZXNjPSJhYm91dDpibGFuayIgc3JjPSJyZW1vdmVDaGlsZHJlbi1jcmFzaC5w
bmciPgorPC9mcmFtZXNldD4KKzxmcmFtZSBzcmM9InJlbW92ZUNoaWxkcmVuLWNyYXNoMi5wbmci
PgorPC9mcmFtZXNldD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3Jlc291cmNl
cy9yZW1vdmVDaGlsZHJlbi1jcmFzaDIucG5nIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vcmVzb3Vy
Y2VzL3JlbW92ZUNoaWxkcmVuLWNyYXNoMi5wbmcKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXgg
MDAwMDAwMC4uMTM5MjkyZQpCaW5hcnkgZmlsZXMgL2Rldi9udWxsIGFuZCBiL0xheW91dFRlc3Rz
L2Zhc3QvZG9tL3Jlc291cmNlcy9yZW1vdmVDaGlsZHJlbi1jcmFzaDIucG5nIGRpZmZlcgpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBmNTE0
YmRjLi4wNDZjNGIzIDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3Jl
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDA4LTA0LTMwICBFcmljIFNlaWRlbCAgPGVy
aWNAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBDcmFzaCBpbiBDb250YWluZXJOb2RlOjpyZW1vdmVDaGlsZHJlbgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg4MDMKKworICAgICAgICBU
ZXN0OiBmYXN0L2RvbS9yZW1vdmVDaGlsZHJlbi1jcmFzaC5odG1sCisKKyAgICAgICAgKiBkb20v
Q29udGFpbmVyTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250YWluZXJOb2RlOjpyZW1v
dmVDaGlsZHJlbik6CisKIDIwMDgtMDQtMjkgIEFkYW0gUm9iZW4gIDxhcm9iZW5AYXBwbGUuY29t
PgogCiAgICAgICAgIFJlc3RvcmUgdGhlIGJlbG92ZWQgQ09NUHRyOjpvcGVyYXRvciYKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwIGIvV2ViQ29yZS9kb20vQ29udGFp
bmVyTm9kZS5jcHAKaW5kZXggNzA4MmZlNi4uODNjZmE4NCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9k
b20vQ29udGFpbmVyTm9kZS5jcHAKKysrIGIvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAK
QEAgLTQ1NywyNCArNDU3LDIyIEBAIGJvb2wgQ29udGFpbmVyTm9kZTo6cmVtb3ZlQ2hpbGRyZW4o
KQogICAgIGlmICghbV9maXJzdENoaWxkKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBO
b2RlKiBuOwotICAgIAotICAgIC8vIGRvIGFueSBwcmVwIHdvcmsgbmVlZGVkIGJlZm9yZSBhY3R1
YWxseSBzdGFydGluZyB0byBkZXRhY2gKLSAgICAvLyBhbmQgcmVtb3ZlLi4uIGUuZy4gc3RvcCBs
b2FkaW5nIGZyYW1lcywgZmlyZSB1bmxvYWQgZXZlbnRzCi0gICAgZm9yIChuID0gbV9maXJzdENo
aWxkOyBuOyBuID0gbi0+bmV4dFNpYmxpbmcoKSkKLSAgICAgICAgd2lsbFJlbW92ZUNoaWxkKG4p
OworICAgIC8vIERvIGFueSBwcmVwIHdvcmsgbmVlZGVkIGJlZm9yZSBhY3R1YWxseSBzdGFydGlu
ZyB0byBkZXRhY2gKKyAgICAvLyBhbmQgcmVtb3ZlLi4uIGUuZy4gc3RvcCBsb2FkaW5nIGZyYW1l
cywgZmlyZSB1bmxvYWQgZXZlbnRzLgorICAgIC8vIEFuIGV2ZW50IGNvdWxkIGNhdXNlIHRoaXMg
ZnVuY3Rpb24gdG8gcmUtZW50ZXIgKHRodXMgY2xlYXJpbmcgYWxsCisgICAgLy8gY2hpbGRyZW4p
LCBzbyB3ZSBrZWVwIG4gaW4gYSBSZWZQdHIsIGxlc3Qgbi0+bmV4dFNpYmxpbmcoKSBjcmFzaCAo
MTg4MDMpCisgICAgZm9yIChSZWZQdHI8Tm9kZT4gbiA9IG1fZmlyc3RDaGlsZDsgbjsgbiA9IG4t
Pm5leHRTaWJsaW5nKCkpCisgICAgICAgIHdpbGxSZW1vdmVDaGlsZChuLmdldCgpKTsKICAgICAK
ICAgICAvLyBleGNsdWRlIHRoaXMgbm9kZSB3aGVuIGxvb2tpbmcgZm9yIHJlbW92ZWQgZm9jdXNl
ZE5vZGUgc2luY2Ugb25seSBjaGlsZHJlbiB3aWxsIGJlIHJlbW92ZWQKICAgICBkb2N1bWVudCgp
LT5yZW1vdmVGb2N1c2VkTm9kZU9mU3VidHJlZSh0aGlzLCB0cnVlKTsKIAogICAgIGZvcmJpZEV2
ZW50RGlzcGF0Y2goKTsKICAgICBpbnQgY2hpbGRDb3VudERlbHRhID0gMDsKLSAgICB3aGlsZSAo
KG4gPSBtX2ZpcnN0Q2hpbGQpICE9IDApIHsKKyAgICBmb3IgKFJlZlB0cjxOb2RlPiBuID0gbV9m
aXJzdENoaWxkOyBtX2ZpcnN0Q2hpbGQ7IG4gPSBtX2ZpcnN0Q2hpbGQpIHsKICAgICAgICAgY2hp
bGRDb3VudERlbHRhLS07CiAKLSAgICAgICAgTm9kZSAqbmV4dCA9IG4tPm5leHRTaWJsaW5nKCk7
Ci0gICAgICAgIAotICAgICAgICBuLT5yZWYoKTsKKyAgICAgICAgTm9kZSogbmV4dCA9IG4tPm5l
eHRTaWJsaW5nKCk7CiAKICAgICAgICAgLy8gUmVtb3ZlIHRoZSBub2RlIGZyb20gdGhlIHRyZWUg
YmVmb3JlIGNhbGxpbmcgZGV0YWNoIG9yIHJlbW92ZWRGcm9tRG9jdW1lbnQgKDQ0MjcwMjQsIDQx
Mjk3NDQpCiAgICAgICAgIG4tPnNldFByZXZpb3VzU2libGluZygwKTsKQEAgLTQ5MCw4ICs0ODgs
NiBAQCBib29sIENvbnRhaW5lck5vZGU6OnJlbW92ZUNoaWxkcmVuKCkKICAgICAgICAgCiAgICAg
ICAgIGlmIChuLT5pbkRvY3VtZW50KCkpCiAgICAgICAgICAgICBuLT5yZW1vdmVkRnJvbURvY3Vt
ZW50KCk7Ci0KLSAgICAgICAgbi0+ZGVyZWYoKTsKICAgICB9CiAgICAgYWxsb3dFdmVudERpc3Bh
dGNoKCk7CiAK
</data>
<flag name="review"
          id="9145"
          type_id="1"
          status="-"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>25240</attachid>
            <date>2008-11-18 10:20:35 -0800</date>
            <delta_ts>2008-11-18 10:20:35 -0800</delta_ts>
            <desc>Fix updated to apply cleanly to ToT</desc>
            <filename>Fix-updated-to-apply-cleanly-to-ToT.patch</filename>
            <type>text/plain</type>
            <size>5521</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">NmFkN2UwMTYzN2JiYTZjNjBkNTk1NGYxYjVmZThmZWM5YmJlNTdhOQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDQyMTYzY2Yu
LjE3MTljMjUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAwOC0wNC0zMCAgRXJpYyBTZWlkZWwg
IDxlcmljQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisgICAgICAgIAorICAgICAgICBDcmFzaCBpbiBDb250YWluZXJOb2RlOjpyZW1vdmVDaGlsZHJl
bgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg4MDMK
KworICAgICAgICAqIGZhc3QvZG9tL3JlbW92ZUNoaWxkcmVuLWNyYXNoLmh0bWw6IEFkZGVkLgor
ICAgICAgICAqIGZhc3QvZG9tL3Jlc291cmNlcy9yZW1vdmVDaGlsZHJlbi1jcmFzaC5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9yZXNvdXJjZXMvcmVtb3ZlQ2hpbGRyZW4tY3Jhc2gu
cG5nOiBDb3BpZWQgZnJvbSBMYXlvdXRUZXN0cy9kb20vaHRtbC9sZXZlbDIvaHRtbC9yaWdodC5w
bmcuCisgICAgICAgICogZmFzdC9kb20vcmVzb3VyY2VzL3JlbW92ZUNoaWxkcmVuLWNyYXNoMi5o
dG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9yZXNvdXJjZXMvcmVtb3ZlQ2hpbGRyZW4t
Y3Jhc2gyLnBuZzogQ29waWVkIGZyb20gTGF5b3V0VGVzdHMvZG9tL2h0bWwvbGV2ZWwyL2h0bWwv
dzNjX21haW4ucG5nLgorCiAyMDA4LTExLTE3ICBOaWtvbGFzIFppbW1lcm1hbm4gIDxuaWtvbGFz
LnppbW1lcm1hbm5AdG9yY2htb2JpbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEdlb3Jn
ZSBTdGFpa29zLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vcmVtb3ZlQ2hpbGRy
ZW4tY3Jhc2guaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3JlbW92ZUNoaWxkcmVuLWNyYXNo
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uMWIwZDM2MwotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3JlbW92ZUNoaWxkcmVuLWNyYXNoLmh0
bWwKQEAgLTAsMCArMSwxOCBAQAorPHNjcmlwdCB0eXBlPSd0ZXh0L2phdmFzY3JpcHQnPgoraWYg
KHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5k
dW1wQXNUZXh0KCk7CitmdW5jdGlvbiBsb2FkQ29tcGxldGUoKSB7CisgICAgLy8gaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4ODAzCisgICAgYWxlcnQoIkdlcm9uaW1v
ISIpOyAgLy8gVGlja2xlcyBjcmFzaCBpbiBXZWJLaXQKKyAgICB2YXIgdGVzdE5vZGUgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgiZnJhbWUxIik7CisgICAgZG9jdW1lbnQub3BlbigpOworfQor
PC9zY3JpcHQ+CitUaGlzIHRlc3QgcGFzc2VzIGlmIGl0IGRvZXMgbm90IGNyYXNoLjxicj4KK1Ro
aXMgdGVzdCB3b3VsZCBjcmFzaCBvbiB0aGUgc2Vjb25kIEdlcm9uaW1vIHdoZW4gTWFsbG9jU2Ny
aWJibGUgaXMgZW5hYmxlZC4KKzxmcmFtZXNldCBjb2xzPSIyMCwgODAiICBvbmxvYWQ9ImxvYWRD
b21wbGV0ZSgpIj4KKzxmcmFtZXNldCByb3dzPSIxMDAsIDIwMCI+Cis8ZnJhbWUgaWQ9ImZyYW1l
MSIgc3JjPSJyZXNvdXJjZXMvcmVtb3ZlQ2hpbGRyZW4tY3Jhc2gyLmh0bWwiPgorPC9mcmFtZXNl
dD4KKzxmcmFtZSBzcmM9InJlc291cmNlcy9yZW1vdmVDaGlsZHJlbi1jcmFzaC5odG1sIj4KKzwv
ZnJhbWVzZXQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9yZXNvdXJjZXMvcmVt
b3ZlQ2hpbGRyZW4tY3Jhc2guaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3Jlc291cmNlcy9y
ZW1vdmVDaGlsZHJlbi1jcmFzaC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAw
MDAuLjBjYzYxMjMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9yZXNv
dXJjZXMvcmVtb3ZlQ2hpbGRyZW4tY3Jhc2guaHRtbApAQCAtMCwwICsxLDMgQEAKKzxib2R5IG9u
bG9hZD0icGFyZW50LmxvYWRDb21wbGV0ZSgpIj4KKzxpZnJhbWUgc3JjPSJyZW1vdmVDaGlsZHJl
bi1jcmFzaC5wbmciPjwvaWZyYW1lPgorPC9ib2R5PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZmFzdC9kb20vcmVzb3VyY2VzL3JlbW92ZUNoaWxkcmVuLWNyYXNoLnBuZyBiL0xheW91dFRlc3Rz
L2Zhc3QvZG9tL3Jlc291cmNlcy9yZW1vdmVDaGlsZHJlbi1jcmFzaC5wbmcKbmV3IGZpbGUgbW9k
ZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uMTQ0MjY4NQpCaW5hcnkgZmlsZXMgL2Rldi9udWxsIGFu
ZCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3Jlc291cmNlcy9yZW1vdmVDaGlsZHJlbi1jcmFzaC5w
bmcgZGlmZmVyCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9yZXNvdXJjZXMvcmVt
b3ZlQ2hpbGRyZW4tY3Jhc2gyLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9yZXNvdXJjZXMv
cmVtb3ZlQ2hpbGRyZW4tY3Jhc2gyLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAw
MDAwMC4uODRjMGVkNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3Jl
c291cmNlcy9yZW1vdmVDaGlsZHJlbi1jcmFzaDIuaHRtbApAQCAtMCwwICsxLDYgQEAKKzxmcmFt
ZXNldCBjb2xzPSIyMCwgODAiICBvbmxvYWQ9InBhcmVudC5sb2FkQ29tcGxldGUoKSI+Cis8ZnJh
bWVzZXQgcm93cz0iMTAwLCAyMDAiPgorPGZyYW1lIGxvbmdkZXNjPSJhYm91dDpibGFuayIgc3Jj
PSJyZW1vdmVDaGlsZHJlbi1jcmFzaC5wbmciPgorPC9mcmFtZXNldD4KKzxmcmFtZSBzcmM9InJl
bW92ZUNoaWxkcmVuLWNyYXNoMi5wbmciPgorPC9mcmFtZXNldD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2Zhc3QvZG9tL3Jlc291cmNlcy9yZW1vdmVDaGlsZHJlbi1jcmFzaDIucG5nIGIvTGF5
b3V0VGVzdHMvZmFzdC9kb20vcmVzb3VyY2VzL3JlbW92ZUNoaWxkcmVuLWNyYXNoMi5wbmcKbmV3
IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uMTM5MjkyZQpCaW5hcnkgZmlsZXMgL2Rl
di9udWxsIGFuZCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3Jlc291cmNlcy9yZW1vdmVDaGlsZHJl
bi1jcmFzaDIucG5nIGRpZmZlcgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJD
b3JlL0NoYW5nZUxvZwppbmRleCA5ODZkNjM4Li4wY2M5NmJlIDEwMDY0NAotLS0gYS9XZWJDb3Jl
L0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDA4
LTA0LTMwICBFcmljIFNlaWRlbCAgPGVyaWNAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDcmFzaCBpbiBDb250YWluZXJOb2RlOjpy
ZW1vdmVDaGlsZHJlbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTg4MDMKKworICAgICAgICBUZXN0OiBmYXN0L2RvbS9yZW1vdmVDaGlsZHJlbi1jcmFz
aC5odG1sCisKKyAgICAgICAgKiBkb20vQ29udGFpbmVyTm9kZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDb250YWluZXJOb2RlOjpyZW1vdmVDaGlsZHJlbik6CisKIDIwMDgtMTEtMTcgIE5pa29s
YXMgWmltbWVybWFubiAgPG5pa29sYXMuemltbWVybWFubkB0b3JjaG1vYmlsZS5jb20+CiAKICAg
ICAgICAgUmV2aWV3ZWQgYnkgR2VvcmdlIFN0YWlrb3MuCmRpZmYgLS1naXQgYS9XZWJDb3JlL2Rv
bS9Db250YWluZXJOb2RlLmNwcCBiL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwCmluZGV4
IDBmNDZhZTYuLjVhNjJlMjMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUu
Y3BwCisrKyBiL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwCkBAIC0zOTUsMjQgKzM5NSwy
MiBAQCBib29sIENvbnRhaW5lck5vZGU6OnJlbW92ZUNoaWxkcmVuKCkKICAgICBpZiAoIW1fZmly
c3RDaGlsZCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgTm9kZSogbjsKLSAgICAKLSAg
ICAvLyBkbyBhbnkgcHJlcCB3b3JrIG5lZWRlZCBiZWZvcmUgYWN0dWFsbHkgc3RhcnRpbmcgdG8g
ZGV0YWNoCi0gICAgLy8gYW5kIHJlbW92ZS4uLiBlLmcuIHN0b3AgbG9hZGluZyBmcmFtZXMsIGZp
cmUgdW5sb2FkIGV2ZW50cwotICAgIGZvciAobiA9IG1fZmlyc3RDaGlsZDsgbjsgbiA9IG4tPm5l
eHRTaWJsaW5nKCkpCi0gICAgICAgIHdpbGxSZW1vdmVDaGlsZChuKTsKKyAgICAvLyBEbyBhbnkg
cHJlcCB3b3JrIG5lZWRlZCBiZWZvcmUgYWN0dWFsbHkgc3RhcnRpbmcgdG8gZGV0YWNoCisgICAg
Ly8gYW5kIHJlbW92ZS4uLiBlLmcuIHN0b3AgbG9hZGluZyBmcmFtZXMsIGZpcmUgdW5sb2FkIGV2
ZW50cy4KKyAgICAvLyBBbiBldmVudCBjb3VsZCBjYXVzZSB0aGlzIGZ1bmN0aW9uIHRvIHJlLWVu
dGVyICh0aHVzIGNsZWFyaW5nIGFsbAorICAgIC8vIGNoaWxkcmVuKSwgc28gd2Uga2VlcCBuIGlu
IGEgUmVmUHRyLCBsZXN0IG4tPm5leHRTaWJsaW5nKCkgY3Jhc2ggKDE4ODAzKQorICAgIGZvciAo
UmVmUHRyPE5vZGU+IG4gPSBtX2ZpcnN0Q2hpbGQ7IG47IG4gPSBuLT5uZXh0U2libGluZygpKQor
ICAgICAgICB3aWxsUmVtb3ZlQ2hpbGQobi5nZXQoKSk7CiAgICAgCiAgICAgLy8gZXhjbHVkZSB0
aGlzIG5vZGUgd2hlbiBsb29raW5nIGZvciByZW1vdmVkIGZvY3VzZWROb2RlIHNpbmNlIG9ubHkg
Y2hpbGRyZW4gd2lsbCBiZSByZW1vdmVkCiAgICAgZG9jdW1lbnQoKS0+cmVtb3ZlRm9jdXNlZE5v
ZGVPZlN1YnRyZWUodGhpcywgdHJ1ZSk7CiAKICAgICBmb3JiaWRFdmVudERpc3BhdGNoKCk7CiAg
ICAgaW50IGNoaWxkQ291bnREZWx0YSA9IDA7Ci0gICAgd2hpbGUgKChuID0gbV9maXJzdENoaWxk
KSAhPSAwKSB7CisgICAgZm9yIChSZWZQdHI8Tm9kZT4gbiA9IG1fZmlyc3RDaGlsZDsgbV9maXJz
dENoaWxkOyBuID0gbV9maXJzdENoaWxkKSB7CiAgICAgICAgIGNoaWxkQ291bnREZWx0YS0tOwog
Ci0gICAgICAgIE5vZGUgKm5leHQgPSBuLT5uZXh0U2libGluZygpOwotICAgICAgICAKLSAgICAg
ICAgbi0+cmVmKCk7CisgICAgICAgIE5vZGUqIG5leHQgPSBuLT5uZXh0U2libGluZygpOwogCiAg
ICAgICAgIC8vIFJlbW92ZSB0aGUgbm9kZSBmcm9tIHRoZSB0cmVlIGJlZm9yZSBjYWxsaW5nIGRl
dGFjaCBvciByZW1vdmVkRnJvbURvY3VtZW50ICg0NDI3MDI0LCA0MTI5NzQ0KQogICAgICAgICBu
LT5zZXRQcmV2aW91c1NpYmxpbmcoMCk7CkBAIC00MjgsOCArNDI2LDYgQEAgYm9vbCBDb250YWlu
ZXJOb2RlOjpyZW1vdmVDaGlsZHJlbigpCiAgICAgICAgIAogICAgICAgICBpZiAobi0+aW5Eb2N1
bWVudCgpKQogICAgICAgICAgICAgbi0+cmVtb3ZlZEZyb21Eb2N1bWVudCgpOwotCi0gICAgICAg
IG4tPmRlcmVmKCk7CiAgICAgfQogICAgIGFsbG93RXZlbnREaXNwYXRjaCgpOwogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>