<?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>224752</bug_id>
          
          <creation_ts>2021-04-19 05:43:53 -0700</creation_ts>
          <short_desc>WebGL GPU Process implementation should use thread safety annotations</short_desc>
          <delta_ts>2021-04-23 02:52:45 -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>WebGL</component>
          <version>WebKit Local Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=221614</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Kimmo Kinnunen">kkinnunen</reporter>
          <assigned_to name="Kimmo Kinnunen">kkinnunen</assigned_to>
          <cc>darin</cc>
    
    <cc>dino</cc>
    
    <cc>kbr</cc>
    
    <cc>kkinnunen</cc>
    
    <cc>lingcherd_ho</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1751746</commentid>
    <comment_count>0</comment_count>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-04-19 05:43:53 -0700</bug_when>
    <thetext>WebGL GPU Process implementation should use thread safety annotations
There are few locks held.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1751749</commentid>
    <comment_count>1</comment_count>
      <attachid>426411</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-04-19 06:14:20 -0700</bug_when>
    <thetext>Created attachment 426411
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1751966</commentid>
    <comment_count>2</comment_count>
      <attachid>426411</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2021-04-19 14:15:39 -0700</bug_when>
    <thetext>Comment on attachment 426411
Patch

Having once used a similar mechanism for the traversal of the JavaScript wrappers for WebGL objects, this looks good. r+</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1752223</commentid>
    <comment_count>3</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-04-20 04:29:40 -0700</bug_when>
    <thetext>Committed r276300 (236782@main): &lt;https://commits.webkit.org/236782@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 426411.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1752250</commentid>
    <comment_count>4</comment_count>
      <attachid>426411</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-04-20 07:41:35 -0700</bug_when>
    <thetext>Comment on attachment 426411
Patch

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

&gt; Source/WebKit/GPUProcess/graphics/RemoteGraphicsContextGL.cpp:210
&gt; -        auto locker = holdLock(mutex);
&gt; +        Locker locker { mutex };

I’m wondering about these changes: Why doesn’t Locker work with holdLock? I would have expected maybe a change in the function name, not a change in the coding style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1752333</commentid>
    <comment_count>5</comment_count>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-04-20 10:56:18 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #4)
&gt; &gt; Source/WebKit/GPUProcess/graphics/RemoteGraphicsContextGL.cpp:210
&gt; &gt; -        auto locker = holdLock(mutex);
&gt; &gt; +        Locker locker { mutex };
&gt; 
&gt; I’m wondering about these changes: Why doesn’t Locker work with holdLock? I
&gt; would have expected maybe a change in the function name, not a change in the
&gt; coding style.


This was mentioned (at least I tried) in the original thread safety analysis implementation commit:
holdLock needs more expressive Locker, e.g. one that can be moved.

The thread safety analysis does not support moves, as far as I understand. I think it has to do with lexical nature of the analysis: it cannot analyse conditional codepaths 
nor aliasing.

Locker&lt;CheckedLock&gt; is &quot;different type&quot; to Locker&lt;Lock&gt;, less expressive.

If I understand correctly based on the commit timestamps, holdLock pattern is a workaround from pre-c++17 lack of class template type deduction. I don&apos;t think in simple use it has any benefits over just using the simpler invocation the constructor. (unique_ptr vs make_unique, pair vs make_pair, ....) 

In my eyes both are cognitively equally taxing, but that&apos;s of course in the eye of the beholder. Of course it&apos;s bad to have two styles, but I&apos;d hope ultimately the CheckedLock would become &quot;Lock&quot; and the locking pattern would be universally &quot;Locker locker { .. }&quot;, as that should be simpler.(In reply to Darin Adler from comment #4)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1752337</commentid>
    <comment_count>6</comment_count>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-04-20 11:03:08 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #4)
&gt; &gt; -        auto locker = holdLock(mutex);
&gt; &gt; +        Locker locker { mutex };
&gt; I’m wondering about these changes: Why doesn’t Locker work with holdLock?

And to clarify:
holdLock(T&amp;) works with Locker, it returns Locker&lt;T&gt;.

Before, the `locker` was of type Locker&lt;Lock&gt;.
After, the `locker` is of type Locker&lt;CheckedLock&gt;.


holdLock does not work with CheckedLock, since it would need to construct Locker&lt;CheckedLock&gt; and return it, which involves move construction to make sense.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1752339</commentid>
    <comment_count>7</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-04-20 11:05:52 -0700</bug_when>
    <thetext>Understood. You can’t move a Locker&lt;CheckedLock&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1752340</commentid>
    <comment_count>8</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-04-20 11:07:15 -0700</bug_when>
    <thetext>I agree that the construction form is just fine, now that we can use deduction and even deduction guides so we can write just &quot;Locker&quot; and not &quot;Locker&lt;CheckedLock&gt;&quot;. We can deprecate and delete holdLock now that this is possible. We can do it slowly and &quot;naturally&quot; or even do it globally at some point since it should be mechanical, easy, and safe.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1753528</commentid>
    <comment_count>9</comment_count>
    <who name="Ling Ho">lingcherd_ho</who>
    <bug_when>2021-04-23 02:52:45 -0700</bug_when>
    <thetext>rdar://76892996</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>426411</attachid>
            <date>2021-04-19 06:14:20 -0700</date>
            <delta_ts>2021-04-20 04:29:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-224752-20210419161418.patch</filename>
            <type>text/plain</type>
            <size>10376</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc2MTMzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGMxZDVkMDMyY2ZkYmQ1OWE3
N2FkYjA5Zjc5MjA1ZTA1ZjQ1YThmNGYuLjE3ZWMzMmZkMTg5MjUwNWVlNzNlNzM0NmQ2OGIwNTQ3
NDFmNmRiNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzEgQEAKKzIwMjEtMDQtMTkgIEtpbW1vIEtp
bm51bmVuICA8a2tpbm51bmVuQGFwcGxlLmNvbT4KKworICAgICAgICBXZWJHTCBHUFUgUHJvY2Vz
cyBpbXBsZW1lbnRhdGlvbiBzaG91bGQgdXNlIHRocmVhZCBzYWZldHkgYW5ub3RhdGlvbnMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNDc1MgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1ha2UgV2ViR0wg
R1BVIHByb2Nlc3MgaW1wbGVtZW50YXRpb24gdXNlIHRocmVhZCBzYWZldHkgYW5hbHlzaXMuCisK
KyAgICAgICAgTWFyayB1cCB0aGUgZ3VhcmRlZCB2YXJpYWJsZXMgaW4gSVBDIFN0cmVhbSBpbXBs
ZW1lbnRhdGlvbiB1c2luZworICAgICAgICBjbGFuZyB0aHJlYWQgc2FmZXR5IGFuYWx5c2lzIGFu
bm90YXRpb25zLgorCisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGlj
c0NvbnRleHRHTC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpwYWludEltYWdlRGF0YVRvSW1hZ2VCdWZmZXIpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9T
dHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlLmNwcDoKKyAgICAgICAgKElQQzo6U3RyZWFtQ29ubmVj
dGlvbldvcmtRdWV1ZTo6ZGlzcGF0Y2gpOgorICAgICAgICAoSVBDOjpTdHJlYW1Db25uZWN0aW9u
V29ya1F1ZXVlOjphZGRTdHJlYW1Db25uZWN0aW9uKToKKyAgICAgICAgKElQQzo6U3RyZWFtQ29u
bmVjdGlvbldvcmtRdWV1ZTo6cmVtb3ZlU3RyZWFtQ29ubmVjdGlvbik6CisgICAgICAgIChJUEM6
OlN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWU6OnByb2Nlc3NTdHJlYW1zKToKKyAgICAgICAgKiBQ
bGF0Zm9ybS9JUEMvU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZS5oOgorICAgICAgICAqIFBsYXRm
b3JtL0lQQy9TdHJlYW1TZXJ2ZXJDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKElQQzo6U3RyZWFt
U2VydmVyQ29ubmVjdGlvbkJhc2U6OmVucXVldWVNZXNzYWdlKToKKyAgICAgICAgKiBQbGF0Zm9y
bS9JUEMvU3RyZWFtU2VydmVyQ29ubmVjdGlvbi5oOgorICAgICAgICAoSVBDOjpTdHJlYW1TZXJ2
ZXJDb25uZWN0aW9uPFJlY2VpdmVyPjo6c3RhcnRSZWNlaXZpbmdNZXNzYWdlcyk6CisgICAgICAg
IChJUEM6OlN0cmVhbVNlcnZlckNvbm5lY3Rpb248UmVjZWl2ZXI+OjpzdG9wUmVjZWl2aW5nTWVz
c2FnZXMpOgorICAgICAgICAoSVBDOjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uPFJlY2VpdmVyPjo6
ZGlzcGF0Y2hTdHJlYW1NZXNzYWdlcyk6CisgICAgICAgIChJUEM6OlN0cmVhbVNlcnZlckNvbm5l
Y3Rpb248UmVjZWl2ZXI+OjpkaXNwYXRjaE91dE9mU3RyZWFtTWVzc2FnZSk6CisKIDIwMjEtMDQt
MTkgIEtpbW1vIEtpbm51bmVuICA8a2tpbm51bmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBSRUdS
RVNTSU9OKHIyMjQ1MTYpOiBSZW1vdGUgV2ViR0wgQ29udGV4dCBpcyBub3QgY3JlYXRlIGR1ZSB0
byBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kIG5vdCBiZWluZyBjcmVhdGVkCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wu
Y3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMLmNwcAppbmRleCAxMDEzNTJmYjBkYzYzMGY0ZDBlYzU3ODM5M2QwNzQwNzVkNjg0NzAx
Li5iMDcyYjIzOGEyYTZkNDkxMmUyOWJkZTAwOTc5YjE0NDlhZDM3ODlmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGlj
c0NvbnRleHRHTC5jcHAKQEAgLTIwNyw3ICsyMDcsNyBAQCB2b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpwYWludEltYWdlRGF0YVRvSW1hZ2VCdWZmZXIoUmVmUHRyPFdlYkNvcmU6OkltYWdl
RAogICAgICAgICAgICAgLy8gVW5mb3J0dW5hdGVseSAiZmx1c2giIGltcGxlbWVudGF0aW9uIGlu
IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQgb3ZlcmxvYWRzIG9yZGVyaW5nIGFuZCBlZmZlY3RzLgog
ICAgICAgICAgICAgaW1hZ2VCdWZmZXItPmZsdXNoQ29udGV4dCgpOwogICAgICAgICB9Ci0gICAg
ICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobXV0ZXgpOworICAgICAgICBMb2NrZXIgbG9ja2Vy
IHsgbXV0ZXggfTsKICAgICAgICAgaXNGaW5pc2hlZCA9IHRydWU7CiAgICAgICAgIGNvbmRpdGlv
blZhcmlhYmxlLm5vdGlmeU9uZSgpOwogICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9JUEMvU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtL0lQQy9TdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlLmNwcAppbmRleCAzYzcw
YTZlMDhkZTY5NjljNzIzOWJhNTI3NjZhOTI5NWRlNzMzYjUwLi4yOWY3NzFhOTc1ODMzMjA1ODAx
NjU3OTBiNTE3MzAxNDMxOTVmNWEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9TdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL0lQQy9TdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlLmNwcApAQCAtMzYsNyArMzYsNyBA
QCBTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlOjpTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlKGNv
bnN0IGNoYXIqIG5hbWUpCiB2b2lkIFN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWU6OmRpc3BhdGNo
KFdURjo6RnVuY3Rpb248dm9pZCgpPiYmIGZ1bmN0aW9uKQogewogICAgIHsKLSAgICAgICAgTG9j
a2VyIGxvY2tlcihtX2xvY2spOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CiAg
ICAgICAgIG1fZnVuY3Rpb25zLmFwcGVuZChXVEZNb3ZlKGZ1bmN0aW9uKSk7CiAgICAgICAgIEFT
U0VSVCghbV9zaG91bGRRdWl0KTsgLy8gUmUtZW50ZXJpbmcgZHVyaW5nIHNodXRkb3duIG5vdCBz
dXBwb3J0ZWQuCiAgICAgfQpAQCAtNDYsNyArNDYsNyBAQCB2b2lkIFN0cmVhbUNvbm5lY3Rpb25X
b3JrUXVldWU6OmRpc3BhdGNoKFdURjo6RnVuY3Rpb248dm9pZCgpPiYmIGZ1bmN0aW9uKQogdm9p
ZCBTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlOjphZGRTdHJlYW1Db25uZWN0aW9uKFN0cmVhbVNl
cnZlckNvbm5lY3Rpb25CYXNlJiBjb25uZWN0aW9uKQogewogICAgIHsKLSAgICAgICAgTG9ja2Vy
IGxvY2tlcihtX2xvY2spOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CiAgICAg
ICAgIG1fY29ubmVjdGlvbnMuYWRkKGNvbm5lY3Rpb24pOwogICAgICAgICBBU1NFUlQoIW1fc2hv
dWxkUXVpdCk7IC8vIFJlLWVudGVyaW5nIGR1cmluZyBzaHV0ZG93biBub3Qgc3VwcG9ydGVkLgog
ICAgIH0KQEAgLTU3LDcgKzU3LDcgQEAgdm9pZCBTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlOjpy
ZW1vdmVTdHJlYW1Db25uZWN0aW9uKFN0cmVhbVNlcnZlckNvbm5lY3Rpb25CYXMKIHsKICAgICBB
U1NFUlQobV9wcm9jZXNzaW5nVGhyZWFkKTsKICAgICB7Ci0gICAgICAgIExvY2tlciBsb2NrZXIo
bV9sb2NrKTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OwogICAgICAgICBtX2Nv
bm5lY3Rpb25zLnJlbW92ZShjb25uZWN0aW9uKTsKICAgICAgICAgQVNTRVJUKCFtX3Nob3VsZFF1
aXQpOyAvLyBSZS1lbnRlcmluZyBkdXJpbmcgc2h1dGRvd24gbm90IHN1cHBvcnRlZC4KICAgICB9
CkBAIC0xMTIsNyArMTEyLDcgQEAgdm9pZCBTdHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlOjpwcm9j
ZXNzU3RyZWFtcygpCiAgICAgICAgIERlcXVlPFdURjo6RnVuY3Rpb248dm9pZCgpPj4gZnVuY3Rp
b25zOwogICAgICAgICBIYXNoU2V0PFJlZjxTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZT4+IGNv
bm5lY3Rpb25zOwogICAgICAgICB7Ci0gICAgICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2Nr
KG1fbG9jayk7CisgICAgICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CiAgICAgICAg
ICAgICBmdW5jdGlvbnMuc3dhcChtX2Z1bmN0aW9ucyk7CiAgICAgICAgICAgICBjb25uZWN0aW9u
cyA9IG1fY29ubmVjdGlvbnM7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vSVBDL1N0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUuaCBiL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vSVBDL1N0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWUuaAppbmRleCA0YzQ1N2MyZjU0
NDZhYzAxMDU2ODYyZmIxNmE5Yjg5NzI3M2IxNDYxLi5jYTRiYzViZDJjZWEyMGE0MDA3Yjc4YmU4
OWZhMDNkMzQwMTkyNWViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9T
dHJlYW1Db25uZWN0aW9uV29ya1F1ZXVlLmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9J
UEMvU3RyZWFtQ29ubmVjdGlvbldvcmtRdWV1ZS5oCkBAIC0yOCwxMCArMjgsMTAgQEAKICNpbmNs
dWRlICJJUENTZW1hcGhvcmUuaCIKICNpbmNsdWRlICJTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uLmgi
CiAjaW5jbHVkZSA8YXRvbWljPgorI2luY2x1ZGUgPHd0Zi9DaGVja2VkTG9jay5oPgogI2luY2x1
ZGUgPHd0Zi9EZXF1ZS5oPgogI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbkRpc3BhdGNoZXIuaD4KICNp
bmNsdWRlIDx3dGYvSGFzaFNldC5oPgotI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CiAjaW5jbHVkZSA8
d3RmL1RocmVhZGluZy5oPgogCiBuYW1lc3BhY2UgSVBDIHsKQEAgLTYwLDkgKzYwLDkgQEAgcHJp
dmF0ZToKIAogICAgIHN0ZDo6YXRvbWljPGJvb2w+IG1fc2hvdWxkUXVpdCB7IGZhbHNlIH07CiAK
LSAgICBMb2NrIG1fbG9jazsKLSAgICBEZXF1ZTxGdW5jdGlvbjx2b2lkKCk+PiBtX2Z1bmN0aW9u
czsKLSAgICBIYXNoU2V0PFJlZjxTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZT4+IG1fY29ubmVj
dGlvbnM7CisgICAgQ2hlY2tlZExvY2sgbV9sb2NrOworICAgIERlcXVlPEZ1bmN0aW9uPHZvaWQo
KT4+IG1fZnVuY3Rpb25zIFdURl9HVUFSREVEX0JZX0xPQ0sobV9sb2NrKTsKKyAgICBIYXNoU2V0
PFJlZjxTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZT4+IG1fY29ubmVjdGlvbnMgV1RGX0dVQVJE
RURfQllfTE9DSyhtX2xvY2spOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9JUEMvU3RyZWFtU2VydmVyQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL0lQQy9TdHJlYW1TZXJ2ZXJDb25uZWN0aW9uLmNwcAppbmRleCA2YTdhZTAyYjFlYmM3
NDYyNDViNDk5NjI4ZDRiMTI1N2RmNGViZjZlLi4wNzU0OTZjYjE0Mjk3OTI5ZmZiMzZiODRiMmQx
OWRmNWRiODNmYmQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJl
YW1TZXJ2ZXJDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9T
dHJlYW1TZXJ2ZXJDb25uZWN0aW9uLmNwcApAQCAtNTMsNyArNTMsNyBAQCB2b2lkIFN0cmVhbVNl
cnZlckNvbm5lY3Rpb25CYXNlOjpzdG9wUmVjZWl2aW5nTWVzc2FnZXNJbXBsKFJlY2VpdmVyTmFt
ZSByZWNlaXZlcgogdm9pZCBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uQmFzZTo6ZW5xdWV1ZU1lc3Nh
Z2UoQ29ubmVjdGlvbiYsIHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPiYmIG1lc3NhZ2UpCiB7CiAg
ICAgewotICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fb3V0T2ZTdHJlYW1NZXNzYWdl
c0xvY2spOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9vdXRPZlN0cmVhbU1lc3NhZ2VzTG9j
ayB9OwogICAgICAgICBtX291dE9mU3RyZWFtTWVzc2FnZXMuYXBwZW5kKFdURk1vdmUobWVzc2Fn
ZSkpOwogICAgIH0KICAgICBtX3dvcmtRdWV1ZS53YWtlVXAoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVhbVNlcnZlckNvbm5lY3Rpb24uaCBiL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmVhbVNlcnZlckNvbm5lY3Rpb24uaAppbmRleCAyNmFhNDNi
ZmE5YTk5Mzk4MzNjZTczZjM1MzRlZDQxZTM4MWRlNzg0Li45MGVkZjM4NzQxNGVhZjljMmFhOGFi
MTE5NWFhYmMyYjFiYjhhNDc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQ
Qy9TdHJlYW1TZXJ2ZXJDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9J
UEMvU3RyZWFtU2VydmVyQ29ubmVjdGlvbi5oCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAi
TWVzc2FnZU5hbWVzLmgiCiAjaW5jbHVkZSAiU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlci5oIgogI2lu
Y2x1ZGUgIlN0cmVhbUNvbm5lY3Rpb25FbmNvZGVyLmgiCisjaW5jbHVkZSA8d3RmL0NoZWNrZWRM
b2NrLmg+CiAjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5o
PgogCkBAIC05Miw4ICs5Myw5IEBAIHByb3RlY3RlZDoKICAgICBzaXplX3QgbV9zZXJ2ZXJPZmZz
ZXQgeyAwIH07CiAgICAgU3RyZWFtQ29ubmVjdGlvbkJ1ZmZlciBtX2J1ZmZlcjsKIAotICAgIExv
Y2sgbV9vdXRPZlN0cmVhbU1lc3NhZ2VzTG9jazsKLSAgICBEZXF1ZTxzdGQ6OnVuaXF1ZV9wdHI8
RGVjb2Rlcj4+IG1fb3V0T2ZTdHJlYW1NZXNzYWdlczsKKyAgICBDaGVja2VkTG9jayBtX291dE9m
U3RyZWFtTWVzc2FnZXNMb2NrOworICAgIERlcXVlPHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPj4g
bV9vdXRPZlN0cmVhbU1lc3NhZ2VzIFdURl9HVUFSREVEX0JZX0xPQ0sobV9vdXRPZlN0cmVhbU1l
c3NhZ2VzTG9jayk7CisKICAgICBib29sIG1faXNEaXNwYXRjaGluZ1N0cmVhbU1lc3NhZ2UgeyBm
YWxzZSB9OwogCiAgICAgZnJpZW5kIGNsYXNzIFN0cmVhbUNvbm5lY3Rpb25Xb3JrUXVldWU7CkBA
IC0xNTMsOSArMTU1LDkgQEAgcHJpdmF0ZToKICAgICBib29sIHByb2Nlc3NTZXRTdHJlYW1EZXN0
aW5hdGlvbklEKERlY29kZXImJiwgUmVmUHRyPFJlY2VpdmVyPiYgY3VycmVudFJlY2VpdmVyKTsK
ICAgICBib29sIGRpc3BhdGNoU3RyZWFtTWVzc2FnZShEZWNvZGVyJiYsIFJlY2VpdmVyJik7CiAg
ICAgYm9vbCBkaXNwYXRjaE91dE9mU3RyZWFtTWVzc2FnZShEZWNvZGVyJiYpOwotICAgIExvY2sg
bV9yZWNlaXZlcnNMb2NrOworICAgIENoZWNrZWRMb2NrIG1fcmVjZWl2ZXJzTG9jazsKICAgICB1
c2luZyBSZWNlaXZlcnNNYXAgPSBIYXNoTWFwPHN0ZDo6cGFpcjx1aW50OF90LCB1aW50NjRfdD4s
IFJlZjxSZWNlaXZlcj4+OwotICAgIFJlY2VpdmVyc01hcCBtX3JlY2VpdmVyczsKKyAgICBSZWNl
aXZlcnNNYXAgbV9yZWNlaXZlcnMgV1RGX0dVQVJERURfQllfTE9DSyhtX3JlY2VpdmVyc0xvY2sp
OwogICAgIHVpbnQ2NF90IG1fY3VycmVudERlc3RpbmF0aW9uSUQgeyAwIH07CiB9OwogCkBAIC0x
NjQsNyArMTY2LDcgQEAgdm9pZCBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uPFJlY2VpdmVyPjo6c3Rh
cnRSZWNlaXZpbmdNZXNzYWdlcyhSZWNlaXZlciYgcmVjZWl2ZXIKIHsKICAgICB7CiAgICAgICAg
IGF1dG8ga2V5ID0gc3RkOjptYWtlX3BhaXIoc3RhdGljX2Nhc3Q8dWludDhfdD4ocmVjZWl2ZXJO
YW1lKSwgZGVzdGluYXRpb25JRCk7Ci0gICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9y
ZWNlaXZlcnNMb2NrKTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fcmVjZWl2ZXJzTG9jayB9
OwogICAgICAgICBBU1NFUlQoIW1fcmVjZWl2ZXJzLmNvbnRhaW5zKGtleSkpOwogICAgICAgICBt
X3JlY2VpdmVycy5hZGQoa2V5LCBtYWtlUmVmKHJlY2VpdmVyKSk7CiAgICAgfQpAQCAtMTc2LDcg
KzE3OCw3IEBAIHZvaWQgU3RyZWFtU2VydmVyQ29ubmVjdGlvbjxSZWNlaXZlcj46OnN0b3BSZWNl
aXZpbmdNZXNzYWdlcyhSZWNlaXZlck5hbWUgcmVjZWl2CiB7CiAgICAgU3RyZWFtU2VydmVyQ29u
bmVjdGlvbkJhc2U6OnN0b3BSZWNlaXZpbmdNZXNzYWdlc0ltcGwocmVjZWl2ZXJOYW1lLCBkZXN0
aW5hdGlvbklEKTsKICAgICBhdXRvIGtleSA9IHN0ZDo6bWFrZV9wYWlyKHN0YXRpY19jYXN0PHVp
bnQ4X3Q+KHJlY2VpdmVyTmFtZSksIGRlc3RpbmF0aW9uSUQpOwotICAgIGF1dG8gbG9ja2VyID0g
aG9sZExvY2sobV9yZWNlaXZlcnNMb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9yZWNlaXZl
cnNMb2NrIH07CiAgICAgQVNTRVJUKG1fcmVjZWl2ZXJzLmNvbnRhaW5zKGtleSkpOwogICAgIG1f
cmVjZWl2ZXJzLnJlbW92ZShrZXkpOwogfQpAQCAtMjE3LDcgKzIxOSw3IEBAIFN0cmVhbVNlcnZl
ckNvbm5lY3Rpb25CYXNlOjpEaXNwYXRjaFJlc3VsdCBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uPFJl
Y2VpdmVyPjo6ZGlzCiAgICAgICAgICAgICAgICAgbV9jb25uZWN0aW9uLT5kaXNwYXRjaERpZFJl
Y2VpdmVJbnZhbGlkTWVzc2FnZShkZWNvZGVyLm1lc3NhZ2VOYW1lKCkpOwogICAgICAgICAgICAg
ICAgIHJldHVybiBEaXNwYXRjaFJlc3VsdDo6SGFzTm9NZXNzYWdlczsKICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9yZWNlaXZlcnNMb2NrKTsKKyAg
ICAgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX3JlY2VpdmVyc0xvY2sgfTsKICAgICAgICAgICAg
IGN1cnJlbnRSZWNlaXZlciA9IG1fcmVjZWl2ZXJzLmdldChrZXkpOwogICAgICAgICB9CiAgICAg
ICAgIGlmICghY3VycmVudFJlY2VpdmVyKSB7CkBAIC0yMjYsNyArMjI4LDcgQEAgU3RyZWFtU2Vy
dmVyQ29ubmVjdGlvbkJhc2U6OkRpc3BhdGNoUmVzdWx0IFN0cmVhbVNlcnZlckNvbm5lY3Rpb248
UmVjZWl2ZXI+OjpkaXMKICAgICAgICAgICAgIC8vIFRoaXMgbWVhbnMgd2UgbXVzdCB0aW1lb3V0
IGV2ZXJ5IHJlY2VpdmVyIGluIHRoZSBzdHJlYW0gY29ubmVjdGlvbi4KICAgICAgICAgICAgIC8v
IEN1cnJlbnRseSB3ZSBhc3NlcnQgdGhhdCB0aGUgcmVjZWl2ZXJzIGFyZSBlbXB0eSwgYXMgd2Ug
b25seSBoYXZlIHVwIHRvIG9uZSByZWNlaXZlciBpbgogICAgICAgICAgICAgLy8gYSBzdHJlYW0g
Y29ubmVjdGlvbiB1bnRpbCBwb3NzaWJpbGl0eSBvZiBza2lwcGluZyBpcyBpbXBsZW1lbnRlZCBw
cm9wZXJseS4KLSAgICAgICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9yZWNlaXZlcnNM
b2NrKTsKKyAgICAgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX3JlY2VpdmVyc0xvY2sgfTsKICAg
ICAgICAgICAgIEFTU0VSVChtX3JlY2VpdmVycy5pc0VtcHR5KCkpOwogICAgICAgICAgICAgcmV0
dXJuIERpc3BhdGNoUmVzdWx0OjpIYXNOb01lc3NhZ2VzOwogICAgICAgICB9CkBAIC0yNzUsNyAr
Mjc3LDcgQEAgYm9vbCBTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uPFJlY2VpdmVyPjo6ZGlzcGF0Y2hP
dXRPZlN0cmVhbU1lc3NhZ2UoRGVjb2RlciYmIGRlY28KIHsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
RGVjb2Rlcj4gbWVzc2FnZTsKICAgICB7Ci0gICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2so
bV9vdXRPZlN0cmVhbU1lc3NhZ2VzTG9jayk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX291
dE9mU3RyZWFtTWVzc2FnZXNMb2NrIH07CiAgICAgICAgIGlmIChtX291dE9mU3RyZWFtTWVzc2Fn
ZXMuaXNFbXB0eSgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBtZXNzYWdl
ID0gbV9vdXRPZlN0cmVhbU1lc3NhZ2VzLnRha2VGaXJzdCgpOwpAQCAtMjg2LDcgKzI4OCw3IEBA
IGJvb2wgU3RyZWFtU2VydmVyQ29ubmVjdGlvbjxSZWNlaXZlcj46OmRpc3BhdGNoT3V0T2ZTdHJl
YW1NZXNzYWdlKERlY29kZXImJiBkZWNvCiAgICAgUmVmUHRyPFJlY2VpdmVyPiByZWNlaXZlcjsK
ICAgICB7CiAgICAgICAgIGF1dG8ga2V5ID0gc3RkOjptYWtlX3BhaXIoc3RhdGljX2Nhc3Q8dWlu
dDhfdD4obWVzc2FnZS0+bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSwgbWVzc2FnZS0+ZGVzdGluYXRp
b25JRCgpKTsKLSAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX3JlY2VpdmVyc0xvY2sp
OworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9yZWNlaXZlcnNMb2NrIH07CiAgICAgICAgIHJl
Y2VpdmVyID0gbV9yZWNlaXZlcnMuZ2V0KGtleSk7CiAgICAgfQogICAgIGlmIChyZWNlaXZlcikg
ewo=
</data>

          </attachment>
      

    </bug>

</bugzilla>