<?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>141209</bug_id>
          
          <creation_ts>2015-02-03 13:48:53 -0800</creation_ts>
          <short_desc>Workaround a thread library bug where thread destructors may not get called</short_desc>
          <delta_ts>2015-02-03 16:01: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>JavaScriptCore</component>
          <version>528+ (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="Mark Lam">mark.lam</reporter>
          <assigned_to name="Mark Lam">mark.lam</assigned_to>
          <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>mmirman</cc>
    
    <cc>msaboff</cc>
    
    <cc>oliver</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1066550</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2015-02-03 13:48:53 -0800</bug_when>
    <thetext>As far as we know, there&apos;s a darwin bug where thread destructors may not get called.  We will work around this by checking at GC time if the platform thread is still valid.  If not, we&apos;ll purge it from the VM&apos;s registeredThreads list before proceeding with thread scanning activity.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1066552</commentid>
    <comment_count>1</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2015-02-03 13:51:37 -0800</bug_when>
    <thetext>&lt;rdar://problem/17979784&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1066559</commentid>
    <comment_count>2</comment_count>
      <attachid>245965</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2015-02-03 14:02:04 -0800</bug_when>
    <thetext>Created attachment 245965
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1066566</commentid>
    <comment_count>3</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2015-02-03 14:17:42 -0800</bug_when>
    <thetext>&gt; there&apos;s a darwin bug

Is there a Radar tracking that?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1066568</commentid>
    <comment_count>4</comment_count>
      <attachid>245965</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2015-02-03 14:29:58 -0800</bug_when>
    <thetext>Comment on attachment 245965
the patch

r-
I believe that there is a race condition.  Consider thread A is exiting and it has already called MachineThreads::removeThread() but hasn&apos;t really exited.  Then thread B executes this code and doesn&apos;t purge thread A.  After completing this code, thread A really exits and then we call tryCopyOtherThreadStacks().  We&apos;ll still try to get thread stack info from the now dead A.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1066607</commentid>
    <comment_count>5</comment_count>
      <attachid>245977</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2015-02-03 15:36:21 -0800</bug_when>
    <thetext>Created attachment 245977
patch 2: no more race condition.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1066618</commentid>
    <comment_count>6</comment_count>
      <attachid>245977</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2015-02-03 15:48:42 -0800</bug_when>
    <thetext>Comment on attachment 245977
patch 2: no more race condition.

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

r=me with a couple of minor changes.

&gt; Source/JavaScriptCore/ChangeLog:15
&gt; +        suspension, because the thread is only guaranteed to be alive while it

Might want to change &quot;the thread&quot; to &quot;another thread&quot;.

&gt; Source/JavaScriptCore/heap/MachineStackMarker.cpp:194
&gt; +void MachineThreads::removeThreadWithLockAlreadyAcquired(PlatformThread platformThread)

threadToRemove seems like a better name for the argument.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1066622</commentid>
    <comment_count>7</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2015-02-03 15:55:43 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; Comment on attachment 245977 [details]
&gt; patch 2: no more race condition.
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=245977&amp;action=review
&gt; 
&gt; r=me with a couple of minor changes.
&gt; 
&gt; &gt; Source/JavaScriptCore/ChangeLog:15
&gt; &gt; +        suspension, because the thread is only guaranteed to be alive while it
&gt; 
&gt; Might want to change &quot;the thread&quot; to &quot;another thread&quot;.

Will change the wording to me more clear that it the another thread whose validity we&apos;re checking.

&gt; &gt; Source/JavaScriptCore/heap/MachineStackMarker.cpp:194
&gt; &gt; +void MachineThreads::removeThreadWithLockAlreadyAcquired(PlatformThread platformThread)
&gt; 
&gt; threadToRemove seems like a better name for the argument.

Changed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1066626</commentid>
    <comment_count>8</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2015-02-03 16:01:04 -0800</bug_when>
    <thetext>Thanks for the review.  Landed in r179576: &lt;http://trac.webkit.org/r179576&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>245965</attachid>
            <date>2015-02-03 14:02:04 -0800</date>
            <delta_ts>2015-02-03 15:36:21 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>bug-141209.patch</filename>
            <type>text/plain</type>
            <size>6151</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTc5NTY5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI2IEBA
CisyMDE1LTAyLTAzICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBX
b3JrYXJvdW5kIGEgdGhyZWFkIGxpYnJhcnkgYnVnIHdoZXJlIHRocmVhZCBkZXN0cnVjdG9ycyBt
YXkgbm90IGdldCBjYWxsZWQuCisgICAgICAgIDxodHRwczovL3dlYmtpdC5vcmcvYi8xNDEyMDk+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlcmUn
cyBhIGJ1ZyB3aGVyZSB0aHJlYWQgZGVzdHJ1Y3RvcnMgbWF5IG5vdCBnZXQgY2FsbGVkLiAgQXMg
ZmFyIGFzCisgICAgICAgIHdlIGtub3csIHRoaXMgb25seSBtYW5pZmVzdHMgb24gZGFyd2luIHBv
cnRzLiAgV2Ugd2lsbCB3b3JrIGFyb3VuZCB0aGlzCisgICAgICAgIGJ5IGNoZWNraW5nIGF0IEdD
IHRpbWUgaWYgdGhlIHBsYXRmb3JtIHRocmVhZCBpcyBzdGlsbCB2YWxpZC4gIElmIG5vdCwKKyAg
ICAgICAgd2UnbGwgcHVyZ2UgaXQgZnJvbSB0aGUgVk0ncyByZWdpc3RlcmVkVGhyZWFkcyBsaXN0
IGJlZm9yZSBwcm9jZWVkaW5nCisgICAgICAgIHdpdGggdGhyZWFkIHNjYW5uaW5nIGFjdGl2aXR5
LgorCisgICAgICAgICogQVBJL3Rlc3RzL3Rlc3RhcGkubW06CisgICAgICAgICh0aHJlYWRNYWlu
KToKKyAgICAgICAgLSBBZGRlZCBhIHRlc3QgdG8gZW50ZXIgdGhlIFZNIGZyb20gYW5vdGhlciB0
aHJlYWQgYmVmb3JlIHdlIEdDIG9uCisgICAgICAgICAgdGhlIG1haW4gdGhyZWFkLgorCisgICAg
ICAgICogaGVhcC9NYWNoaW5lU3RhY2tNYXJrZXIuY3BwOgorICAgICAgICAoSlNDOjpNYWNoaW5l
VGhyZWFkczo6cHVyZ2VJbnZhbGlkVGhyZWFkcyk6CisgICAgICAgIChKU0M6Ok1hY2hpbmVUaHJl
YWRzOjpnYXRoZXJDb25zZXJ2YXRpdmVSb290cyk6CisgICAgICAgICogaGVhcC9NYWNoaW5lU3Rh
Y2tNYXJrZXIuaDoKKwogMjAxNS0wMi0wMyAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBw
bGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IEFTU0VSVCBtYWluVGhyZWFkUHRocmVh
ZCBsYXVuY2hpbmcgcmVtb3RlIGRlYnVnZ2FibGUgSlNDb250ZXh0IGFwcCB3aXRoIERlYnVnIEph
dmFTY3JpcHRDb3JlCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL3Rlc3Rh
cGkubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0
YXBpLm1tCShyZXZpc2lvbiAxNzk1MDIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rl
c3RzL3Rlc3RhcGkubW0JKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDggQEAKICNpbXBvcnQg
IkRhdGVUZXN0cy5oIgogI2ltcG9ydCAiSlNFeHBvcnRUZXN0cy5oIgogCisjaW1wb3J0IDxwdGhy
ZWFkLmg+CisKIGV4dGVybiAiQyIgdm9pZCBKU1N5bmNocm9ub3VzR2FyYmFnZUNvbGxlY3RGb3JE
ZWJ1Z2dpbmcoSlNDb250ZXh0UmVmKTsKIGV4dGVybiAiQyIgdm9pZCBKU1N5bmNocm9ub3VzRWRl
bkNvbGxlY3RGb3JEZWJ1Z2dpbmcoSlNDb250ZXh0UmVmKTsKIApAQCAtNDcwLDYgKzQ3MiwxNiBA
QCBzdGF0aWMgYm9vbCBibG9ja1NpZ25hdHVyZUNvbnRhaW5zQ2xhc3MoCiAgICAgcmV0dXJuIGNv
bnRhaW5zQ2xhc3M7CiB9CiAKK3N0YXRpYyB2b2lkKiB0aHJlYWRNYWluKHZvaWQqIGNvbnRleHRQ
dHIpCit7CisgICAgSlNDb250ZXh0ICpjb250ZXh0ID0gKF9fYnJpZGdlIEpTQ29udGV4dCopY29u
dGV4dFB0cjsKKworICAgIC8vIERvIHNvbWV0aGluZyB0byBlbnRlciB0aGUgVk0uCisgICAgVGVz
dE9iamVjdCAqdGVzdE9iamVjdCA9IFtUZXN0T2JqZWN0IHRlc3RPYmplY3RdOworICAgIGNvbnRl
eHRbQCJ0ZXN0T2JqZWN0Il0gPSB0ZXN0T2JqZWN0OworICAgIHB0aHJlYWRfZXhpdChudWxscHRy
KTsKK30KKwogdm9pZCB0ZXN0T2JqZWN0aXZlQ0FQSSgpCiB7CiAgICAgTlNMb2coQCJUZXN0aW5n
IE9iamVjdGl2ZS1DIEFQSSIpOwpAQCAtMTM1OSw2ICsxMzcxLDE3IEBAIHZvaWQgdGVzdE9iamVj
dGl2ZUNBUEkoKQogICAgICAgICBjaGVja1Jlc3VsdChAIkVkZW5Db2xsZWN0aW9uIGRvZXNuJ3Qg
cmVjbGFpbSBuZXcgbWFuYWdlZCB2YWx1ZXMiLCBbbWFuYWdlZEpTT2JqZWN0IHZhbHVlXSAhPSBu
aWwpOwogICAgIH0KIAorICAgIEBhdXRvcmVsZWFzZXBvb2wgeworICAgICAgICBKU0NvbnRleHQg
KmNvbnRleHQgPSBbW0pTQ29udGV4dCBhbGxvY10gaW5pdF07CisgICAgICAgIAorICAgICAgICBw
dGhyZWFkX3QgdGhyZWFkSUQ7CisgICAgICAgIHB0aHJlYWRfY3JlYXRlKCZ0aHJlYWRJRCwgTlVM
TCwgJnRocmVhZE1haW4sIChfX2JyaWRnZSB2b2lkKiljb250ZXh0KTsKKyAgICAgICAgcHRocmVh
ZF9qb2luKHRocmVhZElELCBudWxscHRyKTsKKyAgICAgICAgSlNTeW5jaHJvbm91c0dhcmJhZ2VD
b2xsZWN0Rm9yRGVidWdnaW5nKFtjb250ZXh0IEpTR2xvYmFsQ29udGV4dFJlZl0pOworCisgICAg
ICAgIGNoZWNrUmVzdWx0KEAiRGlkIG5vdCBjcmFzaCBhZnRlciBlbnRlcmluZyB0aGUgVk0gZnJv
bSBhbm90aGVyIHRocmVhZCIsIHRydWUpOworICAgIH0KKyAgICAKICAgICBjdXJyZW50VGhpc0lu
c2lkZUJsb2NrR2V0dGVyVGVzdCgpOwogICAgIHJ1bkRhdGVUZXN0cygpOwogICAgIHJ1bkpTRXhw
b3J0VGVzdHMoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hY2hpbmVTdGFj
a01hcmtlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFj
aGluZVN0YWNrTWFya2VyLmNwcAkocmV2aXNpb24gMTc5NTAyKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvTWFjaGluZVN0YWNrTWFya2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDQ3
LDYgKzQ0Nyw0NyBAQCB2b2lkIE1hY2hpbmVUaHJlYWRzOjp0cnlDb3B5T3RoZXJUaHJlYWRTCiAg
ICAgZnJlZVBsYXRmb3JtVGhyZWFkUmVnaXN0ZXJzKHJlZ2lzdGVycyk7CiB9CiAKK3ZvaWQgTWFj
aGluZVRocmVhZHM6OnB1cmdlSW52YWxpZFRocmVhZHMoTXV0ZXhMb2NrZXImKQoreworI2lmIE9T
KERBUldJTikKKyAgICBQbGF0Zm9ybVRocmVhZCBjdXJyZW50UGxhdGZvcm1UaHJlYWQgPSBnZXRD
dXJyZW50UGxhdGZvcm1UaHJlYWQoKTsKKyAgICBUaHJlYWQqIHByZXZpb3VzVGhyZWFkID0gbnVs
bHB0cjsKKworICAgIGludCBudW1iZXJPZlRocmVhZHMgPSAwOyAvLyBVc2luZyAwIHRvIGRlbm90
ZSB0aGF0IHdlIGhhdmVuJ3QgY291bnRlZCB0aGUgbnVtYmVyIG9mIHRocmVhZHMgeWV0LgorICAg
IGludCBpbmRleCA9IDE7CisKKyAgICBmb3IgKFRocmVhZCogdGhyZWFkID0gbV9yZWdpc3RlcmVk
VGhyZWFkczsgdGhyZWFkOyBpbmRleCsrKSB7CisgICAgICAgIGlmICghZXF1YWxUaHJlYWQodGhy
ZWFkLT5wbGF0Zm9ybVRocmVhZCwgY3VycmVudFBsYXRmb3JtVGhyZWFkKSkgeworICAgICAgICAg
ICAgdGhyZWFkX2luZm9fdCB1bnVzZWRUaHJlYWRJbmZvT3V0ID0gbnVsbHB0cjsKKyAgICAgICAg
ICAgIG1hY2hfbXNnX3R5cGVfbnVtYmVyX3QgdW51c2VkVGhyZWFkSW5mb091dENudDsKKyAgICAg
ICAgICAgIGtlcm5fcmV0dXJuX3QgcmVzdWx0ID0gdGhyZWFkX2luZm8odGhyZWFkLT5wbGF0Zm9y
bVRocmVhZCwgVEhSRUFEX0JBU0lDX0lORk8sIHVudXNlZFRocmVhZEluZm9PdXQsICZ1bnVzZWRU
aHJlYWRJbmZvT3V0Q250KTsKKworICAgICAgICAgICAgaWYgKHJlc3VsdCAhPSBLRVJOX1NVQ0NF
U1MpIHsKKyAgICAgICAgICAgICAgICBpZiAoIW51bWJlck9mVGhyZWFkcykgeworICAgICAgICAg
ICAgICAgICAgICBmb3IgKFRocmVhZCogY291bnRlZFRocmVhZCA9IG1fcmVnaXN0ZXJlZFRocmVh
ZHM7IGNvdW50ZWRUaHJlYWQ7IGNvdW50ZWRUaHJlYWQgPSBjb3VudGVkVGhyZWFkLT5uZXh0KQor
ICAgICAgICAgICAgICAgICAgICAgICAgbnVtYmVyT2ZUaHJlYWRzKys7CisgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIFdURlJlcG9ydEVycm9yKF9f
RklMRV9fLCBfX0xJTkVfXywgV1RGX1BSRVRUWV9GVU5DVElPTiwKKyAgICAgICAgICAgICAgICAg
ICAgIkphdmFTY3JpcHQgZ2FyYmFnZSBjb2xsZWN0aW9uIGVuY291bnRlcmVkIGFuIGludmFsaWQg
dGhyZWFkIChlcnIgMHgleCk6IFRocmVhZCBbJWQvJWQ6ICVwXSBwbGF0Zm9ybVRocmVhZCAlcC4i
LAorICAgICAgICAgICAgICAgICAgICByZXN1bHQsIGluZGV4LCBudW1iZXJPZlRocmVhZHMsIHRo
cmVhZCwgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4odGhyZWFkLT5wbGF0Zm9ybVRocmVhZCkpOwor
CisgICAgICAgICAgICAgICAgVGhyZWFkKiBuZXh0VGhyZWFkID0gdGhyZWFkLT5uZXh0OworICAg
ICAgICAgICAgICAgIGlmIChwcmV2aW91c1RocmVhZCkKKyAgICAgICAgICAgICAgICAgICAgcHJl
dmlvdXNUaHJlYWQtPm5leHQgPSBuZXh0VGhyZWFkOworICAgICAgICAgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgICAgICAgICAgbV9yZWdpc3RlcmVkVGhyZWFkcyA9IG5leHRUaHJlYWQ7CisgICAg
ICAgICAgICAgICAgZGVsZXRlIHRocmVhZDsKKyAgICAgICAgICAgICAgICB0aHJlYWQgPSBuZXh0
VGhyZWFkOworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorICAgICAg
ICB9CisgICAgICAgIHByZXZpb3VzVGhyZWFkID0gdGhyZWFkOworICAgICAgICB0aHJlYWQgPSB0
aHJlYWQtPm5leHQ7CisgICAgfQorI2VuZGlmCit9CisgICAgCiBib29sIE1hY2hpbmVUaHJlYWRz
Ojp0cnlDb3B5T3RoZXJUaHJlYWRTdGFja3MoTXV0ZXhMb2NrZXImLCB2b2lkKiBidWZmZXIsIHNp
emVfdCBjYXBhY2l0eSwgc2l6ZV90KiBzaXplKQogewogICAgICpzaXplID0gMDsKQEAgLTQ5MCw2
ICs1MzEsNyBAQCB2b2lkIE1hY2hpbmVUaHJlYWRzOjpnYXRoZXJDb25zZXJ2YXRpdmVSCiAgICAg
c2l6ZV90IGNhcGFjaXR5ID0gMDsKICAgICB2b2lkKiBidWZmZXIgPSBudWxscHRyOwogICAgIE11
dGV4TG9ja2VyIGxvY2sobV9yZWdpc3RlcmVkVGhyZWFkc011dGV4KTsKKyAgICBwdXJnZUludmFs
aWRUaHJlYWRzKGxvY2spOwogICAgIHdoaWxlICghdHJ5Q29weU90aGVyVGhyZWFkU3RhY2tzKGxv
Y2ssIGJ1ZmZlciwgY2FwYWNpdHksICZzaXplKSkKICAgICAgICAgZ3Jvd0J1ZmZlcihzaXplLCAm
YnVmZmVyLCAmY2FwYWNpdHkpOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9N
YWNoaW5lU3RhY2tNYXJrZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9NYWNoaW5lU3RhY2tNYXJrZXIuaAkocmV2aXNpb24gMTc5NTAyKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvTWFjaGluZVN0YWNrTWFya2VyLmgJKHdvcmtpbmcgY29weSkKQEAg
LTUyLDYgKzUyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgdm9pZCBnYXRoZXJGcm9t
Q3VycmVudFRocmVhZChDb25zZXJ2YXRpdmVSb290cyYsIEpJVFN0dWJSb3V0aW5lU2V0JiwgQ29k
ZUJsb2NrU2V0Jiwgdm9pZCogc3RhY2tDdXJyZW50LCBSZWdpc3RlclN0YXRlJiByZWdpc3RlcnMp
OwogCisgICAgICAgIHZvaWQgcHVyZ2VJbnZhbGlkVGhyZWFkcyhNdXRleExvY2tlciYpOwogICAg
ICAgICB2b2lkIHRyeUNvcHlPdGhlclRocmVhZFN0YWNrKFRocmVhZCosIHZvaWQqLCBzaXplX3Qg
Y2FwYWNpdHksIHNpemVfdCopOwogICAgICAgICBib29sIHRyeUNvcHlPdGhlclRocmVhZFN0YWNr
cyhNdXRleExvY2tlciYsIHZvaWQqLCBzaXplX3QgY2FwYWNpdHksIHNpemVfdCopOwogCg==
</data>
<flag name="review"
          id="270890"
          type_id="1"
          status="-"
          setter="msaboff"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>245977</attachid>
            <date>2015-02-03 15:36:21 -0800</date>
            <delta_ts>2015-02-03 15:48:42 -0800</delta_ts>
            <desc>patch 2: no more race condition.</desc>
            <filename>bug-141209.patch</filename>
            <type>text/plain</type>
            <size>9014</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTc5NTczKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM5IEBA
CisyMDE1LTAyLTAzICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBX
b3JrYXJvdW5kIGEgdGhyZWFkIGxpYnJhcnkgYnVnIHdoZXJlIHRocmVhZCBkZXN0cnVjdG9ycyBt
YXkgbm90IGdldCBjYWxsZWQuCisgICAgICAgIDxodHRwczovL3dlYmtpdC5vcmcvYi8xNDEyMDk+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlcmUn
cyBhIGJ1ZyB3aGVyZSB0aHJlYWQgZGVzdHJ1Y3RvcnMgbWF5IG5vdCBnZXQgY2FsbGVkLiAgQXMg
ZmFyIGFzCisgICAgICAgIHdlIGtub3csIHRoaXMgb25seSBtYW5pZmVzdHMgb24gZGFyd2luIHBv
cnRzLiAgV2Ugd2lsbCB3b3JrIGFyb3VuZCB0aGlzCisgICAgICAgIGJ5IGNoZWNraW5nIGF0IEdD
IHRpbWUgaWYgdGhlIHBsYXRmb3JtIHRocmVhZCBpcyBzdGlsbCB2YWxpZC4gIElmIG5vdCwKKyAg
ICAgICAgd2UnbGwgcHVyZ2UgaXQgZnJvbSB0aGUgVk0ncyByZWdpc3RlcmVkVGhyZWFkcyBsaXN0
IGJlZm9yZSBwcm9jZWVkaW5nCisgICAgICAgIHdpdGggdGhyZWFkIHNjYW5uaW5nIGFjdGl2aXR5
LgorCisgICAgICAgIE5vdGU6IGl0IGlzIGltcG9ydGFudCB0aGF0IHdlIGRvIHRoaXMgaW52YWxp
ZCB0aHJlYWQgZGV0ZWN0aW9uIGR1cmluZworICAgICAgICBzdXNwZW5zaW9uLCBiZWNhdXNlIHRo
ZSB0aHJlYWQgaXMgb25seSBndWFyYW50ZWVkIHRvIGJlIGFsaXZlIHdoaWxlIGl0CisgICAgICAg
IGlzIHN1c3BlbmRlZC4KKworICAgICAgICAqIEFQSS90ZXN0cy90ZXN0YXBpLm1tOgorICAgICAg
ICAodGhyZWFkTWFpbik6CisgICAgICAgIC0gQWRkZWQgYSB0ZXN0IHRvIGVudGVyIHRoZSBWTSBm
cm9tIGFub3RoZXIgdGhyZWFkIGJlZm9yZSB3ZSBHQyBvbgorICAgICAgICAgIHRoZSBtYWluIHRo
cmVhZC4KKworICAgICAgICAqIGhlYXAvTWFjaGluZVN0YWNrTWFya2VyLmNwcDoKKyAgICAgICAg
KEpTQzo6TWFjaGluZVRocmVhZHM6OnJlbW92ZVRocmVhZFdpdGhMb2NrQWxyZWFkeUFjcXVpcmVk
KToKKyAgICAgICAgKEpTQzo6TWFjaGluZVRocmVhZHM6OnJlbW92ZUN1cnJlbnRUaHJlYWQpOgor
ICAgICAgICAtIHJlZmFjdG9yZWQgcmVtb3ZlVGhyZWFkV2l0aExvY2tBbHJlYWR5QWNxdWlyZWQo
KSBvdXQgZnJvbQorICAgICAgICAgIHJlbW92ZUN1cnJlbnRUaHJlYWQoKSBzbyB0aGF0IHdlIGNh
biBhbHNvIGNhbGwgaXQgZm9yIHB1cmdpbmcgaW52YWxpZAorICAgICAgICAgIHRocmVhZHMuCisg
ICAgICAgIChKU0M6OnN1c3BlbmRUaHJlYWQpOgorICAgICAgICAtIEFkZGVkIGEgcmV0dXJuIHN0
YXR1cyB0byB0ZWxsIGlmIHRoZSBzdXNwZW5zaW9uIHN1Y2NlZWRlZCBvciBub3QuCisgICAgICAg
IChKU0M6Ok1hY2hpbmVUaHJlYWRzOjp0cnlDb3B5T3RoZXJUaHJlYWRTdGFja3MpOgorICAgICAg
ICAtIENoZWNrIGlmIHRoZSBzdXNwZW5zaW9uIGZhaWxlZCwgYW5kIHB1cmdlIHRoZSB0aHJlYWQg
aWYgd2UgY2FuJ3QKKyAgICAgICAgICBzdXNwZW5kIGl0LiAgRmFpbHVyZSB0byBzdXNwZW5kIGlt
cGxpZXMgdGhhdCB0aGUgdGhyZWFkIGhhcworICAgICAgICAgIHRlcm1pbmF0ZWQgd2l0aG91dCBj
YWxsaW5nIGl0cyBkZXN0cnVjdG9yLgorICAgICAgICAqIGhlYXAvTWFjaGluZVN0YWNrTWFya2Vy
Lmg6CisKIDIwMTUtMDItMDMgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4K
IAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBBU1NFUlQgbWFpblRocmVhZFB0aHJlYWQgbGF1bmNo
aW5nIHJlbW90ZSBkZWJ1Z2dhYmxlIEpTQ29udGV4dCBhcHAgd2l0aCBEZWJ1ZyBKYXZhU2NyaXB0
Q29yZQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpLm1tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvdGVzdGFwaS5tbQko
cmV2aXNpb24gMTc5NTAyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0
YXBpLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw4IEBACiAjaW1wb3J0ICJEYXRlVGVz
dHMuaCIKICNpbXBvcnQgIkpTRXhwb3J0VGVzdHMuaCIKIAorI2ltcG9ydCA8cHRocmVhZC5oPgor
CiBleHRlcm4gIkMiIHZvaWQgSlNTeW5jaHJvbm91c0dhcmJhZ2VDb2xsZWN0Rm9yRGVidWdnaW5n
KEpTQ29udGV4dFJlZik7CiBleHRlcm4gIkMiIHZvaWQgSlNTeW5jaHJvbm91c0VkZW5Db2xsZWN0
Rm9yRGVidWdnaW5nKEpTQ29udGV4dFJlZik7CiAKQEAgLTQ3MCw2ICs0NzIsMTYgQEAgc3RhdGlj
IGJvb2wgYmxvY2tTaWduYXR1cmVDb250YWluc0NsYXNzKAogICAgIHJldHVybiBjb250YWluc0Ns
YXNzOwogfQogCitzdGF0aWMgdm9pZCogdGhyZWFkTWFpbih2b2lkKiBjb250ZXh0UHRyKQorewor
ICAgIEpTQ29udGV4dCAqY29udGV4dCA9IChfX2JyaWRnZSBKU0NvbnRleHQqKWNvbnRleHRQdHI7
CisKKyAgICAvLyBEbyBzb21ldGhpbmcgdG8gZW50ZXIgdGhlIFZNLgorICAgIFRlc3RPYmplY3Qg
KnRlc3RPYmplY3QgPSBbVGVzdE9iamVjdCB0ZXN0T2JqZWN0XTsKKyAgICBjb250ZXh0W0AidGVz
dE9iamVjdCJdID0gdGVzdE9iamVjdDsKKyAgICBwdGhyZWFkX2V4aXQobnVsbHB0cik7Cit9CisK
IHZvaWQgdGVzdE9iamVjdGl2ZUNBUEkoKQogewogICAgIE5TTG9nKEAiVGVzdGluZyBPYmplY3Rp
dmUtQyBBUEkiKTsKQEAgLTEzNTksNiArMTM3MSwxNyBAQCB2b2lkIHRlc3RPYmplY3RpdmVDQVBJ
KCkKICAgICAgICAgY2hlY2tSZXN1bHQoQCJFZGVuQ29sbGVjdGlvbiBkb2Vzbid0IHJlY2xhaW0g
bmV3IG1hbmFnZWQgdmFsdWVzIiwgW21hbmFnZWRKU09iamVjdCB2YWx1ZV0gIT0gbmlsKTsKICAg
ICB9CiAKKyAgICBAYXV0b3JlbGVhc2Vwb29sIHsKKyAgICAgICAgSlNDb250ZXh0ICpjb250ZXh0
ID0gW1tKU0NvbnRleHQgYWxsb2NdIGluaXRdOworICAgICAgICAKKyAgICAgICAgcHRocmVhZF90
IHRocmVhZElEOworICAgICAgICBwdGhyZWFkX2NyZWF0ZSgmdGhyZWFkSUQsIE5VTEwsICZ0aHJl
YWRNYWluLCAoX19icmlkZ2Ugdm9pZCopY29udGV4dCk7CisgICAgICAgIHB0aHJlYWRfam9pbih0
aHJlYWRJRCwgbnVsbHB0cik7CisgICAgICAgIEpTU3luY2hyb25vdXNHYXJiYWdlQ29sbGVjdEZv
ckRlYnVnZ2luZyhbY29udGV4dCBKU0dsb2JhbENvbnRleHRSZWZdKTsKKworICAgICAgICBjaGVj
a1Jlc3VsdChAIkRpZCBub3QgY3Jhc2ggYWZ0ZXIgZW50ZXJpbmcgdGhlIFZNIGZyb20gYW5vdGhl
ciB0aHJlYWQiLCB0cnVlKTsKKyAgICB9CisgICAgCiAgICAgY3VycmVudFRoaXNJbnNpZGVCbG9j
a0dldHRlclRlc3QoKTsKICAgICBydW5EYXRlVGVzdHMoKTsKICAgICBydW5KU0V4cG9ydFRlc3Rz
KCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYWNoaW5lU3RhY2tNYXJrZXIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hY2hpbmVTdGFj
a01hcmtlci5jcHAJKHJldmlzaW9uIDE3OTUwMikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL01hY2hpbmVTdGFja01hcmtlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5MCwxMyArMTkw
LDEwIEBAIHZvaWQgTWFjaGluZVRocmVhZHM6OnJlbW92ZVRocmVhZCh2b2lkKiAKICAgICAgICAg
c3RhdGljX2Nhc3Q8TWFjaGluZVRocmVhZHMqPihwKS0+cmVtb3ZlQ3VycmVudFRocmVhZCgpOwog
fQogCi12b2lkIE1hY2hpbmVUaHJlYWRzOjpyZW1vdmVDdXJyZW50VGhyZWFkKCkKK3RlbXBsYXRl
PHR5cGVuYW1lIFBsYXRmb3JtVGhyZWFkPgordm9pZCBNYWNoaW5lVGhyZWFkczo6cmVtb3ZlVGhy
ZWFkV2l0aExvY2tBbHJlYWR5QWNxdWlyZWQoUGxhdGZvcm1UaHJlYWQgcGxhdGZvcm1UaHJlYWQp
CiB7Ci0gICAgUGxhdGZvcm1UaHJlYWQgY3VycmVudFBsYXRmb3JtVGhyZWFkID0gZ2V0Q3VycmVu
dFBsYXRmb3JtVGhyZWFkKCk7Ci0KLSAgICBNdXRleExvY2tlciBsb2NrKG1fcmVnaXN0ZXJlZFRo
cmVhZHNNdXRleCk7Ci0KLSAgICBpZiAoZXF1YWxUaHJlYWQoY3VycmVudFBsYXRmb3JtVGhyZWFk
LCBtX3JlZ2lzdGVyZWRUaHJlYWRzLT5wbGF0Zm9ybVRocmVhZCkpIHsKKyAgICBpZiAoZXF1YWxU
aHJlYWQocGxhdGZvcm1UaHJlYWQsIG1fcmVnaXN0ZXJlZFRocmVhZHMtPnBsYXRmb3JtVGhyZWFk
KSkgewogICAgICAgICBUaHJlYWQqIHQgPSBtX3JlZ2lzdGVyZWRUaHJlYWRzOwogICAgICAgICBt
X3JlZ2lzdGVyZWRUaHJlYWRzID0gbV9yZWdpc3RlcmVkVGhyZWFkcy0+bmV4dDsKICAgICAgICAg
ZGVsZXRlIHQ7CkBAIC0yMDQsNyArMjAxLDcgQEAgdm9pZCBNYWNoaW5lVGhyZWFkczo6cmVtb3Zl
Q3VycmVudFRocmVhZAogICAgICAgICBUaHJlYWQqIGxhc3QgPSBtX3JlZ2lzdGVyZWRUaHJlYWRz
OwogICAgICAgICBUaHJlYWQqIHQ7CiAgICAgICAgIGZvciAodCA9IG1fcmVnaXN0ZXJlZFRocmVh
ZHMtPm5leHQ7IHQ7IHQgPSB0LT5uZXh0KSB7Ci0gICAgICAgICAgICBpZiAoZXF1YWxUaHJlYWQo
dC0+cGxhdGZvcm1UaHJlYWQsIGN1cnJlbnRQbGF0Zm9ybVRocmVhZCkpIHsKKyAgICAgICAgICAg
IGlmIChlcXVhbFRocmVhZCh0LT5wbGF0Zm9ybVRocmVhZCwgcGxhdGZvcm1UaHJlYWQpKSB7CiAg
ICAgICAgICAgICAgICAgbGFzdC0+bmV4dCA9IHQtPm5leHQ7CiAgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICB9CkBAIC0yMTQsNyArMjExLDE1IEBAIHZvaWQgTWFjaGluZVRocmVh
ZHM6OnJlbW92ZUN1cnJlbnRUaHJlYWQKICAgICAgICAgZGVsZXRlIHQ7CiAgICAgfQogfQorICAg
IAordm9pZCBNYWNoaW5lVGhyZWFkczo6cmVtb3ZlQ3VycmVudFRocmVhZCgpCit7CisgICAgUGxh
dGZvcm1UaHJlYWQgY3VycmVudFBsYXRmb3JtVGhyZWFkID0gZ2V0Q3VycmVudFBsYXRmb3JtVGhy
ZWFkKCk7CiAKKyAgICBNdXRleExvY2tlciBsb2NrKG1fcmVnaXN0ZXJlZFRocmVhZHNNdXRleCk7
CisgICAgcmVtb3ZlVGhyZWFkV2l0aExvY2tBbHJlYWR5QWNxdWlyZWQoY3VycmVudFBsYXRmb3Jt
VGhyZWFkKTsKK30KKyAgICAKIHZvaWQgTWFjaGluZVRocmVhZHM6OmdhdGhlckZyb21DdXJyZW50
VGhyZWFkKENvbnNlcnZhdGl2ZVJvb3RzJiBjb25zZXJ2YXRpdmVSb290cywgSklUU3R1YlJvdXRp
bmVTZXQmIGppdFN0dWJSb3V0aW5lcywgQ29kZUJsb2NrU2V0JiBjb2RlQmxvY2tzLCB2b2lkKiBz
dGFja0N1cnJlbnQsIFJlZ2lzdGVyU3RhdGUmIHJlZ2lzdGVycykKIHsKICAgICB2b2lkKiByZWdp
c3RlcnNCZWdpbiA9ICZyZWdpc3RlcnM7CkBAIC0yMjYsMTQgKzIzMSwxOCBAQCB2b2lkIE1hY2hp
bmVUaHJlYWRzOjpnYXRoZXJGcm9tQ3VycmVudFRoCiAgICAgY29uc2VydmF0aXZlUm9vdHMuYWRk
KHN0YWNrQmVnaW4sIHN0YWNrRW5kLCBqaXRTdHViUm91dGluZXMsIGNvZGVCbG9ja3MpOwogfQog
Ci1zdGF0aWMgaW5saW5lIHZvaWQgc3VzcGVuZFRocmVhZChjb25zdCBQbGF0Zm9ybVRocmVhZCYg
cGxhdGZvcm1UaHJlYWQpCitzdGF0aWMgaW5saW5lIGJvb2wgc3VzcGVuZFRocmVhZChjb25zdCBQ
bGF0Zm9ybVRocmVhZCYgcGxhdGZvcm1UaHJlYWQpCiB7CiAjaWYgT1MoREFSV0lOKQotICAgIHRo
cmVhZF9zdXNwZW5kKHBsYXRmb3JtVGhyZWFkKTsKKyAgICBrZXJuX3JldHVybl90IHJlc3VsdCA9
IHRocmVhZF9zdXNwZW5kKHBsYXRmb3JtVGhyZWFkKTsKKyAgICByZXR1cm4gcmVzdWx0ID09IEtF
Uk5fU1VDQ0VTUzsKICNlbGlmIE9TKFdJTkRPV1MpCi0gICAgU3VzcGVuZFRocmVhZChwbGF0Zm9y
bVRocmVhZCk7CisgICAgYm9vbCB0aHJlYWRJc1N1c3BlbmRlZCA9IChTdXNwZW5kVGhyZWFkKHBs
YXRmb3JtVGhyZWFkKSAhPSAoRFdPUkQpLTEpOworICAgIEFTU0VSVCh0aHJlYWRJc1N1c3BlbmRl
ZCk7CisgICAgcmV0dXJuIHRocmVhZElzU3VzcGVuZGVkOwogI2VsaWYgVVNFKFBUSFJFQURTKQog
ICAgIHB0aHJlYWRfa2lsbChwbGF0Zm9ybVRocmVhZCwgU2lnVGhyZWFkU3VzcGVuZFJlc3VtZSk7
CisgICAgcmV0dXJuIHRydWU7CiAjZWxzZQogI2Vycm9yIE5lZWQgYSB3YXkgdG8gc3VzcGVuZCB0
aHJlYWRzIG9uIHRoaXMgcGxhdGZvcm0KICNlbmRpZgpAQCAtNDUyLDkgKzQ2MSwzOCBAQCBib29s
IE1hY2hpbmVUaHJlYWRzOjp0cnlDb3B5T3RoZXJUaHJlYWRTCiAgICAgKnNpemUgPSAwOwogCiAg
ICAgUGxhdGZvcm1UaHJlYWQgY3VycmVudFBsYXRmb3JtVGhyZWFkID0gZ2V0Q3VycmVudFBsYXRm
b3JtVGhyZWFkKCk7Ci0gICAgZm9yIChUaHJlYWQqIHRocmVhZCA9IG1fcmVnaXN0ZXJlZFRocmVh
ZHM7IHRocmVhZDsgdGhyZWFkID0gdGhyZWFkLT5uZXh0KSB7Ci0gICAgICAgIGlmICghZXF1YWxU
aHJlYWQodGhyZWFkLT5wbGF0Zm9ybVRocmVhZCwgY3VycmVudFBsYXRmb3JtVGhyZWFkKSkKLSAg
ICAgICAgICAgIHN1c3BlbmRUaHJlYWQodGhyZWFkLT5wbGF0Zm9ybVRocmVhZCk7CisgICAgaW50
IG51bWJlck9mVGhyZWFkcyA9IDA7IC8vIFVzaW5nIDAgdG8gZGVub3RlIHRoYXQgd2UgaGF2ZW4n
dCBjb3VudGVkIHRoZSBudW1iZXIgb2YgdGhyZWFkcyB5ZXQuCisgICAgaW50IGluZGV4ID0gMTsK
KworICAgIGZvciAoVGhyZWFkKiB0aHJlYWQgPSBtX3JlZ2lzdGVyZWRUaHJlYWRzOyB0aHJlYWQ7
IGluZGV4KyspIHsKKyAgICAgICAgaWYgKCFlcXVhbFRocmVhZCh0aHJlYWQtPnBsYXRmb3JtVGhy
ZWFkLCBjdXJyZW50UGxhdGZvcm1UaHJlYWQpKSB7CisgICAgICAgICAgICBib29sIHN1Y2Nlc3Mg
PSBzdXNwZW5kVGhyZWFkKHRocmVhZC0+cGxhdGZvcm1UaHJlYWQpOworI2lmIE9TKERBUldJTikK
KyAgICAgICAgICAgIGlmICghc3VjY2VzcykgeworICAgICAgICAgICAgICAgIGlmICghbnVtYmVy
T2ZUaHJlYWRzKSB7CisgICAgICAgICAgICAgICAgICAgIGZvciAoVGhyZWFkKiBjb3VudGVkVGhy
ZWFkID0gbV9yZWdpc3RlcmVkVGhyZWFkczsgY291bnRlZFRocmVhZDsgY291bnRlZFRocmVhZCA9
IGNvdW50ZWRUaHJlYWQtPm5leHQpCisgICAgICAgICAgICAgICAgICAgICAgICBudW1iZXJPZlRo
cmVhZHMrKzsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgCisgICAgICAgICAg
ICAgICAgLy8gUmUtZG8gdGhlIHN1c3BlbnNpb24gdG8gZ2V0IHRoZSBhY3R1YWwgZmFpbHVyZSBy
ZXN1bHQgZm9yIGxvZ2dpbmcuCisgICAgICAgICAgICAgICAga2Vybl9yZXR1cm5fdCBlcnJvciA9
IHRocmVhZF9zdXNwZW5kKHRocmVhZC0+cGxhdGZvcm1UaHJlYWQpOworICAgICAgICAgICAgICAg
IEFTU0VSVChlcnJvciAhPSBLRVJOX1NVQ0NFU1MpOworCisgICAgICAgICAgICAgICAgV1RGUmVw
b3J0RXJyb3IoX19GSUxFX18sIF9fTElORV9fLCBXVEZfUFJFVFRZX0ZVTkNUSU9OLAorICAgICAg
ICAgICAgICAgICAgICAiSmF2YVNjcmlwdCBnYXJiYWdlIGNvbGxlY3Rpb24gZW5jb3VudGVyZWQg
YW4gaW52YWxpZCB0aHJlYWQgKGVyciAweCV4KTogVGhyZWFkIFslZC8lZDogJXBdIHBsYXRmb3Jt
VGhyZWFkICVwLiIsCisgICAgICAgICAgICAgICAgICAgIGVycm9yLCBpbmRleCwgbnVtYmVyT2ZU
aHJlYWRzLCB0aHJlYWQsIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHRocmVhZC0+cGxhdGZvcm1U
aHJlYWQpKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBUaHJlYWQqIG5leHRU
aHJlYWQgPSB0aHJlYWQtPm5leHQ7CisgICAgICAgICAgICAgICAgcmVtb3ZlVGhyZWFkV2l0aExv
Y2tBbHJlYWR5QWNxdWlyZWQodGhyZWFkLT5wbGF0Zm9ybVRocmVhZCk7CisgICAgICAgICAgICAg
ICAgdGhyZWFkID0gbmV4dFRocmVhZDsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAg
ICAgICAgIH0KKyNlbHNlCisgICAgICAgICAgICBVTlVTRURfUEFSQU0obnVtYmVyT2ZUaHJlYWRz
KTsKKyAgICAgICAgICAgIEFTU0VSVF9VTlVTRUQoc3VjY2Vzcywgc3VjY2Vzcyk7CisjZW5kaWYK
KyAgICAgICAgfQorICAgICAgICB0aHJlYWQgPSB0aHJlYWQtPm5leHQ7CiAgICAgfQogCiAgICAg
Zm9yIChUaHJlYWQqIHRocmVhZCA9IG1fcmVnaXN0ZXJlZFRocmVhZHM7IHRocmVhZDsgdGhyZWFk
ID0gdGhyZWFkLT5uZXh0KSB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYWNo
aW5lU3RhY2tNYXJrZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9NYWNoaW5lU3RhY2tNYXJrZXIuaAkocmV2aXNpb24gMTc5NTAyKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvTWFjaGluZVN0YWNrTWFya2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTU4
LDYgKzU4LDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHN0YXRpYyB2b2lkIHJlbW92ZVRo
cmVhZCh2b2lkKik7CiAgICAgICAgIHZvaWQgcmVtb3ZlQ3VycmVudFRocmVhZCgpOwogCisgICAg
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFBsYXRmb3JtVGhyZWFkPgorICAgICAgICB2b2lkIHJlbW92
ZVRocmVhZFdpdGhMb2NrQWxyZWFkeUFjcXVpcmVkKFBsYXRmb3JtVGhyZWFkKTsKKwogICAgICAg
ICBNdXRleCBtX3JlZ2lzdGVyZWRUaHJlYWRzTXV0ZXg7CiAgICAgICAgIFRocmVhZCogbV9yZWdp
c3RlcmVkVGhyZWFkczsKICAgICAgICAgV1RGOjpUaHJlYWRTcGVjaWZpY0tleSBtX3RocmVhZFNw
ZWNpZmljOwo=
</data>
<flag name="review"
          id="270912"
          type_id="1"
          status="+"
          setter="msaboff"
    />
          </attachment>
      

    </bug>

</bugzilla>