<?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>153932</bug_id>
          
          <creation_ts>2016-02-05 17:01:22 -0800</creation_ts>
          <short_desc>ScrollbarPainters needs to be deallocated on the main thread</short_desc>
          <delta_ts>2016-02-06 15:42:52 -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>Layout and Rendering</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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Beth Dakin">bdakin</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>andersca</cc>
    
    <cc>bdakin</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>ggaren</cc>
    
    <cc>jamesr</cc>
    
    <cc>jonlee</cc>
    
    <cc>luiz</cc>
    
    <cc>sam</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>tonikitoo</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1162541</commentid>
    <comment_count>0</comment_count>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2016-02-05 17:01:22 -0800</bug_when>
    <thetext>ScrollbarPainters needs to be deallocated on the main thread

rdar://problem/24015483</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1162542</commentid>
    <comment_count>1</comment_count>
      <attachid>270781</attachid>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2016-02-05 17:04:03 -0800</bug_when>
    <thetext>Created attachment 270781
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1162543</commentid>
    <comment_count>2</comment_count>
      <attachid>270781</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2016-02-05 17:05:47 -0800</bug_when>
    <thetext>Comment on attachment 270781
Patch

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

&gt; Source/WebCore/page/scrolling/mac/ScrollingTreeFrameScrollingNodeMac.mm:124
&gt; +                {});

Curly brace style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1162544</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-02-05 17:05:59 -0800</bug_when>
    <thetext>Attachment 270781 did not pass style-queue:


ERROR: Source/WebCore/page/scrolling/mac/ScrollingTreeFrameScrollingNodeMac.mm:118:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WebCore/page/scrolling/mac/ScrollingTreeFrameScrollingNodeMac.mm:124:  Missing space inside { }.  [whitespace/braces] [5]
Total errors found: 2 in 2 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1162548</commentid>
    <comment_count>4</comment_count>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2016-02-05 17:09:21 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/196206</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1162616</commentid>
    <comment_count>5</comment_count>
      <attachid>270781</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-02-06 08:40:51 -0800</bug_when>
    <thetext>Comment on attachment 270781
Patch

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

&gt; Source/WebCore/page/scrolling/mac/ScrollingTreeFrameScrollingNodeMac.mm:75
&gt; +        RetainPtr&lt;ScrollbarPainter&gt; retainedVerticalScrollbarPainter = m_verticalScrollbarPainter;
&gt; +        RetainPtr&lt;ScrollbarPainter&gt; retainedHorizontalScrollbarPainter = m_horizontalScrollbarPainter;
&gt; +        WTF::callOnMainThread([retainedVerticalScrollbarPainter, retainedHorizontalScrollbarPainter] { });

I don’t think this is guaranteed to work. There will be six RetainPtr objects, two in the data members, two local variables, and two captured by the lambda. That seems to set up a race condition. If the call on the main thread completes before the ScrollingTreeFrameScrollingNodeMac is finished being destroyed, then the NSScrollerImp objects will still be deallocated on this thread.

Actually I see in the code that was actually landed we use WTFMove. This gets rid of two of the six RetainPtr objects, but there is still a race condition between the destruction of the two local variables and the destruction of the lambda on the main thread.

I’m not sure there is a way to do this with RetainPtr without more advanced C++ lambda support than we currently have. But we can do it safely if we don’t use RetainPtr. Here’s one way of writing it without the race condition:

    auto* retainedVerticalScrollbarPainter = m_verticalScrollbarPainter.leakRef();
    auto* retainedHorizontalScrollbarPainter = m_horizontalScrollbarPainter.leakRef();
    WTF::callOnMainThread([retainedVerticalScrollbarPainter, retainedHorizontalScrollbarPainter] {
        [retainedVerticalScrollbarPainter release];
        [retainedHorizontalScrollbarPainter release];
    });

&gt; Source/WebCore/page/scrolling/mac/ScrollingTreeFrameScrollingNodeMac.mm:123
&gt; +            RetainPtr&lt;ScrollbarPainter&gt; retainedVerticalScrollbarPainter = m_verticalScrollbarPainter;
&gt; +            RetainPtr&lt;ScrollbarPainter&gt; retainedHorizontalScrollbarPainter = m_horizontalScrollbarPainter;
&gt; +            WTF::callOnMainThread([retainedVerticalScrollbarPainter, retainedHorizontalScrollbarPainter]

Same issue here, which can be fixed the same way. Also unclear on why we are not doing the null check here that we are doing in the destructor. Maybe share a helper function?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1162665</commentid>
    <comment_count>6</comment_count>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2016-02-06 15:00:50 -0800</bug_when>
    <thetext>Yup, you are totally right. Okay, I will post a new patch.

(In reply to comment #5)
&gt; Comment on attachment 270781 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=270781&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/page/scrolling/mac/ScrollingTreeFrameScrollingNodeMac.mm:75
&gt; &gt; +        RetainPtr&lt;ScrollbarPainter&gt; retainedVerticalScrollbarPainter = m_verticalScrollbarPainter;
&gt; &gt; +        RetainPtr&lt;ScrollbarPainter&gt; retainedHorizontalScrollbarPainter = m_horizontalScrollbarPainter;
&gt; &gt; +        WTF::callOnMainThread([retainedVerticalScrollbarPainter, retainedHorizontalScrollbarPainter] { });
&gt; 
&gt; I don’t think this is guaranteed to work. There will be six RetainPtr
&gt; objects, two in the data members, two local variables, and two captured by
&gt; the lambda. That seems to set up a race condition. If the call on the main
&gt; thread completes before the ScrollingTreeFrameScrollingNodeMac is finished
&gt; being destroyed, then the NSScrollerImp objects will still be deallocated on
&gt; this thread.
&gt; 
&gt; Actually I see in the code that was actually landed we use WTFMove. This
&gt; gets rid of two of the six RetainPtr objects, but there is still a race
&gt; condition between the destruction of the two local variables and the
&gt; destruction of the lambda on the main thread.
&gt; 
&gt; I’m not sure there is a way to do this with RetainPtr without more advanced
&gt; C++ lambda support than we currently have. But we can do it safely if we
&gt; don’t use RetainPtr. Here’s one way of writing it without the race condition:
&gt; 
&gt;     auto* retainedVerticalScrollbarPainter =
&gt; m_verticalScrollbarPainter.leakRef();
&gt;     auto* retainedHorizontalScrollbarPainter =
&gt; m_horizontalScrollbarPainter.leakRef();
&gt;     WTF::callOnMainThread([retainedVerticalScrollbarPainter,
&gt; retainedHorizontalScrollbarPainter] {
&gt;         [retainedVerticalScrollbarPainter release];
&gt;         [retainedHorizontalScrollbarPainter release];
&gt;     });
&gt; 
&gt; &gt; Source/WebCore/page/scrolling/mac/ScrollingTreeFrameScrollingNodeMac.mm:123
&gt; &gt; +            RetainPtr&lt;ScrollbarPainter&gt; retainedVerticalScrollbarPainter = m_verticalScrollbarPainter;
&gt; &gt; +            RetainPtr&lt;ScrollbarPainter&gt; retainedHorizontalScrollbarPainter = m_horizontalScrollbarPainter;
&gt; &gt; +            WTF::callOnMainThread([retainedVerticalScrollbarPainter, retainedHorizontalScrollbarPainter]
&gt; 
&gt; Same issue here, which can be fixed the same way. Also unclear on why we are
&gt; not doing the null check here that we are doing in the destructor. Maybe
&gt; share a helper function?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1162668</commentid>
    <comment_count>7</comment_count>
      <attachid>270806</attachid>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2016-02-06 15:10:45 -0800</bug_when>
    <thetext>Created attachment 270806
Patch, v3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1162676</commentid>
    <comment_count>8</comment_count>
      <attachid>270806</attachid>
    <who name="">mitz</who>
    <bug_when>2016-02-06 15:37:01 -0800</bug_when>
    <thetext>Comment on attachment 270806
Patch, v3

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

&gt; Source/WebCore/ChangeLog:11
&gt; +        condition between the destruction of the two local variables and the d

“the d”</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1162678</commentid>
    <comment_count>9</comment_count>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2016-02-06 15:42:52 -0800</bug_when>
    <thetext>the d!

thanks Dan!

http://trac.webkit.org/changeset/196226</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>270781</attachid>
            <date>2016-02-05 17:04:03 -0800</date>
            <delta_ts>2016-02-05 17:05:47 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>for-review.txt</filename>
            <type>text/plain</type>
            <size>3076</size>
            <attacher name="Beth Dakin">bdakin</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5NjIwNCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE5IEBACisyMDE2LTAyLTA1ICBCZXRoIERh
a2luICA8YmRha2luQGFwcGxlLmNvbT4KKworICAgICAgICBTY3JvbGxiYXJQYWludGVycyBuZWVk
cyB0byBiZSBkZWFsbG9jYXRlZCBvbiB0aGUgbWFpbiB0aHJlYWQKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MzkzMgorICAgICAgICAtYW5kIGNvcnJl
c3BvbmRpbmctCisgICAgICAgIHJkYXI6Ly9wcm9ibGVtLzI0MDE1NDgzCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRW5zdXJlIHRoZSB0aGUgZGVzdHJ1
Y3RvciBvZiBTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTWFjIGFuZCB0aGUgCisgICAg
ICAgIGFzc2lnbm1lbnRzIGRvbmUgaW4gdGhpcyBjbGFzcyBhcmUgbm90IHJlc3BvbnNpYmxlIGZv
ciBkZWFsbG9jYXRpbmcgdGhlIAorICAgICAgICBTY3JvbGxiYXJQYWludGVyLiAKKyAgICAgICAg
KiBwYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU1hYy5t
bToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVNYWM6
On5TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTWFjKToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVNYWM6OnVwZGF0ZUJlZm9yZUNoaWxkcmVu
KToKKwogMjAxNi0wMi0wNSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAg
ICAgIEluc3RhbmNlIHByb3BlcnR5IGdldHRlcnMgLyBzZXR0ZXJzIGNhbm5vdCBiZSBjYWxsZWQg
b24gYW5vdGhlciBpbnN0YW5jZSBvZiB0aGUgc2FtZSB0eXBlCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU1hYy5t
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xs
aW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU1hYy5tbQkocmV2aXNpb24gMTk2MTMyKQorKysgU291
cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGlu
Z05vZGVNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTY3LDYgKzY3LDEzIEBAIFNjcm9sbGluZ1Ry
ZWVGcmFtZVNjcm9sbGluZ05vZGVNYWM6OlNjcm8KIAogU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xs
aW5nTm9kZU1hYzo6flNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVNYWMoKQogeworICAg
IGlmIChtX3ZlcnRpY2FsU2Nyb2xsYmFyUGFpbnRlciB8fCBtX2hvcml6b250YWxTY3JvbGxiYXJQ
YWludGVyKSB7CisgICAgICAgIC8vIEZJWE1FOiBUaGlzIGlzIGEgd29ya2Fyb3VuZCBpbiBwbGFj
ZSBmb3IgdGhlIHRpbWUgYmVpbmcgc2luY2UgTlNTY3JvbGxlckltcHMgY2Fubm90IGJlIGRlYWxs
b2NhdGVkCisgICAgICAgIC8vIG9uIGEgbm9uLW1haW4gdGhyZWFkLiByZGFyOi8vcHJvYmxlbS8y
NDUzNTA1NQorICAgICAgICBSZXRhaW5QdHI8U2Nyb2xsYmFyUGFpbnRlcj4gcmV0YWluZWRWZXJ0
aWNhbFNjcm9sbGJhclBhaW50ZXIgPSBtX3ZlcnRpY2FsU2Nyb2xsYmFyUGFpbnRlcjsKKyAgICAg
ICAgUmV0YWluUHRyPFNjcm9sbGJhclBhaW50ZXI+IHJldGFpbmVkSG9yaXpvbnRhbFNjcm9sbGJh
clBhaW50ZXIgPSBtX2hvcml6b250YWxTY3JvbGxiYXJQYWludGVyOworICAgICAgICBXVEY6OmNh
bGxPbk1haW5UaHJlYWQoW3JldGFpbmVkVmVydGljYWxTY3JvbGxiYXJQYWludGVyLCByZXRhaW5l
ZEhvcml6b250YWxTY3JvbGxiYXJQYWludGVyXSB7IH0pOworICAgIH0KIH0KIAogI2lmIEVOQUJM
RShDU1NfU0NST0xMX1NOQVApCkBAIC0xMDgsNiArMTE1LDE0IEBAIHZvaWQgU2Nyb2xsaW5nVHJl
ZUZyYW1lU2Nyb2xsaW5nTm9kZU1hYzoKICAgICAgICAgbV9mb290ZXJMYXllciA9IHNjcm9sbGlu
Z1N0YXRlTm9kZS5mb290ZXJMYXllcigpOwogCiAgICAgaWYgKHNjcm9sbGluZ1N0YXRlTm9kZS5o
YXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGU6OlBhaW50
ZXJGb3JTY3JvbGxiYXIpKSB7CisgICAgICAgIHsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBUaGlz
IGlzIGEgd29ya2Fyb3VuZCBpbiBwbGFjZSBmb3IgdGhlIHRpbWUgYmVpbmcgc2luY2UgTlNTY3Jv
bGxlckltcHMgY2Fubm90IGJlIGRlYWxsb2NhdGVkCisgICAgICAgICAgICAvLyBvbiBhIG5vbi1t
YWluIHRocmVhZC4gcmRhcjovL3Byb2JsZW0vMjQ1MzUwNTUKKyAgICAgICAgICAgIFJldGFpblB0
cjxTY3JvbGxiYXJQYWludGVyPiByZXRhaW5lZFZlcnRpY2FsU2Nyb2xsYmFyUGFpbnRlciA9IG1f
dmVydGljYWxTY3JvbGxiYXJQYWludGVyOworICAgICAgICAgICAgUmV0YWluUHRyPFNjcm9sbGJh
clBhaW50ZXI+IHJldGFpbmVkSG9yaXpvbnRhbFNjcm9sbGJhclBhaW50ZXIgPSBtX2hvcml6b250
YWxTY3JvbGxiYXJQYWludGVyOworICAgICAgICAgICAgV1RGOjpjYWxsT25NYWluVGhyZWFkKFty
ZXRhaW5lZFZlcnRpY2FsU2Nyb2xsYmFyUGFpbnRlciwgcmV0YWluZWRIb3Jpem9udGFsU2Nyb2xs
YmFyUGFpbnRlcl0KKyAgICAgICAgICAgICAgICB7fSk7CisgICAgICAgIH0KICAgICAgICAgbV92
ZXJ0aWNhbFNjcm9sbGJhclBhaW50ZXIgPSBzY3JvbGxpbmdTdGF0ZU5vZGUudmVydGljYWxTY3Jv
bGxiYXJQYWludGVyKCk7CiAgICAgICAgIG1faG9yaXpvbnRhbFNjcm9sbGJhclBhaW50ZXIgPSBz
Y3JvbGxpbmdTdGF0ZU5vZGUuaG9yaXpvbnRhbFNjcm9sbGJhclBhaW50ZXIoKTsKICAgICB9Cg==
</data>
<flag name="review"
          id="295622"
          type_id="1"
          status="+"
          setter="thorton"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>270806</attachid>
            <date>2016-02-06 15:10:45 -0800</date>
            <delta_ts>2016-02-06 15:37:01 -0800</delta_ts>
            <desc>Patch, v3</desc>
            <filename>for-review.txt</filename>
            <type>text/plain</type>
            <size>4628</size>
            <attacher name="Beth Dakin">bdakin</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5NjIyMikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIxIEBACisyMDE2LTAyLTA2ICBCZXRoIERh
a2luICA8YmRha2luQGFwcGxlLmNvbT4KKworICAgICAgICBTY3JvbGxiYXJQYWludGVycyBuZWVk
cyB0byBiZSBkZWFsbG9jYXRlZCBvbiB0aGUgbWFpbiB0aHJlYWQKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MzkzMgorICAgICAgICAtYW5kIGNvcnJl
c3BvbmRpbmctCisgICAgICAgIHJkYXI6Ly9wcm9ibGVtLzI0MDE1NDgzCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRGFyaW4gcG9pbnRlZCBvdXQgdGhh
dCB0aGlzIHdhcyBzdGlsbCByYWNlLXkuIFRoZXJlIHdhcyBzdGlsbCBhIHJhY2UgCisgICAgICAg
IGNvbmRpdGlvbiBiZXR3ZWVuIHRoZSBkZXN0cnVjdGlvbiBvZiB0aGUgdHdvIGxvY2FsIHZhcmlh
YmxlcyBhbmQgdGhlIGQKKyAgICAgICAgZGVzdHJ1Y3Rpb24gb2YgdGhlIGxhbWJkYSBvbiB0aGUg
bWFpbiB0aHJlYWQuIFRoaXMgc2hvdWxkIGZpeCB0aGF0LiAKKyAgICAgICAgKiBwYWdlL3Njcm9s
bGluZy9tYWMvU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU1hYy5oOgorICAgICAgICAq
IHBhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTWFjLm1t
OgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU1hYzo6
flNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVNYWMpOgorICAgICAgICAoV2ViQ29yZTo6
U2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU1hYzo6cmVsZWFzZVJlZmVyZW5jZXNUb1Nj
cm9sbGJhclBhaW50ZXJzT25UaGVNYWluVGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9s
bGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVNYWM6OnVwZGF0ZUJlZm9yZUNoaWxkcmVuKToKKwog
MjAxNi0wMi0wNiAgWmFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIE91
dGxpbmUgc2hvdWxkIGNvbnRyaWJ1dGUgdG8gdmlzdWFsIG92ZXJmbG93LgpJbmRleDogU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05v
ZGVNYWMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMv
U2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU1hYy5oCShyZXZpc2lvbiAxOTYxMzIpCisr
KyBTb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZUZyYW1lU2Ny
b2xsaW5nTm9kZU1hYy5oCSh3b3JraW5nIGNvcHkpCkBAIC00NSw2ICs0NSw4IEBAIHB1YmxpYzoK
IHByaXZhdGU6CiAgICAgU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU1hYyhTY3JvbGxp
bmdUcmVlJiwgU2Nyb2xsaW5nTm9kZUlEKTsKIAorICAgIHZvaWQgcmVsZWFzZVJlZmVyZW5jZXNU
b1Njcm9sbGJhclBhaW50ZXJzT25UaGVNYWluVGhyZWFkKCk7CisKICAgICAvLyBTY3JvbGxpbmdU
cmVlTm9kZSBtZW1iZXIgZnVuY3Rpb25zLgogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVCZWZvcmVD
aGlsZHJlbihjb25zdCBTY3JvbGxpbmdTdGF0ZU5vZGUmKSBvdmVycmlkZTsKICAgICB2aXJ0dWFs
IHZvaWQgdXBkYXRlQWZ0ZXJDaGlsZHJlbihjb25zdCBTY3JvbGxpbmdTdGF0ZU5vZGUmKSBvdmVy
cmlkZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdU
cmVlRnJhbWVTY3JvbGxpbmdOb2RlTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTWFjLm1t
CShyZXZpc2lvbiAxOTYyMDgpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMv
U2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAt
NjcsMTIgKzY3LDIwIEBAIFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVNYWM6OlNjcm8K
IAogU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU1hYzo6flNjcm9sbGluZ1RyZWVGcmFt
ZVNjcm9sbGluZ05vZGVNYWMoKQogeworICAgIHJlbGVhc2VSZWZlcmVuY2VzVG9TY3JvbGxiYXJQ
YWludGVyc09uVGhlTWFpblRocmVhZCgpOworfQorCit2b2lkIFNjcm9sbGluZ1RyZWVGcmFtZVNj
cm9sbGluZ05vZGVNYWM6OnJlbGVhc2VSZWZlcmVuY2VzVG9TY3JvbGxiYXJQYWludGVyc09uVGhl
TWFpblRocmVhZCgpCit7CiAgICAgaWYgKG1fdmVydGljYWxTY3JvbGxiYXJQYWludGVyIHx8IG1f
aG9yaXpvbnRhbFNjcm9sbGJhclBhaW50ZXIpIHsKICAgICAgICAgLy8gRklYTUU6IFRoaXMgaXMg
YSB3b3JrYXJvdW5kIGluIHBsYWNlIGZvciB0aGUgdGltZSBiZWluZyBzaW5jZSBOU1Njcm9sbGVy
SW1wcyBjYW5ub3QgYmUgZGVhbGxvY2F0ZWQKICAgICAgICAgLy8gb24gYSBub24tbWFpbiB0aHJl
YWQuIHJkYXI6Ly9wcm9ibGVtLzI0NTM1MDU1Ci0gICAgICAgIFJldGFpblB0cjxTY3JvbGxiYXJQ
YWludGVyPiByZXRhaW5lZFZlcnRpY2FsU2Nyb2xsYmFyUGFpbnRlciA9IFdURk1vdmUobV92ZXJ0
aWNhbFNjcm9sbGJhclBhaW50ZXIpOwotICAgICAgICBSZXRhaW5QdHI8U2Nyb2xsYmFyUGFpbnRl
cj4gcmV0YWluZWRIb3Jpem9udGFsU2Nyb2xsYmFyUGFpbnRlciA9IFdURk1vdmUobV9ob3Jpem9u
dGFsU2Nyb2xsYmFyUGFpbnRlcik7Ci0gICAgICAgIFdURjo6Y2FsbE9uTWFpblRocmVhZChbcmV0
YWluZWRWZXJ0aWNhbFNjcm9sbGJhclBhaW50ZXIsIHJldGFpbmVkSG9yaXpvbnRhbFNjcm9sbGJh
clBhaW50ZXJdIHsgfSk7CisgICAgICAgIFNjcm9sbGJhclBhaW50ZXIgcmV0YWluZWRWZXJ0aWNh
bFNjcm9sbGJhclBhaW50ZXIgPSBtX3ZlcnRpY2FsU2Nyb2xsYmFyUGFpbnRlci5sZWFrUmVmKCk7
CisgICAgICAgIFNjcm9sbGJhclBhaW50ZXIgcmV0YWluZWRIb3Jpem9udGFsU2Nyb2xsYmFyUGFp
bnRlciA9IG1faG9yaXpvbnRhbFNjcm9sbGJhclBhaW50ZXIubGVha1JlZigpOworICAgICAgICBX
VEY6OmNhbGxPbk1haW5UaHJlYWQoW3JldGFpbmVkVmVydGljYWxTY3JvbGxiYXJQYWludGVyLCBy
ZXRhaW5lZEhvcml6b250YWxTY3JvbGxiYXJQYWludGVyXSB7CisgICAgICAgICAgICBbcmV0YWlu
ZWRWZXJ0aWNhbFNjcm9sbGJhclBhaW50ZXIgcmVsZWFzZV07CisgICAgICAgICAgICBbcmV0YWlu
ZWRIb3Jpem9udGFsU2Nyb2xsYmFyUGFpbnRlciByZWxlYXNlXTsKKyAgICAgICAgfSk7CiAgICAg
fQogfQogCkBAIC0xMTUsMTQgKzEyMyw3IEBAIHZvaWQgU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xs
aW5nTm9kZU1hYzoKICAgICAgICAgbV9mb290ZXJMYXllciA9IHNjcm9sbGluZ1N0YXRlTm9kZS5m
b290ZXJMYXllcigpOwogCiAgICAgaWYgKHNjcm9sbGluZ1N0YXRlTm9kZS5oYXNDaGFuZ2VkUHJv
cGVydHkoU2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGU6OlBhaW50ZXJGb3JTY3JvbGxi
YXIpKSB7Ci0gICAgICAgIHsKLSAgICAgICAgICAgIC8vIEZJWE1FOiBUaGlzIGlzIGEgd29ya2Fy
b3VuZCBpbiBwbGFjZSBmb3IgdGhlIHRpbWUgYmVpbmcgc2luY2UgTlNTY3JvbGxlckltcHMgY2Fu
bm90IGJlIGRlYWxsb2NhdGVkCi0gICAgICAgICAgICAvLyBvbiBhIG5vbi1tYWluIHRocmVhZC4g
cmRhcjovL3Byb2JsZW0vMjQ1MzUwNTUKLSAgICAgICAgICAgIFJldGFpblB0cjxTY3JvbGxiYXJQ
YWludGVyPiByZXRhaW5lZFZlcnRpY2FsU2Nyb2xsYmFyUGFpbnRlciA9IFdURk1vdmUobV92ZXJ0
aWNhbFNjcm9sbGJhclBhaW50ZXIpOwotICAgICAgICAgICAgUmV0YWluUHRyPFNjcm9sbGJhclBh
aW50ZXI+IHJldGFpbmVkSG9yaXpvbnRhbFNjcm9sbGJhclBhaW50ZXIgPSBXVEZNb3ZlKG1faG9y
aXpvbnRhbFNjcm9sbGJhclBhaW50ZXIpOwotICAgICAgICAgICAgV1RGOjpjYWxsT25NYWluVGhy
ZWFkKFtyZXRhaW5lZFZlcnRpY2FsU2Nyb2xsYmFyUGFpbnRlciwgcmV0YWluZWRIb3Jpem9udGFs
U2Nyb2xsYmFyUGFpbnRlcl0KLSAgICAgICAgICAgICAgICB7fSk7Ci0gICAgICAgIH0KKyAgICAg
ICAgcmVsZWFzZVJlZmVyZW5jZXNUb1Njcm9sbGJhclBhaW50ZXJzT25UaGVNYWluVGhyZWFkKCk7
CiAgICAgICAgIG1fdmVydGljYWxTY3JvbGxiYXJQYWludGVyID0gc2Nyb2xsaW5nU3RhdGVOb2Rl
LnZlcnRpY2FsU2Nyb2xsYmFyUGFpbnRlcigpOwogICAgICAgICBtX2hvcml6b250YWxTY3JvbGxi
YXJQYWludGVyID0gc2Nyb2xsaW5nU3RhdGVOb2RlLmhvcml6b250YWxTY3JvbGxiYXJQYWludGVy
KCk7CiAgICAgfQo=
</data>
<flag name="review"
          id="295643"
          type_id="1"
          status="+"
          setter="mitz"
    />
          </attachment>
      

    </bug>

</bugzilla>