<?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>206724</bug_id>
          
          <creation_ts>2020-01-23 17:56:48 -0800</creation_ts>
          <short_desc>Nullptr crash when setting custom properties on detached style</short_desc>
          <delta_ts>2020-01-29 00:05:04 -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>CSS</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</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="Sunny He">sunny_he</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>rniwa</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1610449</commentid>
    <comment_count>0</comment_count>
    <who name="Sunny He">sunny_he</who>
    <bug_when>2020-01-23 17:56:48 -0800</bug_when>
    <thetext>rdar://56687964</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1610458</commentid>
    <comment_count>1</comment_count>
      <attachid>388631</attachid>
    <who name="Sunny He">sunny_he</who>
    <bug_when>2020-01-23 18:07:37 -0800</bug_when>
    <thetext>Created attachment 388631
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1611188</commentid>
    <comment_count>2</comment_count>
      <attachid>388631</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2020-01-26 12:06:37 -0800</bug_when>
    <thetext>Comment on attachment 388631
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=388631&amp;action=review

&gt; LayoutTests/fast/dom/StyleSheet/detached-style-set-custom-property.html:18
&gt; +    &lt;script src=&quot;../../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;

Please use ../../../resources/js-test.js instead of js-test-pre.js, then js-test-post.js is not needed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1611287</commentid>
    <comment_count>3</comment_count>
      <attachid>388631</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-01-26 21:33:17 -0800</bug_when>
    <thetext>Comment on attachment 388631
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=388631&amp;action=review

&gt; Source/WebCore/css/PropertySetCSSStyleDeclaration.cpp:260
&gt; +        ASSERT(document);

Why is this assertion safe? Since m_lastDocument is a WeakPtr, what guarantees it won’t be null?

&gt; Source/WebCore/css/PropertySetCSSStyleDeclaration.h:63
&gt; +    WeakPtr&lt;Document&gt; m_lastDocument;

This doesn’t seem like the right approach to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1611288</commentid>
    <comment_count>4</comment_count>
      <attachid>388631</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-01-26 21:38:12 -0800</bug_when>
    <thetext>Comment on attachment 388631
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=388631&amp;action=review

What causes the crash? It seems like the setCustomProperty function already tries to handle a null document. Where does the crash occur?

&gt;&gt; Source/WebCore/css/PropertySetCSSStyleDeclaration.h:63
&gt;&gt; +    WeakPtr&lt;Document&gt; m_lastDocument;
&gt; 
&gt; This doesn’t seem like the right approach to me.

I think this could be done with just a plain Ref&lt;Document&gt; that is initialized when the declaration is created and always used. I don’t think there’s any real risk of a reference cycle. And then we would not have to complicate the clearParentRule and clearParentElement functions.

But more importantly, I don’t understand what about a null document causes a crash.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1611687</commentid>
    <comment_count>5</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2020-01-27 16:18:39 -0800</bug_when>
    <thetext>(In reply to Darin Adler from comment #4)
&gt; Comment on attachment 388631 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=388631&amp;action=review
&gt; 
&gt; What causes the crash? It seems like the setCustomProperty function already
&gt; tries to handle a null document. Where does the crash occur?

Ah, the crash happens because we try to dereference parentStyleSheet(), not document itself.

&gt; &gt;&gt; Source/WebCore/css/PropertySetCSSStyleDeclaration.h:63
&gt; &gt;&gt; +    WeakPtr&lt;Document&gt; m_lastDocument;
&gt; &gt; 
&gt; &gt; This doesn’t seem like the right approach to me.
&gt; 
&gt; I think this could be done with just a plain Ref&lt;Document&gt; that is
&gt; initialized when the declaration is created and always used. I don’t think
&gt; there’s any real risk of a reference cycle. And then we would not have to
&gt; complicate the clearParentRule and clearParentElement functions.

We can&apos;t quite do that the document associated with a given PropertySetCSSStyleDeclaration can change when the owner element gets adopted to another document (e.g. via document.adoptNode).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1611688</commentid>
    <comment_count>6</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2020-01-27 16:21:36 -0800</bug_when>
    <thetext>It&apos;s a good point that we can probably use a RefPtr&lt;Document&gt; instead of WeakPtr&lt;Document&gt; although we should make sure we&apos;re not introducing new leaks by running CSS layout tests with --world-leaks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1611692</commentid>
    <comment_count>7</comment_count>
      <attachid>388631</attachid>
    <who name="Sunny He">sunny_he</who>
    <bug_when>2020-01-27 16:33:27 -0800</bug_when>
    <thetext>Comment on attachment 388631
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=388631&amp;action=review

&gt;&gt; Source/WebCore/css/PropertySetCSSStyleDeclaration.cpp:260
&gt;&gt; +        ASSERT(document);
&gt; 
&gt; Why is this assertion safe? Since m_lastDocument is a WeakPtr, what guarantees it won’t be null?

This assert shouldn&apos;t be here, it&apos;s a leftover from debugging. setCustomProperty can handle null document, the crash was from assuming there would always be a parentStyleSheet() when there isn&apos;t a parentElement().

&gt;&gt; LayoutTests/fast/dom/StyleSheet/detached-style-set-custom-property.html:18
&gt;&gt; +    &lt;script src=&quot;../../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
&gt; 
&gt; Please use ../../../resources/js-test.js instead of js-test-pre.js, then js-test-post.js is not needed.

Thanks, will fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1611702</commentid>
    <comment_count>8</comment_count>
      <attachid>388631</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-01-27 16:50:09 -0800</bug_when>
    <thetext>Comment on attachment 388631
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=388631&amp;action=review

&gt;&gt;&gt; Source/WebCore/css/PropertySetCSSStyleDeclaration.cpp:260
&gt;&gt;&gt; +        ASSERT(document);
&gt;&gt; 
&gt;&gt; Why is this assertion safe? Since m_lastDocument is a WeakPtr, what guarantees it won’t be null?
&gt; 
&gt; This assert shouldn&apos;t be here, it&apos;s a leftover from debugging. setCustomProperty can handle null document, the crash was from assuming there would always be a parentStyleSheet() when there isn&apos;t a parentElement().

If parentStyleSheet is null too, then why can&apos;t we let document be null? Why do we need this m_lastDocument trick?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1611703</commentid>
    <comment_count>9</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2020-01-27 16:51:36 -0800</bug_when>
    <thetext>(In reply to Darin Adler from comment #8)
&gt; Comment on attachment 388631 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=388631&amp;action=review
&gt; 
&gt; &gt;&gt;&gt; Source/WebCore/css/PropertySetCSSStyleDeclaration.cpp:260
&gt; &gt;&gt;&gt; +        ASSERT(document);
&gt; &gt;&gt; 
&gt; &gt;&gt; Why is this assertion safe? Since m_lastDocument is a WeakPtr, what guarantees it won’t be null?
&gt; &gt; 
&gt; &gt; This assert shouldn&apos;t be here, it&apos;s a leftover from debugging. setCustomProperty can handle null document, the crash was from assuming there would always be a parentStyleSheet() when there isn&apos;t a parentElement().
&gt; 
&gt; If parentStyleSheet is null too, then why can&apos;t we let document be null? Why
&gt; do we need this m_lastDocument trick?

If document is null, then we wouldn&apos;t be able to get to the custom property registry &amp; parse the property as &quot;*&quot; as opposed to whatever syntax currently defined by the author script. On the other hand, that&apos;s not a terrible outcome for now since custom registry isn&apos;t really something we currently ship.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1611776</commentid>
    <comment_count>10</comment_count>
      <attachid>388958</attachid>
    <who name="Sunny He">sunny_he</who>
    <bug_when>2020-01-27 18:44:36 -0800</bug_when>
    <thetext>Created attachment 388958
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1612339</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-01-29 00:04:25 -0800</bug_when>
    <thetext>The commit-queue encountered the following flaky tests while processing attachment 388958:

editing/spelling/spellcheck-async-remove-frame.html bug 158401 (authors: morrita@google.com, rniwa@webkit.org, and tony@chromium.org)
The commit-queue is continuing to process your patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1612340</commentid>
    <comment_count>12</comment_count>
      <attachid>388958</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-01-29 00:05:02 -0800</bug_when>
    <thetext>Comment on attachment 388958
Patch

Clearing flags on attachment: 388958

Committed r255340: &lt;https://trac.webkit.org/changeset/255340&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1612341</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-01-29 00:05:04 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>388631</attachid>
            <date>2020-01-23 18:07:37 -0800</date>
            <delta_ts>2020-01-27 18:44:35 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-206724-20200123180736.patch</filename>
            <type>text/plain</type>
            <size>6644</size>
            <attacher name="Sunny He">sunny_he</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU1MDM5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmYyYmM1NmQ2NWQ1NzVm
N2YwOWQ3ZGVmMGFhNDY0NjgzMDU4ZDUyMC4uMjJiYjBmMjM1YjA3NTM3NGVlZWExNDMyNzhjMTMx
ZmI1ZGI5ZGQ5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDIwLTAxLTIzICBTdW5u
eSBIZSAgPHN1bm55X2hlQGFwcGxlLmNvbT4KKworICAgICAgICBOdWxscHRyIGNyYXNoIHdoZW4g
c2V0dGluZyBjdXN0b20gcHJvcGVydGllcyBvbiBkZXRhY2hlZCBzdHlsZQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA2NzI0CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdDogZmFzdC9kb20vU3R5bGVT
aGVldC9kZXRhY2hlZC1zdHlsZS1zZXQtY3VzdG9tLXByb3BlcnR5Lmh0bWwKKworICAgICAgICAq
IGNzcy9Qcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uOjpzZXRQcm9wZXJ0eSk6CisgICAgICAg
IChXZWJDb3JlOjpTdHlsZVJ1bGVDU1NTdHlsZURlY2xhcmF0aW9uOjpjbGVhclBhcmVudFJ1bGUp
OgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lQ1NTU3R5bGVEZWNsYXJhdGlvbjo6Y2xlYXJQYXJl
bnRFbGVtZW50KToKKyAgICAgICAgKiBjc3MvUHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9u
Lmg6CisKIDIwMjAtMDEtMjMgIERhdmlkIEtpbHplciAgPGRka2lsemVyQGFwcGxlLmNvbT4KIAog
ICAgICAgICBFbmFibGUgLVdjb25kaXRpb25hbC11bmluaXRpYWxpemVkIGluIFdlYkNvcmUgcHJv
amVjdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1Byb3BlcnR5U2V0Q1NTU3R5bGVE
ZWNsYXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvUHJvcGVydHlTZXRDU1NTdHlsZURl
Y2xhcmF0aW9uLmNwcAppbmRleCBkMzE1MjExNTg5NzEzMWRjZmNkYTcyNjE4NmM2NWE0NDAxMGFi
MGVkLi43OWRmYjJhMWFmZmE1YWU0ZTJmNDkxODRmMjMzN2VkYWY0MmM3NmI3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvUHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvUHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uLmNw
cApAQCAtMjUyLDkgKzI1MiwxMiBAQCBFeGNlcHRpb25Pcjx2b2lkPiBQcm9wZXJ0eVNldENTU1N0
eWxlRGVjbGFyYXRpb246OnNldFByb3BlcnR5KGNvbnN0IFN0cmluZyYgcHJvcAogCiAgICAgICAg
IGlmIChwYXJlbnRFbGVtZW50KCkpCiAgICAgICAgICAgICBkb2N1bWVudCA9ICZwYXJlbnRFbGVt
ZW50KCktPmRvY3VtZW50KCk7Ci0gICAgICAgIGVsc2UKKyAgICAgICAgZWxzZSBpZiAocGFyZW50
U3R5bGVTaGVldCgpKQogICAgICAgICAgICAgZG9jdW1lbnQgPSBwYXJlbnRTdHlsZVNoZWV0KCkt
Pm93bmVyRG9jdW1lbnQoKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgZG9jdW1lbnQgPSBt
X2xhc3REb2N1bWVudC5nZXQoKTsKIAorICAgICAgICBBU1NFUlQoZG9jdW1lbnQpOwogICAgICAg
ICBjaGFuZ2VkID0gbV9wcm9wZXJ0eVNldC0+c2V0Q3VzdG9tUHJvcGVydHkoZG9jdW1lbnQsIHBy
b3BlcnR5TmFtZSwgdmFsdWUsIGltcG9ydGFudCwgY3NzUGFyc2VyQ29udGV4dCgpKTsKICAgICB9
IGVsc2UKICAgICAgICAgY2hhbmdlZCA9IG1fcHJvcGVydHlTZXQtPnNldFByb3BlcnR5KHByb3Bl
cnR5SUQsIHZhbHVlLCBpbXBvcnRhbnQsIGNzc1BhcnNlckNvbnRleHQoKSk7CkBAIC0zNjksNiAr
MzcyLDE0IEBAIFN0eWxlUnVsZUNTU1N0eWxlRGVjbGFyYXRpb246On5TdHlsZVJ1bGVDU1NTdHls
ZURlY2xhcmF0aW9uKCkKICAgICBtX3Byb3BlcnR5U2V0LT5kZXJlZigpOwogfQogCit2b2lkIFN0
eWxlUnVsZUNTU1N0eWxlRGVjbGFyYXRpb246OmNsZWFyUGFyZW50UnVsZSgpCit7CisgICAgLy8g
U2F2ZSB0aGUgbGFzdCBEb2N1bWVudCB3ZSBoYWQgaW4gY2FzZSBzb21lb25lIHRyaWVzIHRvIHNl
dCBhIGN1c3RvbSBwcm9wZXJ0eS4KKyAgICBpZiAobV9wYXJlbnRSdWxlLT5wYXJlbnRTdHlsZVNo
ZWV0KCkpCisgICAgICAgIG1fbGFzdERvY3VtZW50ID0gbWFrZVdlYWtQdHIobV9wYXJlbnRSdWxl
LT5wYXJlbnRTdHlsZVNoZWV0KCktPm93bmVyRG9jdW1lbnQoKSk7CisgICAgbV9wYXJlbnRSdWxl
ID0gbnVsbHB0cjsKK30KKwogdm9pZCBTdHlsZVJ1bGVDU1NTdHlsZURlY2xhcmF0aW9uOjpyZWYo
KQogeyAKICAgICArK21fcmVmQ291bnQ7CkBAIC00MjYsNiArNDM3LDEzIEBAIHZvaWQgU3R5bGVS
dWxlQ1NTU3R5bGVEZWNsYXJhdGlvbjo6cmVhdHRhY2goTXV0YWJsZVN0eWxlUHJvcGVydGllcyYg
cHJvcGVydHlTZXQpCiAgICAgbV9wcm9wZXJ0eVNldC0+cmVmKCk7CiB9CiAKK3ZvaWQgSW5saW5l
Q1NTU3R5bGVEZWNsYXJhdGlvbjo6Y2xlYXJQYXJlbnRFbGVtZW50KCkKK3sKKyAgICAvLyBTYXZl
IHRoZSBsYXN0IERvY3VtZW50IHdlIGhhZCBpbiBjYXNlIHNvbWVvbmUgdHJpZXMgdG8gc2V0IGEg
Y3VzdG9tIHByb3BlcnR5LgorICAgIG1fbGFzdERvY3VtZW50ID0gbWFrZVdlYWtQdHIobV9wYXJl
bnRFbGVtZW50LT5kb2N1bWVudCgpKTsKKyAgICBtX3BhcmVudEVsZW1lbnQgPSBudWxscHRyOwor
fQorCiBib29sIElubGluZUNTU1N0eWxlRGVjbGFyYXRpb246OndpbGxNdXRhdGUoKQogewogICAg
IGlmIChtX3BhcmVudEVsZW1lbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvUHJv
cGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvUHJvcGVy
dHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uLmgKaW5kZXggM2QzNDJjODg2MGU0YWRhYjJmZGM1YjNm
ZmE3ZDQzYmIyOWU0MGU5Zi4uMTNmMDFiMzhmZDVkZGY5ZWE0OWIwZDJiZGY2Yzk1YWJkZmRhMjY3
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1Byb3BlcnR5U2V0Q1NTU3R5bGVEZWNs
YXJhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Qcm9wZXJ0eVNldENTU1N0eWxlRGVj
bGFyYXRpb24uaApAQCAtNjAsNiArNjAsNyBAQCBwcm90ZWN0ZWQ6CiAKICAgICBNdXRhYmxlU3R5
bGVQcm9wZXJ0aWVzKiBtX3Byb3BlcnR5U2V0OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxIYXNoTWFw
PENTU1ZhbHVlKiwgV2Vha1B0cjxEZXByZWNhdGVkQ1NTT01WYWx1ZT4+PiBtX2Nzc29tVmFsdWVX
cmFwcGVyczsKKyAgICBXZWFrUHRyPERvY3VtZW50PiBtX2xhc3REb2N1bWVudDsKIAogcHJpdmF0
ZToKICAgICB2b2lkIHJlZigpIG92ZXJyaWRlOwpAQCAtOTgsNyArOTksNyBAQCBwdWJsaWM6CiAg
ICAgfQogICAgIHZpcnR1YWwgflN0eWxlUnVsZUNTU1N0eWxlRGVjbGFyYXRpb24oKTsKIAotICAg
IHZvaWQgY2xlYXJQYXJlbnRSdWxlKCkgeyBtX3BhcmVudFJ1bGUgPSBudWxscHRyOyB9CisgICAg
dm9pZCBjbGVhclBhcmVudFJ1bGUoKTsKICAgICAKICAgICB2b2lkIHJlZigpIGZpbmFsOwogICAg
IHZvaWQgZGVyZWYoKSBmaW5hbDsKQEAgLTEzMiw4ICsxMzMsOCBAQCBwdWJsaWM6CiBwcml2YXRl
OgogICAgIENTU1N0eWxlU2hlZXQqIHBhcmVudFN0eWxlU2hlZXQoKSBjb25zdCBmaW5hbDsKICAg
ICBTdHlsZWRFbGVtZW50KiBwYXJlbnRFbGVtZW50KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9w
YXJlbnRFbGVtZW50OyB9Ci0gICAgdm9pZCBjbGVhclBhcmVudEVsZW1lbnQoKSBmaW5hbCB7IG1f
cGFyZW50RWxlbWVudCA9IG51bGxwdHI7IH0KLQorICAgIAorICAgIHZvaWQgY2xlYXJQYXJlbnRF
bGVtZW50KCkgZmluYWw7CiAgICAgYm9vbCB3aWxsTXV0YXRlKCkgZmluYWwgV0FSTl9VTlVTRURf
UkVUVVJOOwogICAgIHZvaWQgZGlkTXV0YXRlKE11dGF0aW9uVHlwZSkgZmluYWw7CiAgICAgQ1NT
UGFyc2VyQ29udGV4dCBjc3NQYXJzZXJDb250ZXh0KCkgY29uc3QgZmluYWw7CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNDg1
YTEzOTA4MTJiZmRmYmIyMjUwMmFmMDBjODc0ODJjZDZmMmMwNi4uY2UyMTMxYjY3YTlkYzk0NmVk
NmQ0YTk2NmU1OGE4NzQ1MmZmNjZkYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDIwLTAxLTIz
ICBTdW5ueSBIZSAgPHN1bm55X2hlQGFwcGxlLmNvbT4KKworICAgICAgICBOdWxscHRyIGNyYXNo
IHdoZW4gc2V0dGluZyBjdXN0b20gcHJvcGVydGllcyBvbiBkZXRhY2hlZCBzdHlsZQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA2NzI0CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBmYXN0L2RvbS9TdHls
ZVNoZWV0L2RldGFjaGVkLXN0eWxlLXNldC1jdXN0b20tcHJvcGVydHktZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9TdHlsZVNoZWV0L2RldGFjaGVkLXN0eWxlLXNldC1j
dXN0b20tcHJvcGVydHkuaHRtbDogQWRkZWQuCisKIDIwMjAtMDEtMjMgIERpZWdvIFBpbm8gR2Fy
Y2lhICA8ZHBpbm9AaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXSBHYXJkZW5pbmcsIHJlYmFz
ZWxpbmVzIGFuZCB1cGRhdGUgVGVzdEV4cGVjdGF0aW9ucwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZmFzdC9kb20vU3R5bGVTaGVldC9kZXRhY2hlZC1zdHlsZS1zZXQtY3VzdG9tLXByb3BlcnR5
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL1N0eWxlU2hlZXQvZGV0YWNoZWQt
c3R5bGUtc2V0LWN1c3RvbS1wcm9wZXJ0eS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODhkYTNm
NGM0MzliMGI0NWIyODQyNjkxODI5MzVkNTU1Y2Q5NDU0OQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2Zhc3QvZG9tL1N0eWxlU2hlZXQvZGV0YWNoZWQtc3R5bGUtc2V0LWN1c3RvbS1w
cm9wZXJ0eS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMSBAQAorVGVzdCBzZXR0aW5nIGN1c3Rv
bSBwcm9wZXJ0aWVzIG9uIGRldGFjaGVkIHN0eWxlcworCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBz
ZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVU
RSIuCisKKworUEFTUyBlbGVtZW50LmF0dHJpYnV0ZXNbMF0ubmFtZSBpcyAic3R5bGUiCitQQVNT
IGlubGluZVN0eWxlLmdldFByb3BlcnR5VmFsdWUoIi0tY3NzdmFyYyIpIGlzICJpbmhlcml0Igor
UEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL1N0eWxlU2hlZXQvZGV0YWNoZWQtc3R5bGUtc2V0
LWN1c3RvbS1wcm9wZXJ0eS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vU3R5bGVTaGVldC9k
ZXRhY2hlZC1zdHlsZS1zZXQtY3VzdG9tLXByb3BlcnR5Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjZmNGY1
YWUwMzZlMmI4MDU4YTZiYWJhOTFiODYxOWEwMDAxZjkzMgotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2Zhc3QvZG9tL1N0eWxlU2hlZXQvZGV0YWNoZWQtc3R5bGUtc2V0LWN1c3RvbS1w
cm9wZXJ0eS5odG1sCkBAIC0wLDAgKzEsMjAgQEAKKzxodG1sPgorPGhlYWQ+CisgICAgPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hl
YWQ+Cis8Ym9keT4KKyAgICA8c2NyaXB0PgorICAgICAgICBkZXNjcmlwdGlvbigiVGVzdCBzZXR0
aW5nIGN1c3RvbSBwcm9wZXJ0aWVzIG9uIGRldGFjaGVkIHN0eWxlcyIpOworICAgICAgICB2YXIg
ZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciLCAic3R5bGUiKTsKKyAgICAgICAgdmFyIGlubGluZVN0eWxlID0gZWxlbWVudC5zdHls
ZTsKKyAgICAgICAgaW5saW5lU3R5bGUuc2V0UHJvcGVydHkoIndvcmQtYnJlYWsiLCAiaW5oZXJp
dCIpOworCisgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZWxlbWVudC5hdHRyaWJ1dGVz
WzBdLm5hbWUiLCAic3R5bGUiKTsKKyAgICAgICAgZWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUoInN0
eWxlIik7CisgICAgICAgIAorICAgICAgICBpbmxpbmVTdHlsZS5zZXRQcm9wZXJ0eSgiLS1jc3N2
YXJjIiwgImluaGVyaXQiKTsKKyAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdpbmxpbmVT
dHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCItLWNzc3ZhcmMiKScsICJpbmhlcml0Iik7CisgICAgPC9z
Y3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3Qu
anMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>388958</attachid>
            <date>2020-01-27 18:44:36 -0800</date>
            <delta_ts>2020-01-29 00:05:02 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-206724-20200127184436.patch</filename>
            <type>text/plain</type>
            <size>4164</size>
            <attacher name="Sunny He">sunny_he</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU1MDM5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmYyYmM1NmQ2NWQ1NzVm
N2YwOWQ3ZGVmMGFhNDY0NjgzMDU4ZDUyMC4uNDgzMjAwZWM1NmRlYTUzODlmNTg0OWMyOTM1ZDhi
NmI3NmUxNzUwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDIwLTAxLTIzICBTdW5u
eSBIZSAgPHN1bm55X2hlQGFwcGxlLmNvbT4KKworICAgICAgICBOdWxscHRyIGNyYXNoIHdoZW4g
c2V0dGluZyBjdXN0b20gcHJvcGVydGllcyBvbiBkZXRhY2hlZCBzdHlsZQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA2NzI0CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdDogZmFzdC9kb20vU3R5bGVT
aGVldC9kZXRhY2hlZC1zdHlsZS1zZXQtY3VzdG9tLXByb3BlcnR5Lmh0bWwKKworICAgICAgICAq
IGNzcy9Qcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uOjpzZXRQcm9wZXJ0eSk6CisgICAgICAg
IChXZWJDb3JlOjpTdHlsZVJ1bGVDU1NTdHlsZURlY2xhcmF0aW9uOjpjbGVhclBhcmVudFJ1bGUp
OgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lQ1NTU3R5bGVEZWNsYXJhdGlvbjo6Y2xlYXJQYXJl
bnRFbGVtZW50KToKKwogMjAyMC0wMS0yMyAgRGF2aWQgS2lsemVyICA8ZGRraWx6ZXJAYXBwbGUu
Y29tPgogCiAgICAgICAgIEVuYWJsZSAtV2NvbmRpdGlvbmFsLXVuaW5pdGlhbGl6ZWQgaW4gV2Vi
Q29yZSBwcm9qZWN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvUHJvcGVydHlTZXRD
U1NTdHlsZURlY2xhcmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Qcm9wZXJ0eVNldENT
U1N0eWxlRGVjbGFyYXRpb24uY3BwCmluZGV4IGQzMTUyMTE1ODk3MTMxZGNmY2RhNzI2MTg2YzY1
YTQ0MDEwYWIwZWQuLjkxNGJiYzk3OTU5NGRiOTlhMGFiM2QyYzdhMzY5ZTYwNGEzMTEzZDggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9Qcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRp
b24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Qcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFy
YXRpb24uY3BwCkBAIC0yNTIsNyArMjUyLDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gUHJvcGVydHlT
ZXRDU1NTdHlsZURlY2xhcmF0aW9uOjpzZXRQcm9wZXJ0eShjb25zdCBTdHJpbmcmIHByb3AKIAog
ICAgICAgICBpZiAocGFyZW50RWxlbWVudCgpKQogICAgICAgICAgICAgZG9jdW1lbnQgPSAmcGFy
ZW50RWxlbWVudCgpLT5kb2N1bWVudCgpOwotICAgICAgICBlbHNlCisgICAgICAgIGVsc2UgaWYg
KHBhcmVudFN0eWxlU2hlZXQoKSkKICAgICAgICAgICAgIGRvY3VtZW50ID0gcGFyZW50U3R5bGVT
aGVldCgpLT5vd25lckRvY3VtZW50KCk7CiAKICAgICAgICAgY2hhbmdlZCA9IG1fcHJvcGVydHlT
ZXQtPnNldEN1c3RvbVByb3BlcnR5KGRvY3VtZW50LCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBpbXBv
cnRhbnQsIGNzc1BhcnNlckNvbnRleHQoKSk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNDg1YTEzOTA4MTJiZmRmYmIyMjUw
MmFmMDBjODc0ODJjZDZmMmMwNi4uY2UyMTMxYjY3YTlkYzk0NmVkNmQ0YTk2NmU1OGE4NzQ1MmZm
NjZkYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDIwLTAxLTIzICBTdW5ueSBIZSAgPHN1bm55
X2hlQGFwcGxlLmNvbT4KKworICAgICAgICBOdWxscHRyIGNyYXNoIHdoZW4gc2V0dGluZyBjdXN0
b20gcHJvcGVydGllcyBvbiBkZXRhY2hlZCBzdHlsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA2NzI0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBmYXN0L2RvbS9TdHlsZVNoZWV0L2RldGFjaGVkLXN0
eWxlLXNldC1jdXN0b20tcHJvcGVydHktZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBm
YXN0L2RvbS9TdHlsZVNoZWV0L2RldGFjaGVkLXN0eWxlLXNldC1jdXN0b20tcHJvcGVydHkuaHRt
bDogQWRkZWQuCisKIDIwMjAtMDEtMjMgIERpZWdvIFBpbm8gR2FyY2lhICA8ZHBpbm9AaWdhbGlh
LmNvbT4KIAogICAgICAgICBbR1RLXSBHYXJkZW5pbmcsIHJlYmFzZWxpbmVzIGFuZCB1cGRhdGUg
VGVzdEV4cGVjdGF0aW9ucwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vU3R5bGVT
aGVldC9kZXRhY2hlZC1zdHlsZS1zZXQtY3VzdG9tLXByb3BlcnR5LWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2Zhc3QvZG9tL1N0eWxlU2hlZXQvZGV0YWNoZWQtc3R5bGUtc2V0LWN1c3RvbS1w
cm9wZXJ0eS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODhkYTNmNGM0MzliMGI0NWIyODQyNjkx
ODI5MzVkNTU1Y2Q5NDU0OQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9t
L1N0eWxlU2hlZXQvZGV0YWNoZWQtc3R5bGUtc2V0LWN1c3RvbS1wcm9wZXJ0eS1leHBlY3RlZC50
eHQKQEAgLTAsMCArMSwxMSBAQAorVGVzdCBzZXR0aW5nIGN1c3RvbSBwcm9wZXJ0aWVzIG9uIGRl
dGFjaGVkIHN0eWxlcworCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBB
U1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBlbGVt
ZW50LmF0dHJpYnV0ZXNbMF0ubmFtZSBpcyAic3R5bGUiCitQQVNTIGlubGluZVN0eWxlLmdldFBy
b3BlcnR5VmFsdWUoIi0tY3NzdmFyYyIpIGlzICJpbmhlcml0IgorUEFTUyBzdWNjZXNzZnVsbHlQ
YXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Zhc3QvZG9tL1N0eWxlU2hlZXQvZGV0YWNoZWQtc3R5bGUtc2V0LWN1c3RvbS1wcm9wZXJ0eS5o
dG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vU3R5bGVTaGVldC9kZXRhY2hlZC1zdHlsZS1zZXQt
Y3VzdG9tLXByb3BlcnR5Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDA1OTkzMTRiNmU5OTZiMjI0YTVlNzE0
YTZjYzgwYTVlNDEyZDA1YwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9t
L1N0eWxlU2hlZXQvZGV0YWNoZWQtc3R5bGUtc2V0LWN1c3RvbS1wcm9wZXJ0eS5odG1sCkBAIC0w
LDAgKzEsMTkgQEAKKzxodG1sPgorPGhlYWQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jl
c291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorICAgIDxzY3Jp
cHQ+CisgICAgICAgIGRlc2NyaXB0aW9uKCJUZXN0IHNldHRpbmcgY3VzdG9tIHByb3BlcnRpZXMg
b24gZGV0YWNoZWQgc3R5bGVzIik7CisgICAgICAgIHZhciBlbGVtZW50ID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJzdHlsZSIpOworICAg
ICAgICB2YXIgaW5saW5lU3R5bGUgPSBlbGVtZW50LnN0eWxlOworICAgICAgICBpbmxpbmVTdHls
ZS5zZXRQcm9wZXJ0eSgid29yZC1icmVhayIsICJpbmhlcml0Iik7CisKKyAgICAgICAgc2hvdWxk
QmVFcXVhbFRvU3RyaW5nKCJlbGVtZW50LmF0dHJpYnV0ZXNbMF0ubmFtZSIsICJzdHlsZSIpOwor
ICAgICAgICBlbGVtZW50LnJlbW92ZUF0dHJpYnV0ZSgic3R5bGUiKTsKKyAgICAgICAgCisgICAg
ICAgIGlubGluZVN0eWxlLnNldFByb3BlcnR5KCItLWNzc3ZhcmMiLCAiaW5oZXJpdCIpOworICAg
ICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ2lubGluZVN0eWxlLmdldFByb3BlcnR5VmFsdWUo
Ii0tY3NzdmFyYyIpJywgImluaGVyaXQiKTsKKyAgICA8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRt
bD4K
</data>

          </attachment>
      

    </bug>

</bugzilla>