<?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>210354</bug_id>
          
          <creation_ts>2020-04-10 13:46:35 -0700</creation_ts>
          <short_desc>Infinite loop in InsertListCommand::doApply()</short_desc>
          <delta_ts>2020-04-15 15:01:57 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>HTML Editing</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Jack">shihchieh_lee</reporter>
          <assigned_to name="Jack">shihchieh_lee</assigned_to>
          <cc>darin</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>mifenton</cc>
    
    <cc>wenson_hsieh</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1640346</commentid>
    <comment_count>0</comment_count>
    <who name="Jack">shihchieh_lee</who>
    <bug_when>2020-04-10 13:46:35 -0700</bug_when>
    <thetext>&lt;rdar://61427778&gt; Infinite loop in InsertListCommand::doApply()

The condition check, !inSameParagraph(), in the while loop is always satisfied.

&lt;script&gt;
    window.onload = () =&gt; {
        window.getSelection().setBaseAndExtent(TH,1,SPAN,0);
        document.execCommand(&quot;insertUnorderedList&quot;, false);
    }
&lt;/script&gt;
&lt;body contenteditable=&quot;true&quot;&gt;&lt;table&gt;&lt;select&gt;&lt;/select&gt;&lt;th id=TH&gt;a&lt;/th&gt;&lt;sapn id=SPAN&gt;&lt;/span&gt;

1. The code is inserting an UL and going through each paragraph in the selected range.
2. After &lt;select&gt; is putting into a LI element, we try to find the next paragraph by calling startOfNextParagraph(endingSelection().visibleStart()), which indirectly calls nextVisuallyDistinctCandidate.
3. However, because table is now in &lt;body&gt;, function nextVisuallyDistinctCandidate cannot find next candidate and return null position.
4. As a result, the next paragraph becomes empty, and is assinged to variable startOfCurrentParagraph
5. Function inSameParagraph() always returns false with input of empty startOfCurrentParagraph.
6. The empty startOfNextParagraph is assigned to endingSelection.
7. The empty ending selection is again used to find the next paragraph by calling  startOfNextParagraph again as in step #1.
8. startOfNextParagraph returns empty position and assign it to startOfCurrentParagraph and start looping to step #5.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1640356</commentid>
    <comment_count>1</comment_count>
    <who name="Jack">shihchieh_lee</who>
    <bug_when>2020-04-10 14:13:02 -0700</bug_when>
    <thetext>There are two ways to patch this issue. One is to skip the while loop only and finishes the rest of the code. The other is to exit this function immediately.

The decision depends on whether an error occurs, such as some contents being deleted. Two immediate returns are found in the while loop.

However, in this particular test case, startOfNextParagraph returns empty location for a valid reason (no visually distinct candidate), so it is treated as no new paragraph is found, and we can just break out of the while loop.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1640436</commentid>
    <comment_count>2</comment_count>
    <who name="Jack">shihchieh_lee</who>
    <bug_when>2020-04-10 17:38:54 -0700</bug_when>
    <thetext>Node tree if we allow code to finish:

*#document	0x61f000031080 (renderer 0x61700003bc00) 
	HTML	0x60c000082f00 (renderer 0x612000081940) 
		HEAD	0x60c000082fc0 (renderer 0x0) 
			SCRIPT	0x61000002d440 (renderer 0x0) 
				#text	0x60800004f6a0 &quot;\n    window.onload = () =&gt; {\n        window.getSelection().setBaseAndExtent(TH,1,SPAN,0);\n        document.execCommand(&quot;insertUnorderedList&quot;, false);\n    }\n&quot;
			#text	0x60800004f7a0 &quot;\n&quot;
		BODY	0x60c000083b00 (renderer 0x612000081ac0) 
			UL	0x60c0000955c0 (renderer 0x6120000841c0) 
				LI	0x60c0000952c0 (renderer 0x612000084340) 
					SELECT	0x61300006d9c0 (renderer 0x615000089600) 
			TABLE	0x60e0000597c0 (renderer 0x61400003aa40) 
				TBODY	0x60c000083bc0 (renderer 0x61300006a000) 
					TR	0x60c000083c80 (renderer 0x6110000d1500) 
						TH	0x60c000083d40 (renderer 0x612000081f40) 
							UL	0x60c000027640 (renderer 0x612000085840) 
								LI	0x60c0000274c0 (renderer 0x612000085b40) 
									#text	0x608000019920 &quot;a&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1640442</commentid>
    <comment_count>3</comment_count>
    <who name="Jack">shihchieh_lee</who>
    <bug_when>2020-04-10 17:44:06 -0700</bug_when>
    <thetext>If we return prematurely when startOfNextParagraph returns empty position, the text node is not inserted in an UL.

BODY	0x60c000083500 (renderer 0x612000081ac0) 
	UL	0x60c000094fc0 (renderer 0x6120000841c0) 
		LI	0x60c000094cc0 (renderer 0x612000084340) 
			SELECT	0x61300006d9c0 (renderer 0x615000089380) 
	TABLE	0x60e0000596e0 (renderer 0x61400003aa40) 
		TBODY	0x60c0000835c0 (renderer 0x61300006a000) 
			TR	0x60c000083680 (renderer 0x6110000d1500) 
				TH	0x60c000083740 (renderer 0x612000081f40) 
*					#text	0x608000057820 &quot;a&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1640601</commentid>
    <comment_count>4</comment_count>
      <attachid>396189</attachid>
    <who name="Jack">shihchieh_lee</who>
    <bug_when>2020-04-11 13:49:20 -0700</bug_when>
    <thetext>Created attachment 396189
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1640627</commentid>
    <comment_count>5</comment_count>
      <attachid>396202</attachid>
    <who name="Jack">shihchieh_lee</who>
    <bug_when>2020-04-11 19:36:48 -0700</bug_when>
    <thetext>Created attachment 396202
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1640628</commentid>
    <comment_count>6</comment_count>
    <who name="Jack">shihchieh_lee</who>
    <bug_when>2020-04-11 19:42:46 -0700</bug_when>
    <thetext>Darin, thanks for reviewing the patch. I found that the minimized test case in the first patch doesn&apos;t reproduce on ToT so I uploaded the more complicated one as described in analysis.

(In reply to Jack from comment #5)
&gt; Created attachment 396202 [details]
&gt; Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1640630</commentid>
    <comment_count>7</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-04-11 20:13:23 -0700</bug_when>
    <thetext>Committed r259939: &lt;https://trac.webkit.org/changeset/259939&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 396202.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1640733</commentid>
    <comment_count>8</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2020-04-12 12:57:35 -0700</bug_when>
    <thetext>When constructing a test reduction, I usually check the render tree state right before when the bug occurs and reconstruct the markup accordingly. The normalization process (invalid content inside &lt;table&gt; etc) produces a tree that matches the following markup (notice how different the markup is).
 
&lt;body contenteditable=&quot;true&quot;&gt;&lt;input id=input&gt;&lt;table&gt;&lt;td id=td&gt;content&lt;/td&gt;&lt;/table&gt;&lt;/body&gt;
&lt;script&gt;
document.body.offsetHeight;
window.getSelection().setBaseAndExtent(td, 1, input, 0);
document.execCommand(&quot;insertUnorderedList&quot;, false);
document.body.offsetHeight;
document.body.innerText = &quot;Tests inserting list at the end of a table. The test passes if WebKit doesn&apos;t crash or hit an assertion.&quot;;
if (window.testRunner)
  testRunner.dumpAsText();
&lt;/script&gt;

Also, it&apos;s a good practice (slightly faster and less error-prone) to force layout in an inline script right after the body instead of the onload event (and the rAF in this test case was just a way to jump a run loop and have the content laid out which can also be replaced with a forced layout).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1640761</commentid>
    <comment_count>9</comment_count>
    <who name="Jack">shihchieh_lee</who>
    <bug_when>2020-04-12 19:10:48 -0700</bug_when>
    <thetext>Alan, thanks for the tips. I tried to simplify the tests as you mentioned by looking at the node tree, but didn&apos;t know enough to really make a good one.

It&apos;s great to have this as a template, but in the future I might still need your help on creating reduced test case.

I will submit a patch shortly. Thanks!

(In reply to zalan from comment #8)
&gt; When constructing a test reduction, I usually check the render tree state
&gt; right before when the bug occurs and reconstruct the markup accordingly. The
&gt; normalization process (invalid content inside &lt;table&gt; etc) produces a tree
&gt; that matches the following markup (notice how different the markup is).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1640762</commentid>
    <comment_count>10</comment_count>
    <who name="Jack">shihchieh_lee</who>
    <bug_when>2020-04-12 19:41:19 -0700</bug_when>
    <thetext>Reopening to attach new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1640763</commentid>
    <comment_count>11</comment_count>
      <attachid>396249</attachid>
    <who name="Jack">shihchieh_lee</who>
    <bug_when>2020-04-12 19:41:20 -0700</bug_when>
    <thetext>Created attachment 396249
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1641992</commentid>
    <comment_count>12</comment_count>
      <attachid>396249</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2020-04-15 14:50:30 -0700</bug_when>
    <thetext>Comment on attachment 396249
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1641998</commentid>
    <comment_count>13</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-04-15 15:01:57 -0700</bug_when>
    <thetext>Committed r260154: &lt;https://trac.webkit.org/changeset/260154&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 396249.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>396189</attachid>
            <date>2020-04-11 13:49:20 -0700</date>
            <delta_ts>2020-04-11 19:36:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-210354-20200411134919.patch</filename>
            <type>text/plain</type>
            <size>4282</size>
            <attacher name="Jack">shihchieh_lee</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU5OTM0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmQyMzM0OGQyNjJmNjg4
YjQ5YjFjNDBlMTI3MzVlYjIwNjExZDBkYi4uY2ZlNmQ1YTNlOGIwZGEwYTQwNjNmNzVhMTg0NmFi
NWIzZjNiODk1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDIwLTA0LTExICBKYWNr
IExlZSAgPHNoaWhjaGllaF9sZWVAYXBwbGUuY29tPgorCisgICAgICAgIEluZmluaXRlIGxvb3Ag
aW4gSW5zZXJ0TGlzdENvbW1hbmQ6OmRvQXBwbHkoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEwMzU0CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82
MTQyNzc3OD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBGdW5jdGlvbiBzdGFydE9mTmV4dFBhcmFncmFwaCBtYXkgcmV0dXJuIGFuIGVtcHR5IHBvc2l0
aW9uLiBBZGRlZCBudWxsIGNoZWNrIHRvIGV4aXQgdGhlIHdoaWxlIGxvb3AKKyAgICAgICAgYW5k
IHN0b3AgbG9va2luZyBmb3IgbmV4dCBwYXJhZ3JhcGguCisKKyAgICAgICAgVGVzdDogZWRpdGlu
Zy9pbnNlcnRpbmcvaW5zZXJ0LWxpc3QtZW5kLW9mLXRhYmxlLmh0bWwKKworICAgICAgICAqIGVk
aXRpbmcvSW5zZXJ0TGlzdENvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zZXJ0TGlz
dENvbW1hbmQ6OmRvQXBwbHkpOgorCiAyMDIwLTA0LTEwICBEYXJpbiBBZGxlciAgPGRhcmluQGFw
cGxlLmNvbT4KIAogICAgICAgICBNb3ZlIG1vcmUgZnJvbSBsaXZlIHJhbmdlIHRvIFNpbXBsZVJh
bmdlOiBjYWxsZXJzIG9mIGFic29sdXRlVGV4dFJlY3RzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0luc2VydExpc3RDb21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvSW5zZXJ0TGlzdENvbW1hbmQuY3BwCmluZGV4IGZlNGVkNDBlZDIyOTlkNjY3MGQ4NzI0OTll
ZjEyZjQxMmRjMWNkZTMuLjI3YWYxMzBjYWU4YWRhNGYxZWE3YTFiODFjN2QyNjA1MDg3NDEzYWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvSW5zZXJ0TGlzdENvbW1hbmQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvSW5zZXJ0TGlzdENvbW1hbmQuY3BwCkBAIC0x
NDUsNyArMTQ1LDcgQEAgdm9pZCBJbnNlcnRMaXN0Q29tbWFuZDo6ZG9BcHBseSgpCiAKICAgICAg
ICAgICAgICAgICBSZWZQdHI8UmFuZ2U+IGN1cnJlbnRTZWxlY3Rpb24gPSBlbmRpbmdTZWxlY3Rp
b24oKS5maXJzdFJhbmdlKCk7CiAgICAgICAgICAgICAgICAgVmlzaWJsZVBvc2l0aW9uIHN0YXJ0
T2ZDdXJyZW50UGFyYWdyYXBoID0gc3RhcnRPZlNlbGVjdGlvbjsKLSAgICAgICAgICAgICAgICB3
aGlsZSAoIWluU2FtZVBhcmFncmFwaChzdGFydE9mQ3VycmVudFBhcmFncmFwaCwgc3RhcnRPZkxh
c3RQYXJhZ3JhcGgsIENhbkNyb3NzRWRpdGluZ0JvdW5kYXJ5KSkgeworICAgICAgICAgICAgICAg
IHdoaWxlICghc3RhcnRPZkN1cnJlbnRQYXJhZ3JhcGguaXNOdWxsKCkgJiYgIWluU2FtZVBhcmFn
cmFwaChzdGFydE9mQ3VycmVudFBhcmFncmFwaCwgc3RhcnRPZkxhc3RQYXJhZ3JhcGgsIENhbkNy
b3NzRWRpdGluZ0JvdW5kYXJ5KSkgewogICAgICAgICAgICAgICAgICAgICAvLyBkb0FwcGx5KCkg
bWF5IG9wZXJhdGUgb24gYW5kIHJlbW92ZSB0aGUgbGFzdCBwYXJhZ3JhcGggb2YgdGhlIHNlbGVj
dGlvbiBmcm9tIHRoZSBkb2N1bWVudAogICAgICAgICAgICAgICAgICAgICAvLyBpZiBpdCdzIGlu
IHRoZSBzYW1lIGxpc3QgaXRlbSBhcyBzdGFydE9mQ3VycmVudFBhcmFncmFwaC4gUmV0dXJuIGVh
cmx5IHRvIGF2b2lkIGFuCiAgICAgICAgICAgICAgICAgICAgIC8vIGluZmluaXRlIGxvb3AgYW5k
IGJlY2F1c2UgdGhlcmUgaXMgbm8gbW9yZSB3b3JrIHRvIGJlIGRvbmUuCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggY2Q3MmMz
YzAyZGM1YzE0NDY4MjZiMzM0Nzg3NDI4YzI2ODk2YjQ1Mi4uZjQ5MzA3NTFiYThiYjY1M2I1ODFm
YWZmY2Y3MzgyMWNmYmJiNmZlOSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisr
KyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDIwLTA0LTExICBK
YWNrIExlZSAgPHNoaWhjaGllaF9sZWVAYXBwbGUuY29tPgorCisgICAgICAgIEluZmluaXRlIGxv
b3AgaW4gSW5zZXJ0TGlzdENvbW1hbmQ6OmRvQXBwbHkoKQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEwMzU0CisgICAgICAgIDxyZGFyOi8vcHJvYmxl
bS82MTQyNzc3OD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBBZGRlZCBhIHJlZ3Jlc3Npb24gdGVzdCBmb3IgdGhlIGNyYXNoLgorCisgICAgICAgICog
ZWRpdGluZy9pbnNlcnRpbmcvaW5zZXJ0LWxpc3QtZW5kLW9mLXRhYmxlLWV4cGVjdGVkLnR4dDog
QWRkZWQuCisgICAgICAgICogZWRpdGluZy9pbnNlcnRpbmcvaW5zZXJ0LWxpc3QtZW5kLW9mLXRh
YmxlLmh0bWw6IEFkZGVkLgorCiAyMDIwLTA0LTExICBEaWVnbyBQaW5vIEdhcmNpYSAgPGRwaW5v
QGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS10gR2FyZGVuaW5nIG9mIGVuY3J5cHRlZC1tZWRp
YSB0ZXN0cwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9pbnNlcnRpbmcvaW5zZXJ0
LWxpc3QtZW5kLW9mLXRhYmxlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2VkaXRpbmcvaW5z
ZXJ0aW5nL2luc2VydC1saXN0LWVuZC1vZi10YWJsZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
OWY3OGE3MGExZWEyMzc4YThmNTI5OWQ3MWE4ZWYwMWNmMmI3NDZmMwotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2VkaXRpbmcvaW5zZXJ0aW5nL2luc2VydC1saXN0LWVuZC1vZi10YWJs
ZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSBAQAorVGVzdHMgaW5zZXJ0aW5nIGxpc3QgYXQgdGhl
IGVuZCBvZiBhIHRhYmxlLiBUaGUgdGVzdCBwYXNzZXMgaWYgV2ViS2l0IGRvZXNuJ3QgY3Jhc2gg
b3IgaGl0IGFuIGFzc2VydGlvbi4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvaW5z
ZXJ0aW5nL2luc2VydC1saXN0LWVuZC1vZi10YWJsZS5odG1sIGIvTGF5b3V0VGVzdHMvZWRpdGlu
Zy9pbnNlcnRpbmcvaW5zZXJ0LWxpc3QtZW5kLW9mLXRhYmxlLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTA2
OWMzNzJmOTI0N2M2M2RkOGYyYjg1MmYzNDBmYzIwNjk0OTE0NgotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2VkaXRpbmcvaW5zZXJ0aW5nL2luc2VydC1saXN0LWVuZC1vZi10YWJsZS5o
dG1sCkBAIC0wLDAgKzEsMTggQEAKKzxzY3JpcHQ+CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVy
KSB7CisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgICAgICB0ZXN0UnVubmVy
LndhaXRVbnRpbERvbmUoKTsKKyAgICB9CisKKyAgICB3aW5kb3cub25sb2FkID0gKCkgPT4gewor
ICAgICAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuc2V0QmFzZUFuZEV4dGVudChUSCwwLFRELDEp
OworICAgICAgICBkb2N1bWVudC5leGVjQ29tbWFuZCgiaW5zZXJ0VW5vcmRlcmVkTGlzdCIsIGZh
bHNlKTsKKworICAgICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZnVuY3Rpb24gKCkgeworICAg
ICAgICAgICAgZG9jdW1lbnQuYm9keS5pbm5lckhUTUwgPSAiPHA+IFRlc3RzIGluc2VydGluZyBs
aXN0IGF0IHRoZSBlbmQgb2YgYSB0YWJsZS4gVGhlIHRlc3QgcGFzc2VzIGlmIFdlYktpdCBkb2Vz
bid0IGNyYXNoIG9yIGhpdCBhbiBhc3NlcnRpb24uPC9wPiI7CisgICAgICAgICAgICBpZiAod2lu
ZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7
CisgICAgICAgIH0pOworICAgIH0KKzwvc2NyaXB0PgorPGJvZHkgY29udGVudGVkaXRhYmxlPSJ0
cnVlIj48dGFibGU+PHRoIGlkPVRIPjwvdGg+PHRkIGlkPVREPmE8L3RkPjwvdHI+PC90YWJsZT48
L2JvZHk+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>396202</attachid>
            <date>2020-04-11 19:36:48 -0700</date>
            <delta_ts>2020-04-12 19:42:21 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-210354-20200411193647.patch</filename>
            <type>text/plain</type>
            <size>4296</size>
            <attacher name="Jack">shihchieh_lee</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU5OTM0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmQyMzM0OGQyNjJmNjg4
YjQ5YjFjNDBlMTI3MzVlYjIwNjExZDBkYi4uNWUyYTA1MDEwYWYxYTA3MDk3ODM0NjFkOWE1YjM1
ZmU2OWU3Nzk3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDIwLTA0LTExICBKYWNr
IExlZSAgPHNoaWhjaGllaF9sZWVAYXBwbGUuY29tPgorCisgICAgICAgIEluZmluaXRlIGxvb3Ag
aW4gSW5zZXJ0TGlzdENvbW1hbmQ6OmRvQXBwbHkoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEwMzU0CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82
MTQyNzc3OD4KKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBG
dW5jdGlvbiBzdGFydE9mTmV4dFBhcmFncmFwaCBtYXkgcmV0dXJuIGFuIGVtcHR5IHBvc2l0aW9u
LiBBZGRlZCBudWxsIGNoZWNrIHRvIGV4aXQgdGhlIHdoaWxlIGxvb3AKKyAgICAgICAgYW5kIHN0
b3AgbG9va2luZyBmb3IgbmV4dCBwYXJhZ3JhcGguCisKKyAgICAgICAgVGVzdDogZWRpdGluZy9p
bnNlcnRpbmcvaW5zZXJ0LWxpc3QtZW5kLW9mLXRhYmxlLmh0bWwKKworICAgICAgICAqIGVkaXRp
bmcvSW5zZXJ0TGlzdENvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zZXJ0TGlzdENv
bW1hbmQ6OmRvQXBwbHkpOgorCiAyMDIwLTA0LTEwICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxl
LmNvbT4KIAogICAgICAgICBNb3ZlIG1vcmUgZnJvbSBsaXZlIHJhbmdlIHRvIFNpbXBsZVJhbmdl
OiBjYWxsZXJzIG9mIGFic29sdXRlVGV4dFJlY3RzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0luc2VydExpc3RDb21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
SW5zZXJ0TGlzdENvbW1hbmQuY3BwCmluZGV4IGZlNGVkNDBlZDIyOTlkNjY3MGQ4NzI0OTllZjEy
ZjQxMmRjMWNkZTMuLjI3YWYxMzBjYWU4YWRhNGYxZWE3YTFiODFjN2QyNjA1MDg3NDEzYWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvSW5zZXJ0TGlzdENvbW1hbmQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvSW5zZXJ0TGlzdENvbW1hbmQuY3BwCkBAIC0xNDUs
NyArMTQ1LDcgQEAgdm9pZCBJbnNlcnRMaXN0Q29tbWFuZDo6ZG9BcHBseSgpCiAKICAgICAgICAg
ICAgICAgICBSZWZQdHI8UmFuZ2U+IGN1cnJlbnRTZWxlY3Rpb24gPSBlbmRpbmdTZWxlY3Rpb24o
KS5maXJzdFJhbmdlKCk7CiAgICAgICAgICAgICAgICAgVmlzaWJsZVBvc2l0aW9uIHN0YXJ0T2ZD
dXJyZW50UGFyYWdyYXBoID0gc3RhcnRPZlNlbGVjdGlvbjsKLSAgICAgICAgICAgICAgICB3aGls
ZSAoIWluU2FtZVBhcmFncmFwaChzdGFydE9mQ3VycmVudFBhcmFncmFwaCwgc3RhcnRPZkxhc3RQ
YXJhZ3JhcGgsIENhbkNyb3NzRWRpdGluZ0JvdW5kYXJ5KSkgeworICAgICAgICAgICAgICAgIHdo
aWxlICghc3RhcnRPZkN1cnJlbnRQYXJhZ3JhcGguaXNOdWxsKCkgJiYgIWluU2FtZVBhcmFncmFw
aChzdGFydE9mQ3VycmVudFBhcmFncmFwaCwgc3RhcnRPZkxhc3RQYXJhZ3JhcGgsIENhbkNyb3Nz
RWRpdGluZ0JvdW5kYXJ5KSkgewogICAgICAgICAgICAgICAgICAgICAvLyBkb0FwcGx5KCkgbWF5
IG9wZXJhdGUgb24gYW5kIHJlbW92ZSB0aGUgbGFzdCBwYXJhZ3JhcGggb2YgdGhlIHNlbGVjdGlv
biBmcm9tIHRoZSBkb2N1bWVudAogICAgICAgICAgICAgICAgICAgICAvLyBpZiBpdCdzIGluIHRo
ZSBzYW1lIGxpc3QgaXRlbSBhcyBzdGFydE9mQ3VycmVudFBhcmFncmFwaC4gUmV0dXJuIGVhcmx5
IHRvIGF2b2lkIGFuCiAgICAgICAgICAgICAgICAgICAgIC8vIGluZmluaXRlIGxvb3AgYW5kIGJl
Y2F1c2UgdGhlcmUgaXMgbm8gbW9yZSB3b3JrIHRvIGJlIGRvbmUuCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggY2Q3MmMzYzAy
ZGM1YzE0NDY4MjZiMzM0Nzg3NDI4YzI2ODk2YjQ1Mi4uOTJhMzMwZDE3ZTBjMDc4OGZjNjU3ZDEz
ZDBlZTdjYTllZWQyYjM4MCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBi
L0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDIwLTA0LTExICBKYWNr
IExlZSAgPHNoaWhjaGllaF9sZWVAYXBwbGUuY29tPgorCisgICAgICAgIEluZmluaXRlIGxvb3Ag
aW4gSW5zZXJ0TGlzdENvbW1hbmQ6OmRvQXBwbHkoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEwMzU0CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82
MTQyNzc3OD4KKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBB
ZGRlZCBhIHJlZ3Jlc3Npb24gdGVzdCBmb3IgdGhlIGNyYXNoLgorCisgICAgICAgICogZWRpdGlu
Zy9pbnNlcnRpbmcvaW5zZXJ0LWxpc3QtZW5kLW9mLXRhYmxlLWV4cGVjdGVkLnR4dDogQWRkZWQu
CisgICAgICAgICogZWRpdGluZy9pbnNlcnRpbmcvaW5zZXJ0LWxpc3QtZW5kLW9mLXRhYmxlLmh0
bWw6IEFkZGVkLgorCiAyMDIwLTA0LTExICBEaWVnbyBQaW5vIEdhcmNpYSAgPGRwaW5vQGlnYWxp
YS5jb20+CiAKICAgICAgICAgW0dUS10gR2FyZGVuaW5nIG9mIGVuY3J5cHRlZC1tZWRpYSB0ZXN0
cwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9pbnNlcnRpbmcvaW5zZXJ0LWxpc3Qt
ZW5kLW9mLXRhYmxlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2VkaXRpbmcvaW5zZXJ0aW5n
L2luc2VydC1saXN0LWVuZC1vZi10YWJsZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWY3OGE3
MGExZWEyMzc4YThmNTI5OWQ3MWE4ZWYwMWNmMmI3NDZmMwotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2VkaXRpbmcvaW5zZXJ0aW5nL2luc2VydC1saXN0LWVuZC1vZi10YWJsZS1leHBl
Y3RlZC50eHQKQEAgLTAsMCArMSBAQAorVGVzdHMgaW5zZXJ0aW5nIGxpc3QgYXQgdGhlIGVuZCBv
ZiBhIHRhYmxlLiBUaGUgdGVzdCBwYXNzZXMgaWYgV2ViS2l0IGRvZXNuJ3QgY3Jhc2ggb3IgaGl0
IGFuIGFzc2VydGlvbi4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvaW5zZXJ0aW5n
L2luc2VydC1saXN0LWVuZC1vZi10YWJsZS5odG1sIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9pbnNl
cnRpbmcvaW5zZXJ0LWxpc3QtZW5kLW9mLXRhYmxlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjFjMzZkMjhi
M2Y0ZDQyZTg4OGMwNGI4YjI2NzgzMTMzZGU5NjY1ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2VkaXRpbmcvaW5zZXJ0aW5nL2luc2VydC1saXN0LWVuZC1vZi10YWJsZS5odG1sCkBA
IC0wLDAgKzEsMTggQEAKKzxzY3JpcHQ+CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7Cisg
ICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgICAgICB0ZXN0UnVubmVyLndhaXRV
bnRpbERvbmUoKTsKKyAgICB9CisKKyAgICB3aW5kb3cub25sb2FkID0gKCkgPT4geworICAgICAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuc2V0QmFzZUFuZEV4dGVudChUSCwxLFNQQU4sMCk7Cisg
ICAgICAgIGRvY3VtZW50LmV4ZWNDb21tYW5kKCJpbnNlcnRVbm9yZGVyZWRMaXN0IiwgZmFsc2Up
OworCisgICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZShmdW5jdGlvbiAoKSB7CisgICAgICAg
ICAgICBkb2N1bWVudC5ib2R5LmlubmVySFRNTCA9ICI8cD4gVGVzdHMgaW5zZXJ0aW5nIGxpc3Qg
YXQgdGhlIGVuZCBvZiBhIHRhYmxlLiBUaGUgdGVzdCBwYXNzZXMgaWYgV2ViS2l0IGRvZXNuJ3Qg
Y3Jhc2ggb3IgaGl0IGFuIGFzc2VydGlvbi48L3A+IjsKKyAgICAgICAgICAgIGlmICh3aW5kb3cu
dGVzdFJ1bm5lcikKKyAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKKyAg
ICAgICAgfSk7CisgICAgfQorPC9zY3JpcHQ+Cis8Ym9keSBjb250ZW50ZWRpdGFibGU9InRydWUi
Pjx0YWJsZT48c2VsZWN0Pjwvc2VsZWN0Pjx0aCBpZD1USD5hPC90aD48c3BhbiBpZD1TUEFOPjwv
c3Bhbj48L3RhYmxlPjwvYm9keT4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>396249</attachid>
            <date>2020-04-12 19:41:20 -0700</date>
            <delta_ts>2020-04-15 15:01:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-210354-20200412194120.patch</filename>
            <type>text/plain</type>
            <size>2079</size>
            <attacher name="Jack">shihchieh_lee</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU5OTM0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggY2Q3MmMzYzAyZGM1YzE0NDY4MjZi
MzM0Nzg3NDI4YzI2ODk2YjQ1Mi4uMDU1NmZkNDQ4MmEyYTVmMDQ5YTRhZDE1NTRkMDlmNjEyZGEy
ZjkzYiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDIwLTA0LTEyICBKYWNrIExlZSAgPHNoaWhj
aGllaF9sZWVAYXBwbGUuY29tPgorCisgICAgICAgIEluZmluaXRlIGxvb3AgaW4gSW5zZXJ0TGlz
dENvbW1hbmQ6OmRvQXBwbHkoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjEwMzU0CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82MTQyNzc3OD4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGUgdGhl
IHJlZ3Jlc3Npb24gdGVzdCBmb3IgdGhpcyBoYW5nIGlzc3VlLgorCisgICAgICAgICogZWRpdGlu
Zy9pbnNlcnRpbmcvaW5zZXJ0LWxpc3QtZW5kLW9mLXRhYmxlLWV4cGVjdGVkLnR4dDogQWRkZWQu
CisgICAgICAgICogZWRpdGluZy9pbnNlcnRpbmcvaW5zZXJ0LWxpc3QtZW5kLW9mLXRhYmxlLmh0
bWw6IEFkZGVkLgorCiAyMDIwLTA0LTExICBEaWVnbyBQaW5vIEdhcmNpYSAgPGRwaW5vQGlnYWxp
YS5jb20+CiAKICAgICAgICAgW0dUS10gR2FyZGVuaW5nIG9mIGVuY3J5cHRlZC1tZWRpYSB0ZXN0
cwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9pbnNlcnRpbmcvaW5zZXJ0LWxpc3Qt
ZW5kLW9mLXRhYmxlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2VkaXRpbmcvaW5zZXJ0aW5n
L2luc2VydC1saXN0LWVuZC1vZi10YWJsZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWY3OGE3
MGExZWEyMzc4YThmNTI5OWQ3MWE4ZWYwMWNmMmI3NDZmMwotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2VkaXRpbmcvaW5zZXJ0aW5nL2luc2VydC1saXN0LWVuZC1vZi10YWJsZS1leHBl
Y3RlZC50eHQKQEAgLTAsMCArMSBAQAorVGVzdHMgaW5zZXJ0aW5nIGxpc3QgYXQgdGhlIGVuZCBv
ZiBhIHRhYmxlLiBUaGUgdGVzdCBwYXNzZXMgaWYgV2ViS2l0IGRvZXNuJ3QgY3Jhc2ggb3IgaGl0
IGFuIGFzc2VydGlvbi4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvaW5zZXJ0aW5n
L2luc2VydC1saXN0LWVuZC1vZi10YWJsZS5odG1sIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9pbnNl
cnRpbmcvaW5zZXJ0LWxpc3QtZW5kLW9mLXRhYmxlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjAwNGE1NDUz
ZWZjZGI2ZjFiMmQ2MDI2Yzc0OTVmZGI3MWVmNWVlYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2VkaXRpbmcvaW5zZXJ0aW5nL2luc2VydC1saXN0LWVuZC1vZi10YWJsZS5odG1sCkBA
IC0wLDAgKzEsMTAgQEAKKzxib2R5IGNvbnRlbnRlZGl0YWJsZT0idHJ1ZSI+PGlucHV0IGlkPWlu
cHV0Pjx0YWJsZT48dGQgaWQ9dGQ+Y29udGVudDwvdGQ+PC90YWJsZT48L2JvZHk+Cis8c2NyaXB0
PgorZG9jdW1lbnQuYm9keS5vZmZzZXRIZWlnaHQ7Cit3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuc2V0
QmFzZUFuZEV4dGVudCh0ZCwgMSwgaW5wdXQsIDApOworZG9jdW1lbnQuZXhlY0NvbW1hbmQoImlu
c2VydFVub3JkZXJlZExpc3QiLCBmYWxzZSk7Citkb2N1bWVudC5ib2R5Lm9mZnNldEhlaWdodDsK
K2RvY3VtZW50LmJvZHkuaW5uZXJUZXh0ID0gIlRlc3RzIGluc2VydGluZyBsaXN0IGF0IHRoZSBl
bmQgb2YgYSB0YWJsZS4gVGhlIHRlc3QgcGFzc2VzIGlmIFdlYktpdCBkb2Vzbid0IGNyYXNoIG9y
IGhpdCBhbiBhc3NlcnRpb24uIjsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgdGVzdFJ1bm5l
ci5kdW1wQXNUZXh0KCk7Cis8L3NjcmlwdD4K
</data>

          </attachment>
      

    </bug>

</bugzilla>