<?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>168695</bug_id>
          
          <creation_ts>2017-02-21 17:13:51 -0800</creation_ts>
          <short_desc>REGRESSION(r211344): Remote Inspector: listingForAutomationTarget() is called off-main-thread, causing assertions</short_desc>
          <delta_ts>2017-03-01 10:05:50 -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>Web Inspector</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="Blaze Burg">bburg</reporter>
          <assigned_to name="Blaze Burg">bburg</assigned_to>
          <cc>bburg</cc>
    
    <cc>commit-queue</cc>
    
    <cc>inspector-bugzilla-changes</cc>
    
    <cc>joepeck</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1279668</commentid>
    <comment_count>0</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2017-02-21 17:13:51 -0800</bug_when>
    <thetext>Hit this while running debug safaridriver. It may have been latent, but it&apos;s impossible to not hit now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1279669</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-02-21 17:14:10 -0800</bug_when>
    <thetext>&lt;rdar://problem/30643899&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1279681</commentid>
    <comment_count>2</comment_count>
      <attachid>302348</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2017-02-21 17:28:48 -0800</bug_when>
    <thetext>Created attachment 302348
Proposed Fix

Still needs to be tested on Mac JSContext and iOS. Works fine in Safari. Has some protect(this) issues.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1279682</commentid>
    <comment_count>3</comment_count>
      <attachid>302348</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2017-02-21 17:29:57 -0800</bug_when>
    <thetext>Comment on attachment 302348
Proposed Fix

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

&gt; Source/JavaScriptCore/inspector/remote/cocoa/RemoteInspectorCocoa.mm:468
&gt; +        std::lock_guard&lt;Lock&gt; lock(m_mutex);

This is missing ref() and deref() like all other uses of dispatchAsyncOnTarget have. But I wasn&apos;t sure whether we need to do this for both RemoteInspector and the connection, or just the latter.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1279683</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-02-21 17:31:22 -0800</bug_when>
    <thetext>Attachment 302348 did not pass style-queue:


ERROR: Source/JavaScriptCore/inspector/remote/cocoa/RemoteInspectorCocoa.mm:467:  No space between ^ and block definition.  [whitespace/brackets] [4]
Total errors found: 1 in 3 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>1279716</commentid>
    <comment_count>5</comment_count>
      <attachid>302348</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2017-02-21 18:38:05 -0800</bug_when>
    <thetext>Comment on attachment 302348
Proposed Fix

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

I haven&apos;t seen a backtrace but let me try to make sense of this.

RemoteInspector::listingForAutomationTarget and RemoteInspector::listingForInspectionTarget both exist for getting listings.

    * One of them (listingForInspectionTarget) can seemingly be called from any thread.
    * The other (listingForAutomationTarget) should only be called from the Main Thread, presumably because one of those accessor calls is virtual and can do _anything_ in the UIProcess and so should be done when it is safe to do so.

I don&apos;t actually see us calling some potentially wild virtual method, however I do see potential for issues if something is being modified at the same time that it is being fetched for a listing. I&apos;m not sure this could be solved without a Lock per Target or a guaranteed access thread. I recall this worked differently a long time ago, but I don&apos;t remember how it changed differently.

If updateTargetListing is asynchronous on a background thread, then it will be racing against pushListingsSoon on a different thread. I see no guarantee that the update happens before the push. So I don&apos;t think this patch as is can be correct.

&gt; Source/JavaScriptCore/inspector/remote/cocoa/RemoteInspectorCocoa.mm:465
&gt; +    auto connectionToTarget = m_targetConnectionMap.get(targetIdentifier);
&gt; +    if (!connectionToTarget)
&gt;          return;

This looks wrong. We should update the target listing regardless of whether or not there is a connection for it or not. It seems this would mean we never do any updates unless a debugger is connected.

&gt;&gt; Source/JavaScriptCore/inspector/remote/cocoa/RemoteInspectorCocoa.mm:468
&gt;&gt; +        std::lock_guard&lt;Lock&gt; lock(m_mutex);
&gt; 
&gt; This is missing ref() and deref() like all other uses of dispatchAsyncOnTarget have. But I wasn&apos;t sure whether we need to do this for both RemoteInspector and the connection, or just the latter.

I don&apos;t think you need a ref/deref. RemoteInspector is a singleton that will always be alive. The connection is not used in the block so the connection could be destroyed and the block wouldn&apos;t have any problems when it executes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1279719</commentid>
    <comment_count>6</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2017-02-21 18:44:09 -0800</bug_when>
    <thetext>Perhaps an alternative is to move the updateTargetListing + pushListingSoon combo to the end of RemoteConnectionToTarget::setup / RemoteConnectionToTarget::close which happens on the target queue. That should more closely match the other cases, but I don&apos;t really know if that is an improvement.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1279771</commentid>
    <comment_count>7</comment_count>
      <attachid>302366</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2017-02-21 21:28:22 -0800</bug_when>
    <thetext>Created attachment 302366
Patch v2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1279778</commentid>
    <comment_count>8</comment_count>
      <attachid>302366</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2017-02-21 22:08:10 -0800</bug_when>
    <thetext>Comment on attachment 302366
Patch v2

Okay this seems fine to me. I&apos;ll have to think about it a bit more tomorrow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1280437</commentid>
    <comment_count>9</comment_count>
      <attachid>302366</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2017-02-23 12:37:59 -0800</bug_when>
    <thetext>Comment on attachment 302366
Patch v2

I haven&apos;t thought of any new concerns with this approach. So r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1282321</commentid>
    <comment_count>10</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2017-03-01 10:05:50 -0800</bug_when>
    <thetext>Committed r213228: &lt;http://trac.webkit.org/changeset/213228&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>302348</attachid>
            <date>2017-02-21 17:28:48 -0800</date>
            <delta_ts>2017-02-21 21:28:18 -0800</delta_ts>
            <desc>Proposed Fix</desc>
            <filename>bug-168695-20170221172602.patch</filename>
            <type>text/plain</type>
            <size>3645</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEyNzE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
YmViMThiYWZlZGU4MTAxZGZlMmQ3MDVjZTc5OWIxMzAzMjEzODQwLi5hOTlmOWVjMTI1OTgzNTY2
ZTE3NDUwNjQ0MmI3YjVkNWQwOGM1ODVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMSBAQAorMjAxNy0wMi0yMSAgQnJpYW4gQnVyZyAgPGJidXJnQGFwcGxlLmNvbT4KKwor
ICAgICAgICBSRUdSRVNTSU9OKHIyMTEzNDQpOiBSZW1vdGUgSW5zcGVjdG9yOiBsaXN0aW5nRm9y
QXV0b21hdGlvblRhcmdldCgpIGlzIGNhbGxlZCBvZmYtbWFpbi10aHJlYWQsIGNhdXNpbmcgYXNz
ZXJ0aW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTY4Njk1CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zMDY0Mzg5OT4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgYWZvcmVtZW50aW9uZWQgY29t
bWl0IGFkZGVkIHNvbWUgbmV3IGNhbGxzIHRvIHVwZGF0ZSB0YXJnZXQgbGlzdGluZ3MuIFRoaXMg
Y2F1c2VzIFJlbW90ZUluc3BlY3RvcgorICAgICAgICB0byB1cGRhdGUgc29tZSBsaXN0aW5ncyB1
bmRlcm5lYXRoIGFuIGluY29taW5nIHNldHVwIG1lc3NhZ2Ugb24gdGhlIFhQQyBxdWV1ZSwgd2hp
Y2ggaXMgbm90IGEgc2FmZSBwbGFjZQorICAgICAgICB0byBnYXRoZXIgbGlzdGluZyBpbmZvcm1h
dGlvbi4gVXBkYXRlIHRoZSBsaXN0aW5nIGFzeW5jaHJvbm91c2x5IHNpbmNlIHdlIGRvbid0IG5l
ZWQgaXQgaW1tZWRpYXRlbHkuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUNv
bm5lY3Rpb25Ub1RhcmdldC5oOiBNYWtlIGRpc3BhdGNoQXN5bmNPblRhcmdldCgpIHVzYWJsZSBm
cm9tIFJlbW90ZUluc3BlY3Rvci4KKyAgICAgICAgKiBpbnNwZWN0b3IvcmVtb3RlL2NvY29hL1Jl
bW90ZUluc3BlY3RvckNvY29hLm1tOgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0
b3I6OnVwZGF0ZVRhcmdldExpc3RpbmcpOgorICAgICAgICBVc2UgdGhlIFJlbW90ZUNvbm5lY3Rp
b25Ub1RhcmdldCBtYWNoaW5lcnkgdG8gZGlzcGF0Y2ggYSBibG9jayB0aGF0IHVwZGF0ZXMgbGlz
dGluZ3Mgb24gdGhlIGFwcHJvcHJpYXRlIHF1ZXVlLgorICAgICAgICBJbnNpZGUgdGhlIHdvcmsg
YmxvY2ssIGdyYWIgdGhlIGxvY2sgYW5kIGRvdWJsZS1jaGVjayB0aGF0IHRoZSB0YXJnZXQgd2Fz
bid0IGNsZWFyZWQgb3V0IHdoaWxlIHdhaXRpbmcgdG8gcnVuLgorCiAyMDE3LTAyLTIxICBSeWFu
IEhhZGRhZCAgPHJ5YW5oYWRkYWRAYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJv
bGxpbmcgb3V0IHIyMTI3MTIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL3JlbW90ZS9SZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldC5oCmluZGV4
IDk5NTk2ZTVjOGY4NjQ2NWU4ZjcwMDRhYzAxMGViMDgzM2U4ZTYzYTAuLjI3ODliNjU0ZDcwYzQ5
OWE3MWY4NDYwMDRkNzE0YjI1MDY5MzU1ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldC5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUNvbm5lY3Rpb25Ub1Rh
cmdldC5oCkBAIC03NywxMCArNzcsMTIgQEAgcHVibGljOgogICAgIENvbm5lY3Rpb25UeXBlIGNv
bm5lY3Rpb25UeXBlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gQ29ubmVjdGlvblR5cGU6OlJl
bW90ZTsgfQogICAgIHZvaWQgc2VuZE1lc3NhZ2VUb0Zyb250ZW5kKGNvbnN0IFN0cmluZyYpIG92
ZXJyaWRlOwogCi1wcml2YXRlOgogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHZvaWQgZGlzcGF0
Y2hBc3luY09uVGFyZ2V0KHZvaWQgKF5ibG9jaykoKSk7CisjZW5kaWYKIAorcHJpdmF0ZToKKyNp
ZiBQTEFURk9STShDT0NPQSkKICAgICB2b2lkIHNldHVwUnVuTG9vcCgpOwogICAgIHZvaWQgdGVh
cmRvd25SdW5Mb29wKCk7CiAgICAgdm9pZCBxdWV1ZVRhc2tPblByaXZhdGVSdW5Mb29wKHZvaWQg
KF5ibG9jaykoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L3JlbW90ZS9jb2NvYS9SZW1vdGVJbnNwZWN0b3JDb2NvYS5tbSBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvcmVtb3RlL2NvY29hL1JlbW90ZUluc3BlY3RvckNvY29hLm1tCmluZGV4
IDU3MjBlODg0ZTJhMDAzN2VmNTg4ZDVlOGEwOGYwMDNlMzdiZDQwNDAuLmQ0YmM4ZmFhYzc1NjI2
ZWY0ZTY1ZmM0YTFkOTIyZmMzZmE2ZWYwMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvcmVtb3RlL2NvY29hL1JlbW90ZUluc3BlY3RvckNvY29hLm1tCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL2NvY29hL1JlbW90ZUluc3Bl
Y3RvckNvY29hLm1tCkBAIC00NTgsMTEgKzQ1OCwyNCBAQCB2b2lkIFJlbW90ZUluc3BlY3Rvcjo6
dXBkYXRlVGFyZ2V0TGlzdGluZyh1bnNpZ25lZCB0YXJnZXRJZGVudGlmaWVyKQogCiB2b2lkIFJl
bW90ZUluc3BlY3Rvcjo6dXBkYXRlVGFyZ2V0TGlzdGluZyhjb25zdCBSZW1vdGVDb250cm9sbGFi
bGVUYXJnZXQmIHRhcmdldCkKIHsKLSAgICBSZXRhaW5QdHI8TlNEaWN0aW9uYXJ5PiB0YXJnZXRM
aXN0aW5nID0gbGlzdGluZ0ZvclRhcmdldCh0YXJnZXQpOwotICAgIGlmICghdGFyZ2V0TGlzdGlu
ZykKKyAgICB1bnNpZ25lZCB0YXJnZXRJZGVudGlmaWVyID0gdGFyZ2V0LnRhcmdldElkZW50aWZp
ZXIoKTsKKworICAgIGF1dG8gY29ubmVjdGlvblRvVGFyZ2V0ID0gbV90YXJnZXRDb25uZWN0aW9u
TWFwLmdldCh0YXJnZXRJZGVudGlmaWVyKTsKKyAgICBpZiAoIWNvbm5lY3Rpb25Ub1RhcmdldCkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgbV90YXJnZXRMaXN0aW5nTWFwLnNldCh0YXJnZXQudGFy
Z2V0SWRlbnRpZmllcigpLCB0YXJnZXRMaXN0aW5nKTsKKyAgICBjb25uZWN0aW9uVG9UYXJnZXQt
PmRpc3BhdGNoQXN5bmNPblRhcmdldCheeworICAgICAgICBzdGQ6OmxvY2tfZ3VhcmQ8TG9jaz4g
bG9jayhtX211dGV4KTsKKworICAgICAgICBpZiAoIW1fdGFyZ2V0TWFwLmNvbnRhaW5zKHRhcmdl
dElkZW50aWZpZXIpKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIFJldGFpblB0cjxO
U0RpY3Rpb25hcnk+IHRhcmdldExpc3RpbmcgPSBsaXN0aW5nRm9yVGFyZ2V0KHRhcmdldCk7Cisg
ICAgICAgIGlmICghdGFyZ2V0TGlzdGluZykKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAg
ICBtX3RhcmdldExpc3RpbmdNYXAuc2V0KHRhcmdldElkZW50aWZpZXIsIHRhcmdldExpc3Rpbmcp
OworICAgIH0pOwogfQogCiAjcHJhZ21hIG1hcmsgLSBSZWNlaXZlZCBYUEMgTWVzc2FnZXMK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>302366</attachid>
            <date>2017-02-21 21:28:22 -0800</date>
            <delta_ts>2017-02-23 12:37:59 -0800</delta_ts>
            <desc>Patch v2</desc>
            <filename>bug-168695-20170221212536.patch</filename>
            <type>text/plain</type>
            <size>7798</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEyNzE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
YmViMThiYWZlZGU4MTAxZGZlMmQ3MDVjZTc5OWIxMzAzMjEzODQwLi5hMjA1OGI1ZDkyMDA1MzUz
NzkwZGE3OWE2ODY5NjQ4MWVlOGEyODdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0MCBAQAorMjAxNy0wMi0yMSAgQnJpYW4gQnVyZyAgPGJidXJnQGFwcGxlLmNvbT4KKwor
ICAgICAgICBSRUdSRVNTSU9OKHIyMTEzNDQpOiBSZW1vdGUgSW5zcGVjdG9yOiBsaXN0aW5nRm9y
QXV0b21hdGlvblRhcmdldCgpIGlzIGNhbGxlZCBvZmYtbWFpbi10aHJlYWQsIGNhdXNpbmcgYXNz
ZXJ0aW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTY4Njk1CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zMDY0Mzg5OT4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgYWZvcmVtZW50aW9uZWQgY29t
bWl0IGFkZGVkIHNvbWUgbmV3IGNhbGxzIHRvIHVwZGF0ZSB0YXJnZXQgbGlzdGluZ3MuIFRoaXMg
Y2F1c2VzIFJlbW90ZUluc3BlY3RvcgorICAgICAgICB0byB1cGRhdGUgc29tZSBsaXN0aW5ncyB1
bmRlcm5lYXRoIGFuIGluY29taW5nIHNldHVwIG1lc3NhZ2Ugb24gdGhlIFhQQyBxdWV1ZSwgd2hp
Y2ggaXMgbm90IGEgc2FmZSBwbGFjZQorICAgICAgICB0byBnYXRoZXIgbGlzdGluZyBpbmZvcm1h
dGlvbiBmb3IgUmVtb3RlQXV0b21hdGlvblRhcmdldHMuCisKKyAgICAgICAgVXBkYXRlIHRoZSBs
aXN0aW5nIGFzeW5jaHJvbm91c2x5IHNpbmNlIHdlIGRvbid0IG5lZWQgaXQgaW1tZWRpYXRlbHku
IFNpbmNlIHRoaXMgcmVhbGx5IG9ubHkgaGFwcGVucyB3aGVuCisgICAgICAgIHRoZSBjb25uZWN0
aW9uIHRvIHRoZSB0YXJnZXQgaXMgc2V0IHVwIGFuZCBzaHV0IGRvd24sIHdlIGNhbiB0cmlnZ2Vy
IGxpc3RpbmdzIHRvIGJlIHJlZnJlc2hlZCBmcm9tCisgICAgICAgIHRoZSBhc3luYyBibG9jayB0
aGF0J3MgY2FsbGVkIG9uIHRoZSB0YXJnZXQncyBxdWV1ZSBpbnNpZGUgUmVtb3RlQ29ubmVjdGlv
blRvVGFyZ2V0Ojp7c2V0dXAsY2xvc2V9LgorCisgICAgICAgICogaW5zcGVjdG9yL3JlbW90ZS9S
ZW1vdGVJbnNwZWN0b3IuaDoKKyAgICAgICAgTWFrZSB1cGRhdGVMaXN0aW5nRm9yVGFyZ2V0KHVu
c2lnbmVkKSB1c2FibGUgZnJvbSBSZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQuCisKKyAgICAgICAg
KiBpbnNwZWN0b3IvcmVtb3RlL2NvY29hL1JlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldENvY29hLm1t
OgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQ6OnNldHVwKToK
KyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0OjpjbG9zZSk6Cisg
ICAgICAgIEdyYWIgdGhlIHRhcmdldCBpZGVudGlmaWVyIHdoaWxlIHRoZSBSZW1vdGVDb250cm9s
bGFibGVUYXJnZXQgcG9pbnRlciBpcyBzdGlsbCB2YWxpZCwKKyAgICAgICAgYW5kIHVzZSBpdCBp
bnNpZGUgdGhlIGJsb2NrIGxhdGVyIGFmdGVyIGl0IG1heSBoYXZlIGJlZW4gZGVzdHJ1Y3RlZCBh
bHJlYWR5LiBJZiB0aGF0IGhhcHBlbnMsCisgICAgICAgIHRoZW4gdXBkYXRlVGFyZ2V0TGlzdGlu
ZyB3aWxsIGJhaWwgb3V0IGJlY2F1c2UgdGhlIHRhcmdldElkZW50aWZpZXIgY2Fubm90IGJlIGZv
dW5kIGluIHRoZSBtYXBwaW5nLgorCisgICAgICAgICogaW5zcGVjdG9yL3JlbW90ZS9jb2NvYS9S
ZW1vdGVJbnNwZWN0b3JDb2NvYS5tbToKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVj
dG9yOjp1cGRhdGVUYXJnZXRMaXN0aW5nKToKKyAgICAgICAgV2UgbmVlZCB0byBtYWtlIHN1cmUg
dG8gcmVxdWVzdCBhIGxpc3RpbmcgcHVzaCBhZnRlciB0aGUgdGFyZ2V0IGlzIHVwZGF0ZWQsIHNv
IGltcGxpY2l0bHkgY2FsbAorICAgICAgICBwdXNoTGlzdGluZ3NTb29uKCkgZnJvbSBoZXJlLiBU
aGF0IG1ldGhvZCBkb2Vzbid0IHJlcXVpcmUgYW55IHBhcnRpY3VsYXIgcXVldWUgb3IgaG9sZGlu
ZyBhIGxvY2suCisKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yOjpyZWNlaXZl
ZFNldHVwTWVzc2FnZSk6CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rvcjo6cmVj
ZWl2ZWREaWRDbG9zZU1lc3NhZ2UpOgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0
b3I6OnJlY2VpdmVkQ29ubmVjdGlvbkRpZWRNZXNzYWdlKToKKyAgICAgICAgUmVtb3ZlIGNhbGxz
IHRvIHVwZGF0ZVRhcmdldExpc3RpbmcoKSBhbmQgcHVzaExpc3RpbmdzU29vbigpLCBhcyB0aGVz
ZSBoYXBwZW4gaW1wbGljaXRseQorICAgICAgICBhbmQgYXN5bmNocm9ub3VzbHkgb24gdGhlIHRh
cmdldCdzIHF1ZXVlIHdoZW4gdGhlIGNvbm5lY3Rpb24gdG8gdGFyZ2V0IGlzIG9wZW5lZCBvciBj
bG9zZWQuCisKIDIwMTctMDItMjEgIFJ5YW4gSGFkZGFkICA8cnlhbmhhZGRhZEBhcHBsZS5jb20+
CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjIxMjcxMi4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3Rvci5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9y
LmgKaW5kZXggYjdjYTFlYTFlOTEwMTQzM2RkMzk0OThkNDgxYTIwOTZkYmI3OWE3YS4uNTExODdm
MjMyN2Y3MDgxMGMxMzBhYzk4NzFjNGFjNGZmZGE1OWNmZiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yLmgKQEAg
LTk0LDYgKzk0LDggQEAgcHVibGljOgogICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IHBhcmVudFBy
b2Nlc3NBdWRpdERhdGEoKSBjb25zdCB7IHJldHVybiBtX3BhcmVudFByb2Nlc3NBdWRpdERhdGE7
IH0KICAgICB2b2lkIHNldFBhcmVudFByb2Nlc3NJbmZvcm1hdGlvbihwaWRfdCwgUmV0YWluUHRy
PENGRGF0YVJlZj4gYXVkaXREYXRhKTsKICAgICB2b2lkIHNldFBhcmVudFByb2Nlc3NJbmZvbWF0
aW9uSXNEZWxheWVkKCk7CisKKyAgICB2b2lkIHVwZGF0ZVRhcmdldExpc3RpbmcodW5zaWduZWQg
dGFyZ2V0SWRlbnRpZmllcik7CiAjZW5kaWYKIAogcHJpdmF0ZToKQEAgLTExNSw3ICsxMTcsNiBA
QCBwcml2YXRlOgogICAgIHZvaWQgcHVzaExpc3RpbmdzTm93KCk7CiAgICAgdm9pZCBwdXNoTGlz
dGluZ3NTb29uKCk7CiAKLSAgICB2b2lkIHVwZGF0ZVRhcmdldExpc3RpbmcodW5zaWduZWQgdGFy
Z2V0SWRlbnRpZmllcik7CiAgICAgdm9pZCB1cGRhdGVUYXJnZXRMaXN0aW5nKGNvbnN0IFJlbW90
ZUNvbnRyb2xsYWJsZVRhcmdldCYpOwogCiAgICAgdm9pZCB1cGRhdGVIYXNBY3RpdmVEZWJ1Z1Nl
c3Npb24oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVt
b3RlL2NvY29hL1JlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldENvY29hLm1tIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvY29jb2EvUmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0
Q29jb2EubW0KaW5kZXggNGViYmJlYWE5OWE5Mzg1YTE2NDlhZDZmNDE0ZWVjZjkzMmYwYTg3Mi4u
ZmFmZDhhYjMzZjU2YmU2YjdmYWFmYzFlZmZmNTI0NjNmY2E3ODYxOSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvY29jb2EvUmVtb3RlQ29ubmVjdGlv
blRvVGFyZ2V0Q29jb2EubW0KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9y
ZW1vdGUvY29jb2EvUmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0Q29jb2EubW0KQEAgLTE1OSwxMiAr
MTU5LDE1IEBAIGJvb2wgUmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0OjpzZXR1cChib29sIGlzQXV0
b21hdGljSW5zcGVjdGlvbiwgYm9vbCBhdXRvbWF0aWNhCiAgICAgaWYgKCFtX3RhcmdldCkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCisgICAgdW5zaWduZWQgdGFyZ2V0SWRlbnRpZmllciA9IHRo
aXMtPnRhcmdldElkZW50aWZpZXIoKS52YWx1ZV9vcigwKTsKKyAgICAKICAgICByZWYoKTsKICAg
ICBkaXNwYXRjaEFzeW5jT25UYXJnZXQoXnsKICAgICAgICAgewogICAgICAgICAgICAgc3RkOjps
b2NrX2d1YXJkPExvY2s+IGxvY2sobV90YXJnZXRNdXRleCk7CisKICAgICAgICAgICAgIGlmICgh
bV90YXJnZXQgfHwgIW1fdGFyZ2V0LT5yZW1vdGVDb250cm9sQWxsb3dlZCgpKSB7Ci0gICAgICAg
ICAgICAgICAgUmVtb3RlSW5zcGVjdG9yOjpzaW5nbGV0b24oKS5zZXR1cEZhaWxlZCh0YXJnZXRJ
ZGVudGlmaWVyKCkudmFsdWVfb3IoMCkpOworICAgICAgICAgICAgICAgIFJlbW90ZUluc3BlY3Rv
cjo6c2luZ2xldG9uKCkuc2V0dXBGYWlsZWQodGFyZ2V0SWRlbnRpZmllcik7CiAgICAgICAgICAg
ICAgICAgbV90YXJnZXQgPSBudWxscHRyOwogICAgICAgICAgICAgfSBlbHNlIGlmIChpczxSZW1v
dGVJbnNwZWN0aW9uVGFyZ2V0PihtX3RhcmdldCkpIHsKICAgICAgICAgICAgICAgICBhdXRvIGNh
c3RlZFRhcmdldCA9IGRvd25jYXN0PFJlbW90ZUluc3BlY3Rpb25UYXJnZXQ+KG1fdGFyZ2V0KTsK
QEAgLTE3MywxMCArMTc2LDE0IEBAIGJvb2wgUmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0OjpzZXR1
cChib29sIGlzQXV0b21hdGljSW5zcGVjdGlvbiwgYm9vbCBhdXRvbWF0aWNhCiAKICAgICAgICAg
ICAgICAgICBpZiAoYXV0b21hdGljYWxseVBhdXNlKQogICAgICAgICAgICAgICAgICAgICBjYXN0
ZWRUYXJnZXQtPnBhdXNlKCk7CisKKyAgICAgICAgICAgICAgICBSZW1vdGVJbnNwZWN0b3I6OnNp
bmdsZXRvbigpLnVwZGF0ZVRhcmdldExpc3RpbmcodGFyZ2V0SWRlbnRpZmllcik7CiAgICAgICAg
ICAgICB9IGVsc2UgaWYgKGlzPFJlbW90ZUF1dG9tYXRpb25UYXJnZXQ+KG1fdGFyZ2V0KSkgewog
ICAgICAgICAgICAgICAgIGF1dG8gY2FzdGVkVGFyZ2V0ID0gZG93bmNhc3Q8UmVtb3RlQXV0b21h
dGlvblRhcmdldD4obV90YXJnZXQpOwogICAgICAgICAgICAgICAgIGNhc3RlZFRhcmdldC0+Y29u
bmVjdCh0aGlzKTsKICAgICAgICAgICAgICAgICBtX2Nvbm5lY3RlZCA9IHRydWU7CisKKyAgICAg
ICAgICAgICAgICBSZW1vdGVJbnNwZWN0b3I6OnNpbmdsZXRvbigpLnVwZGF0ZVRhcmdldExpc3Rp
bmcodGFyZ2V0SWRlbnRpZmllcik7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAg
ZGVyZWYoKTsKQEAgLTE5NCwxNiArMjAxLDE5IEBAIHZvaWQgUmVtb3RlQ29ubmVjdGlvblRvVGFy
Z2V0Ojp0YXJnZXRDbG9zZWQoKQogCiB2b2lkIFJlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldDo6Y2xv
c2UoKQogeworICAgIHVuc2lnbmVkIHRhcmdldElkZW50aWZpZXIgPSBtX3RhcmdldCA/IG1fdGFy
Z2V0LT50YXJnZXRJZGVudGlmaWVyKCkgOiAwOworICAgIAogICAgIHJlZigpOwogICAgIGRpc3Bh
dGNoQXN5bmNPblRhcmdldCheewogICAgICAgICB7CiAgICAgICAgICAgICBzdGQ6OmxvY2tfZ3Vh
cmQ8TG9jaz4gbG9jayhtX3RhcmdldE11dGV4KTsKLQogICAgICAgICAgICAgaWYgKG1fdGFyZ2V0
KSB7CiAgICAgICAgICAgICAgICAgaWYgKG1fY29ubmVjdGVkKQogICAgICAgICAgICAgICAgICAg
ICBtX3RhcmdldC0+ZGlzY29ubmVjdCh0aGlzKTsKIAogICAgICAgICAgICAgICAgIG1fdGFyZ2V0
ID0gbnVsbHB0cjsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBSZW1vdGVJbnNw
ZWN0b3I6OnNpbmdsZXRvbigpLnVwZGF0ZVRhcmdldExpc3RpbmcodGFyZ2V0SWRlbnRpZmllcik7
CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgZGVyZWYoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL2NvY29hL1JlbW90ZUluc3Bl
Y3RvckNvY29hLm1tIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvY29j
b2EvUmVtb3RlSW5zcGVjdG9yQ29jb2EubW0KaW5kZXggNTcyMGU4ODRlMmEwMDM3ZWY1ODhkNWU4
YTA4ZjAwM2UzN2JkNDA0MC4uMjRlOWNlNThiZDZjYjk2OTIyZjA2ZTlkNzE5NmMzZDUwNmIwODlm
MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvY29j
b2EvUmVtb3RlSW5zcGVjdG9yQ29jb2EubW0KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9yZW1vdGUvY29jb2EvUmVtb3RlSW5zcGVjdG9yQ29jb2EubW0KQEAgLTQ2Myw2ICs0
NjMsOCBAQCB2b2lkIFJlbW90ZUluc3BlY3Rvcjo6dXBkYXRlVGFyZ2V0TGlzdGluZyhjb25zdCBS
ZW1vdGVDb250cm9sbGFibGVUYXJnZXQmIHRhcmdldAogICAgICAgICByZXR1cm47CiAKICAgICBt
X3RhcmdldExpc3RpbmdNYXAuc2V0KHRhcmdldC50YXJnZXRJZGVudGlmaWVyKCksIHRhcmdldExp
c3RpbmcpOworCisgICAgcHVzaExpc3RpbmdzU29vbigpOwogfQogCiAjcHJhZ21hIG1hcmsgLSBS
ZWNlaXZlZCBYUEMgTWVzc2FnZXMKQEAgLTUxMSw4ICs1MTMsNiBAQCB2b2lkIFJlbW90ZUluc3Bl
Y3Rvcjo6cmVjZWl2ZWRTZXR1cE1lc3NhZ2UoTlNEaWN0aW9uYXJ5ICp1c2VySW5mbykKICAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAKICAgICB1cGRhdGVIYXNBY3RpdmVEZWJ1Z1Nlc3Np
b24oKTsKLSAgICB1cGRhdGVUYXJnZXRMaXN0aW5nKCp0YXJnZXQpOwotICAgIHB1c2hMaXN0aW5n
c1Nvb24oKTsKIH0KIAogdm9pZCBSZW1vdGVJbnNwZWN0b3I6OnJlY2VpdmVkRGF0YU1lc3NhZ2Uo
TlNEaWN0aW9uYXJ5ICp1c2VySW5mbykKQEAgLTU1MSw4ICs1NTEsNiBAQCB2b2lkIFJlbW90ZUlu
c3BlY3Rvcjo6cmVjZWl2ZWREaWRDbG9zZU1lc3NhZ2UoTlNEaWN0aW9uYXJ5ICp1c2VySW5mbykK
ICAgICBtX3RhcmdldENvbm5lY3Rpb25NYXAucmVtb3ZlKHRhcmdldElkZW50aWZpZXIpOwogCiAg
ICAgdXBkYXRlSGFzQWN0aXZlRGVidWdTZXNzaW9uKCk7Ci0gICAgdXBkYXRlVGFyZ2V0TGlzdGlu
Zyh0YXJnZXRJZGVudGlmaWVyKTsKLSAgICBwdXNoTGlzdGluZ3NTb29uKCk7CiB9CiAKIHZvaWQg
UmVtb3RlSW5zcGVjdG9yOjpyZWNlaXZlZEdldExpc3RpbmdNZXNzYWdlKE5TRGljdGlvbmFyeSAq
KQpAQCAtNjI3LDEzICs2MjUsMTAgQEAgdm9pZCBSZW1vdGVJbnNwZWN0b3I6OnJlY2VpdmVkQ29u
bmVjdGlvbkRpZWRNZXNzYWdlKE5TRGljdGlvbmFyeSAqdXNlckluZm8pCiAgICAgICAgIHJldHVy
bjsKIAogICAgIGF1dG8gY29ubmVjdGlvbiA9IGl0LT52YWx1ZTsKLSAgICB1bnNpZ25lZCB0YXJn
ZXRJZGVudGlmaWVyID0gY29ubmVjdGlvbi0+dGFyZ2V0SWRlbnRpZmllcigpLnZhbHVlX29yKDAp
OwogICAgIGNvbm5lY3Rpb24tPmNsb3NlKCk7CiAgICAgbV90YXJnZXRDb25uZWN0aW9uTWFwLnJl
bW92ZShpdCk7CiAKICAgICB1cGRhdGVIYXNBY3RpdmVEZWJ1Z1Nlc3Npb24oKTsKLSAgICB1cGRh
dGVUYXJnZXRMaXN0aW5nKHRhcmdldElkZW50aWZpZXIpOwotICAgIHB1c2hMaXN0aW5nc1Nvb24o
KTsKIH0KIAogdm9pZCBSZW1vdGVJbnNwZWN0b3I6OnJlY2VpdmVkQXV0b21hdGljSW5zcGVjdGlv
bkNvbmZpZ3VyYXRpb25NZXNzYWdlKE5TRGljdGlvbmFyeSAqdXNlckluZm8pCg==
</data>
<flag name="review"
          id="324103"
          type_id="1"
          status="+"
          setter="joepeck"
    />
          </attachment>
      

    </bug>

</bugzilla>