<?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>22308</bug_id>
          
          <creation_ts>2008-11-17 06:18:07 -0800</creation_ts>
          <short_desc>Improve Worker GC behavior</short_desc>
          <delta_ts>2008-11-18 00:45:30 -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>WebCore JavaScript</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.5</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="Alexey Proskuryakov">ap</reporter>
          <assigned_to name="Alexey Proskuryakov">ap</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>99020</commentid>
    <comment_count>0</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2008-11-17 06:18:07 -0800</bug_when>
    <thetext>Here is what Firefox beta does, and what I suggest that we do as well.

Worker object is GC protected if:
- there is JS executing in its thread,
- there are pending messages in any direction, or
- there is an active object in worker thread, such as a timer, async XHR etc.

A particular feature of this approach is that workers that have made a setInterval() call, or just run a tight loop, will not be collected until their owner is destroyed, even if there is no way left for them to communicate in either direction. This can be seen as a problem leading to likely resource leakage, or as a feature.

There will also be a terminate() call to manually shut down a worker, which Firefox doesn&apos;t currently provide.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>99021</commentid>
    <comment_count>1</comment_count>
      <attachid>25211</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2008-11-17 06:27:48 -0800</bug_when>
    <thetext>Created attachment 25211
proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>99058</commentid>
    <comment_count>2</comment_count>
      <attachid>25211</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-11-17 09:23:49 -0800</bug_when>
    <thetext>Comment on attachment 25211
proposed patch

&gt; +        Made hasPendingActivity() virtul, letting Worker add behavior to it.

Misspelled virtual here.

&gt; +    m_workerContext-&gt;thread()-&gt;messagingProxy()-&gt;reportWorkerThreadActivity(false, m_workerContext-&gt;hasPendingActivity());

The use of booleans makes this a little hard to read. It&apos;s not obvious what that false means. We can use enums to construct named booleans which help make call sites like this easier to read.

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>99141</commentid>
    <comment_count>3</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2008-11-18 00:45:30 -0800</bug_when>
    <thetext>Committed revision 38549.

(In reply to comment #2)
&gt; &gt; +    m_workerContext-&gt;thread()-&gt;messagingProxy()-&gt;reportWorkerThreadActivity(false, m_workerContext-&gt;hasPendingActivity());
&gt; 
&gt; The use of booleans makes this a little hard to read. It&apos;s not obvious what
&gt; that false means. We can use enums to construct named booleans which help make
&gt; call sites like this easier to read.

I&apos;ve split this into two functions, reportWorkerThreadActivity and confirmWorkerThreadMessage.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>25211</attachid>
            <date>2008-11-17 06:27:48 -0800</date>
            <delta_ts>2008-11-17 09:23:49 -0800</delta_ts>
            <desc>proposed patch</desc>
            <filename>WorkerGC.txt</filename>
            <type>text/plain</type>
            <size>14104</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAzODQ5MikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNDUgQEAKKzIwMDgtMTEtMTcgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEB3ZWJr
aXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjMwOAorICAgICAgICBJ
bXByb3ZlIFdvcmtlciBHQyBiZWhhdmlvcgorCisgICAgICAgICogZG9tL0FjdGl2ZURPTU9iamVj
dC5jcHA6IChXZWJDb3JlOjpBY3RpdmVET01PYmplY3Q6Omhhc1BlbmRpbmdBY3Rpdml0eSk6Cisg
ICAgICAgICogZG9tL0FjdGl2ZURPTU9iamVjdC5oOgorICAgICAgICBNYWRlIGhhc1BlbmRpbmdB
Y3Rpdml0eSgpIHZpcnR1bCwgbGV0dGluZyBXb3JrZXIgYWRkIGJlaGF2aW9yIHRvIGl0LgorCisg
ICAgICAgICogYmluZGluZ3MvanMvV29ya2VyU2NyaXB0Q29udHJvbGxlci5jcHA6IChXZWJDb3Jl
OjpXb3JrZXJTY3JpcHRDb250cm9sbGVyOjpldmFsdWF0ZSk6CisgICAgICAgICogZG9tL1dvcmtl
clRocmVhZC5jcHA6IChXZWJDb3JlOjpXb3JrZXJUaHJlYWQ6OndvcmtlclRocmVhZCk6CisgICAg
ICAgIFRlbGwgbWVzc2FnZSBwcm94eSB3aGV0aGVyIHRoZXJlIGFyZSBhY3RpdmUgb2JqZWN0cyBp
biB0aGUgd29ya2VyIHdoZW5ldmVyIEpTIGV4ZWN1dGlvbgorICAgICAgICBmaW5pc2hlcy4KKwor
ICAgICAgICAqIGRvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0Lmg6IChXZWJDb3JlOjpTY3JpcHRF
eGVjdXRpb25Db250ZXh0OjphY3RpdmVET01PYmplY3RzKToKKyAgICAgICAgQWRkZWQgYSB0eXBl
ZGVmIGZvciBhY3RpdmVET01PYmplY3RzKCkgcmV0dXJuIHR5cGUsIG5lY2Vzc2FyeSB0byBkZWNs
YXJlIGl0ZXJhdG9ycy4KKworICAgICAgICAqIGRvbS9Xb3JrZXIuaDoKKyAgICAgICAgKiBkb20v
V29ya2VyLmNwcDogKFdlYkNvcmU6Oldvcmtlcjo6aGFzUGVuZGluZ0FjdGl2aXR5KTogQSBXb3Jr
ZXIgaXMgYWN0aXZlIGlmIGl0IGlzIHN0aWxsCisgICAgICAgIGxvYWRpbmcsIG9yIGlmIGl0IGhh
cyB1bmNvbmZpcm1lZCBtZXNzYWdlcywgb3IgaXQgdGhlIHdvcmtlciB0aHJlYWQgaGFzIHBlbmRp
bmcgYWN0aXZpdHkuCisKKyAgICAgICAgKiBkb20vV29ya2VyQ29udGV4dC5oOgorICAgICAgICAq
IGRvbS9Xb3JrZXJDb250ZXh0LmNwcDogKFdlYkNvcmU6OldvcmtlckNvbnRleHQ6Omhhc1BlbmRp
bmdBY3Rpdml0eSk6IENoZWNrIGFsbCByZWdpc3RlcmVkCisgICAgICAgIGFjdGl2ZSBvYmplY3Rz
IGZvciBwZW5kaW5nIGFjdGl2aXR5LgorCisgICAgICAgICogZG9tL1dvcmtlck1lc3NhZ2luZ1By
b3h5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lc3NhZ2VXb3JrZXJDb250ZXh0VGFzazo6cGVy
Zm9ybVRhc2spOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkQWN0aXZpdHlSZXBvcnRU
YXNrOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkQWN0aXZpdHlSZXBv
cnRUYXNrOjpXb3JrZXJUaHJlYWRBY3Rpdml0eVJlcG9ydFRhc2spOgorICAgICAgICAoV2ViQ29y
ZTo6V29ya2VyVGhyZWFkQWN0aXZpdHlSZXBvcnRUYXNrOjpwZXJmb3JtVGFzayk6CisgICAgICAg
IChXZWJDb3JlOjpXb3JrZXJNZXNzYWdpbmdQcm94eTo6V29ya2VyTWVzc2FnaW5nUHJveHkpOgor
ICAgICAgICAoV2ViQ29yZTo6V29ya2VyTWVzc2FnaW5nUHJveHk6OnBvc3RNZXNzYWdlVG9Xb3Jr
ZXJDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlck1lc3NhZ2luZ1Byb3h5Ojp3b3Jr
ZXJPYmplY3REZXN0cm95ZWQpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyTWVzc2FnaW5nUHJv
eHk6OndvcmtlckNvbnRleHREZXN0cm95ZWRJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpX
b3JrZXJNZXNzYWdpbmdQcm94eTo6cmVwb3J0V29ya2VyVGhyZWFkQWN0aXZpdHkpOgorICAgICAg
ICAoV2ViQ29yZTo6V29ya2VyTWVzc2FnaW5nUHJveHk6OnJlcG9ydFdvcmtlclRocmVhZEFjdGl2
aXR5SW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyTWVzc2FnaW5nUHJveHk6Ondv
cmtlclRocmVhZEhhc1BlbmRpbmdBY3Rpdml0eSk6CisgICAgICAgICogZG9tL1dvcmtlck1lc3Nh
Z2luZ1Byb3h5Lmg6CisgICAgICAgIFRyYWNrIG91dHN0YW5kaW5nIG1lc3NhZ2VzLCBhbmQgYWN0
aXZpdHkgcmVwb3J0ZWQgYnkgd29ya2VyIHRocmVhZC4KKwogMjAwOC0xMS0xNiAgU2ltb24gRnJh
c2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYW4g
QmVybnN0ZWluCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xs
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvanMvV29ya2VyU2NyaXB0Q29u
dHJvbGxlci5jcHAJKHJldmlzaW9uIDM4NDkwKQorKysgV2ViQ29yZS9iaW5kaW5ncy9qcy9Xb3Jr
ZXJTY3JpcHRDb250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIsNiArMzIsOCBAQAog
CiAjaW5jbHVkZSAiSlNXb3JrZXJDb250ZXh0LmgiCiAjaW5jbHVkZSAiV29ya2VyQ29udGV4dC5o
IgorI2luY2x1ZGUgIldvcmtlck1lc3NhZ2luZ1Byb3h5LmgiCisjaW5jbHVkZSAiV29ya2VyVGhy
ZWFkLmgiCiAjaW5jbHVkZSA8cGFyc2VyL1NvdXJjZUNvZGUuaD4KICNpbmNsdWRlIDxydW50aW1l
L0NvbXBsZXRpb24uaD4KICNpbmNsdWRlIDxydW50aW1lL0ludGVycHJldGVyLmg+CkBAIC03NSw2
ICs3Nyw4IEBAIEpTVmFsdWUqIFdvcmtlclNjcmlwdENvbnRyb2xsZXI6OmV2YWx1YXQKICAgICBD
b21wbGV0aW9uIGNvbXAgPSBKU0M6OmV2YWx1YXRlKGV4ZWMsIGV4ZWMtPmR5bmFtaWNHbG9iYWxP
YmplY3QoKS0+Z2xvYmFsU2NvcGVDaGFpbigpLCBtYWtlU291cmNlKGNvZGUsIHNvdXJjZVVSTCwg
YmFzZUxpbmUpLCBtX3dvcmtlckNvbnRleHRXcmFwcGVyKTsKICAgICBtX3dvcmtlckNvbnRleHRX
cmFwcGVyLT5zdG9wVGltZW91dENoZWNrKCk7CiAKKyAgICBtX3dvcmtlckNvbnRleHQtPnRocmVh
ZCgpLT5tZXNzYWdpbmdQcm94eSgpLT5yZXBvcnRXb3JrZXJUaHJlYWRBY3Rpdml0eShmYWxzZSwg
bV93b3JrZXJDb250ZXh0LT5oYXNQZW5kaW5nQWN0aXZpdHkoKSk7CisKICAgICBpZiAoY29tcC5j
b21wbFR5cGUoKSA9PSBOb3JtYWwgfHwgY29tcC5jb21wbFR5cGUoKSA9PSBSZXR1cm5WYWx1ZSkK
ICAgICAgICAgcmV0dXJuIGNvbXAudmFsdWUoKTsKIApJbmRleDogV2ViQ29yZS9kb20vQWN0aXZl
RE9NT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9BY3RpdmVET01PYmplY3Qu
Y3BwCShyZXZpc2lvbiAzODQ5MCkKKysrIFdlYkNvcmUvZG9tL0FjdGl2ZURPTU9iamVjdC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTU3LDYgKzU3LDExIEBAIEFjdGl2ZURPTU9iamVjdDo6fkFjdGl2
ZURPTU9iamVjdCgpCiAgICAgfQogfQogCitib29sIEFjdGl2ZURPTU9iamVjdDo6aGFzUGVuZGlu
Z0FjdGl2aXR5KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9wZW5kaW5nQWN0aXZpdHlDb3VudDsK
K30KKwogdm9pZCBBY3RpdmVET01PYmplY3Q6OmNvbnRleHREZXN0cm95ZWQoKQogewogICAgIG1f
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCA9IDA7CkluZGV4OiBXZWJDb3JlL2RvbS9BY3RpdmVET01P
YmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9BY3RpdmVET01PYmplY3QuaAkocmV2
aXNpb24gMzg0OTApCisrKyBXZWJDb3JlL2RvbS9BY3RpdmVET01PYmplY3QuaAkod29ya2luZyBj
b3B5KQpAQCAtMzgsNyArMzgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIEFjdGl2
ZURPTU9iamVjdChTY3JpcHRFeGVjdXRpb25Db250ZXh0Kiwgdm9pZCogdXBjYXN0UG9pbnRlcik7
CiAKICAgICAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpIGNvbnN0IHsgcmV0dXJuIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dDsgfQotICAgICAgICBi
b29sIGhhc1BlbmRpbmdBY3Rpdml0eSgpIHsgcmV0dXJuIG1fcGVuZGluZ0FjdGl2aXR5Q291bnQ7
IH0KKyAgICAgICAgdmlydHVhbCBib29sIGhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0OwogCiAg
ICAgICAgIHZpcnR1YWwgdm9pZCBjb250ZXh0RGVzdHJveWVkKCk7CiAgICAgICAgIHZpcnR1YWwg
dm9pZCBzdG9wKCk7CkluZGV4OiBXZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oCShyZXZp
c2lvbiAzODQ5MCkKKysrIFdlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaAkod29y
a2luZyBjb3B5KQpAQCAtNTQsNyArNTQsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAg
IHZvaWQgc3RvcEFjdGl2ZURPTU9iamVjdHMoKTsKICAgICAgICAgdm9pZCBjcmVhdGVkQWN0aXZl
RE9NT2JqZWN0KEFjdGl2ZURPTU9iamVjdCosIHZvaWQqIHVwY2FzdFBvaW50ZXIpOwogICAgICAg
ICB2b2lkIGRlc3Ryb3llZEFjdGl2ZURPTU9iamVjdChBY3RpdmVET01PYmplY3QqKTsKLSAgICAg
ICAgY29uc3QgSGFzaE1hcDxBY3RpdmVET01PYmplY3QqLCB2b2lkKj4mIGFjdGl2ZURPTU9iamVj
dHMoKSBjb25zdCB7IHJldHVybiBtX2FjdGl2ZURPTU9iamVjdHM7IH0KKyAgICAgICAgdHlwZWRl
ZiBjb25zdCBIYXNoTWFwPEFjdGl2ZURPTU9iamVjdCosIHZvaWQqPiBBY3RpdmVET01PYmplY3Rz
TWFwOworICAgICAgICBBY3RpdmVET01PYmplY3RzTWFwJiBhY3RpdmVET01PYmplY3RzKCkgY29u
c3QgeyByZXR1cm4gbV9hY3RpdmVET01PYmplY3RzOyB9CiAKICAgICAgICAgLy8gTWVzc2FnZVBv
cnQgaXMgY29uY2VwdHVhbGx5IGEga2luZCBvZiBBY3RpdmVET01PYmplY3QsIGJ1dCBpdCBuZWVk
cyB0byBiZSB0cmFja2VkIHNlcGFyYXRlbHkgZm9yIG1lc3NhZ2UgZGlzcGF0Y2guCiAgICAgICAg
IHZvaWQgcHJvY2Vzc01lc3NhZ2VQb3J0TWVzc2FnZXNTb29uKCk7CkluZGV4OiBXZWJDb3JlL2Rv
bS9Xb3JrZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL1dvcmtlci5jcHAJKHJldmlz
aW9uIDM4NDkwKQorKysgV2ViQ29yZS9kb20vV29ya2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
OTIsNiArOTIsMTEgQEAgdm9pZCBXb3JrZXI6OnBvc3RNZXNzYWdlKGNvbnN0IFN0cmluZyYgbQog
ICAgIG1fbWVzc2FnaW5nUHJveHktPnBvc3RNZXNzYWdlVG9Xb3JrZXJDb250ZXh0KG1lc3NhZ2Up
OwogfQogCitib29sIFdvcmtlcjo6aGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gbV9tZXNzYWdpbmdQcm94eS0+d29ya2VyVGhyZWFkSGFzUGVuZGluZ0FjdGl2aXR5KCkg
fHwgQWN0aXZlRE9NT2JqZWN0OjpoYXNQZW5kaW5nQWN0aXZpdHkoKTsKK30KKwogdm9pZCBXb3Jr
ZXI6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlKiByZXNvdXJjZSkKIHsKICAgICBBU1NF
UlQocmVzb3VyY2UgPT0gbV9jYWNoZWRTY3JpcHQuZ2V0KCkpOwpJbmRleDogV2ViQ29yZS9kb20v
V29ya2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vV29ya2VyLmgJKHJldmlzaW9uIDM4
NDkwKQorKysgV2ViQ29yZS9kb20vV29ya2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTYzLDYgKzYz
LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIHZvaWQgcG9zdE1lc3NhZ2UoY29u
c3QgU3RyaW5nJiBtZXNzYWdlKTsKIAorICAgICAgICB2aXJ0dWFsIGJvb2wgaGFzUGVuZGluZ0Fj
dGl2aXR5KCkgY29uc3Q7CisKICAgICAgICAgdmlydHVhbCB2b2lkIGFkZEV2ZW50TGlzdGVuZXIo
Y29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4s
IGJvb2wgdXNlQ2FwdHVyZSk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCByZW1vdmVFdmVudExpc3Rl
bmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBFdmVudExpc3RlbmVyKiwgYm9vbCB1
c2VDYXB0dXJlKTsKICAgICAgICAgdmlydHVhbCBib29sIGRpc3BhdGNoRXZlbnQoUGFzc1JlZlB0
cjxFdmVudD4sIEV4Y2VwdGlvbkNvZGUmKTsKSW5kZXg6IFdlYkNvcmUvZG9tL1dvcmtlckNvbnRl
eHQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL1dvcmtlckNvbnRleHQuY3BwCShyZXZp
c2lvbiAzODQ5MCkKKysrIFdlYkNvcmUvZG9tL1dvcmtlckNvbnRleHQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zMCw2ICszMCw3IEBACiAKICNpbmNsdWRlICJXb3JrZXJDb250ZXh0LmgiCiAKKyNp
bmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIKICNpbmNsdWRlICJET01XaW5kb3cuaCIKICNpbmNs
dWRlICJFdmVudC5oIgogI2luY2x1ZGUgIkV2ZW50RXhjZXB0aW9uLmgiCkBAIC03Nyw2ICs3OCwx
NyBAQCBLVVJMIFdvcmtlckNvbnRleHQ6OmNvbXBsZXRlVVJMKGNvbnN0IFN0CiAgICAgcmV0dXJu
IEtVUkwobV9sb2NhdGlvbi0+dXJsKCksIHVybCk7CiB9CiAKK2Jvb2wgV29ya2VyQ29udGV4dDo6
aGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3QKK3sKKyAgICBBY3RpdmVET01PYmplY3RzTWFwJiBh
Y3RpdmVPYmplY3RzID0gYWN0aXZlRE9NT2JqZWN0cygpOworICAgIEFjdGl2ZURPTU9iamVjdHNN
YXA6OmNvbnN0X2l0ZXJhdG9yIGFjdGl2ZU9iamVjdHNFbmQgPSBhY3RpdmVPYmplY3RzLmVuZCgp
OworICAgIGZvciAoQWN0aXZlRE9NT2JqZWN0c01hcDo6Y29uc3RfaXRlcmF0b3IgaXRlciA9IGFj
dGl2ZU9iamVjdHMuYmVnaW4oKTsgaXRlciAhPSBhY3RpdmVPYmplY3RzRW5kOyArK2l0ZXIpIHsK
KyAgICAgICAgaWYgKGl0ZXItPmZpcnN0LT5oYXNQZW5kaW5nQWN0aXZpdHkoKSkKKyAgICAgICAg
ICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKIHZvaWQgV29y
a2VyQ29udGV4dDo6cG9zdE1lc3NhZ2UoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogewogICAgIG1f
dGhyZWFkLT5tZXNzYWdpbmdQcm94eSgpLT5wb3N0TWVzc2FnZVRvV29ya2VyT2JqZWN0KG1lc3Nh
Z2UpOwpJbmRleDogV2ViQ29yZS9kb20vV29ya2VyQ29udGV4dC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvZG9tL1dvcmtlckNvbnRleHQuaAkocmV2aXNpb24gMzg0OTApCisrKyBXZWJDb3JlL2Rv
bS9Xb3JrZXJDb250ZXh0LmgJKHdvcmtpbmcgY29weSkKQEAgLTY3LDYgKzY3LDggQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgICAgICBXb3JrZXJTY3JpcHRDb250cm9sbGVyKiBzY3JpcHQoKSB7
IHJldHVybiAmbV9zY3JpcHQ7IH0KICAgICAgICAgV29ya2VyVGhyZWFkKiB0aHJlYWQoKSB7IHJl
dHVybiBtX3RocmVhZDsgfQogCisgICAgICAgIGJvb2wgaGFzUGVuZGluZ0FjdGl2aXR5KCkgY29u
c3Q7CisKICAgICAgICAgdmlydHVhbCBXb3JrZXJDb250ZXh0KiB0b1dvcmtlckNvbnRleHQoKSB7
IHJldHVybiB0aGlzOyB9CiAKICAgICAgICAgdm9pZCBwb3N0TWVzc2FnZShjb25zdCBTdHJpbmcm
IG1lc3NhZ2UpOwpJbmRleDogV2ViQ29yZS9kb20vV29ya2VyTWVzc2FnaW5nUHJveHkuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmNwcAkocmV2aXNp
b24gMzg0OTApCisrKyBXZWJDb3JlL2RvbS9Xb3JrZXJNZXNzYWdpbmdQcm94eS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTY2LDYgKzY2LDggQEAgcHJpdmF0ZToKICAgICAgICAgRXhjZXB0aW9uQ29k
ZSBlYyA9IDA7CiAgICAgICAgIGNvbnRleHQtPmRpc3BhdGNoRXZlbnQoZXZ0LnJlbGVhc2UoKSwg
ZWMpOwogICAgICAgICBBU1NFUlQoIWVjKTsKKworICAgICAgICBjb250ZXh0LT50aHJlYWQoKS0+
bWVzc2FnaW5nUHJveHkoKS0+cmVwb3J0V29ya2VyVGhyZWFkQWN0aXZpdHkodHJ1ZSwgY29udGV4
dC0+aGFzUGVuZGluZ0FjdGl2aXR5KCkpOwogICAgIH0KIAogcHJpdmF0ZToKQEAgLTEzMiwxMCAr
MTM0LDM4IEBAIHByaXZhdGU6CiAgICAgV29ya2VyTWVzc2FnaW5nUHJveHkqIG1fbWVzc2FnaW5n
UHJveHk7CiB9OwogCitjbGFzcyBXb3JrZXJUaHJlYWRBY3Rpdml0eVJlcG9ydFRhc2sgOiBwdWJs
aWMgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayB7CitwdWJsaWM6CisgICAgc3RhdGljIFBh
c3NSZWZQdHI8V29ya2VyVGhyZWFkQWN0aXZpdHlSZXBvcnRUYXNrPiBjcmVhdGUoV29ya2VyTWVz
c2FnaW5nUHJveHkqIG1lc3NhZ2luZ1Byb3h5LCBib29sIGNvbmZpcm1pbmdNZXNzYWdlLCBib29s
IGhhc1BlbmRpbmdBY3Rpdml0eSkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcg
V29ya2VyVGhyZWFkQWN0aXZpdHlSZXBvcnRUYXNrKG1lc3NhZ2luZ1Byb3h5LCBjb25maXJtaW5n
TWVzc2FnZSwgaGFzUGVuZGluZ0FjdGl2aXR5KSk7CisgICAgfQorCitwcml2YXRlOgorICAgIFdv
cmtlclRocmVhZEFjdGl2aXR5UmVwb3J0VGFzayhXb3JrZXJNZXNzYWdpbmdQcm94eSogbWVzc2Fn
aW5nUHJveHksIGJvb2wgY29uZmlybWluZ01lc3NhZ2UsIGJvb2wgaGFzUGVuZGluZ0FjdGl2aXR5
KQorICAgICAgICA6IG1fbWVzc2FnaW5nUHJveHkobWVzc2FnaW5nUHJveHkpCisgICAgICAgICwg
bV9jb25maXJtaW5nTWVzc2FnZShjb25maXJtaW5nTWVzc2FnZSkKKyAgICAgICAgLCBtX2hhc1Bl
bmRpbmdBY3Rpdml0eShoYXNQZW5kaW5nQWN0aXZpdHkpCisgICAgeworICAgIH0KKworICAgIHZp
cnR1YWwgdm9pZCBwZXJmb3JtVGFzayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQor
ICAgIHsKKyAgICAgICAgbV9tZXNzYWdpbmdQcm94eS0+cmVwb3J0V29ya2VyVGhyZWFkQWN0aXZp
dHlJbnRlcm5hbChtX2NvbmZpcm1pbmdNZXNzYWdlLCBtX2hhc1BlbmRpbmdBY3Rpdml0eSk7Cisg
ICAgfQorCitwcml2YXRlOgorICAgIFdvcmtlck1lc3NhZ2luZ1Byb3h5KiBtX21lc3NhZ2luZ1By
b3h5OworICAgIGJvb2wgbV9jb25maXJtaW5nTWVzc2FnZTsKKyAgICBib29sIG1faGFzUGVuZGlu
Z0FjdGl2aXR5OworfTsKKwogCiBXb3JrZXJNZXNzYWdpbmdQcm94eTo6V29ya2VyTWVzc2FnaW5n
UHJveHkoUGFzc1JlZlB0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0PiBzY3JpcHRFeGVjdXRpb25D
b250ZXh0LCBXb3JrZXIqIHdvcmtlck9iamVjdCkKICAgICA6IG1fc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dChzY3JpcHRFeGVjdXRpb25Db250ZXh0KQogICAgICwgbV93b3JrZXJPYmplY3Qod29ya2Vy
T2JqZWN0KQorICAgICwgbV91bmNvbmZpcm1lZE1lc3NhZ2VDb3VudCgxKSAvLyBXb3JrZXIgaW5p
dGlhbGl6YXRpb24gY291bnRzIGFzIGEgcGVuZGluZyBtZXNzYWdlLgorICAgICwgbV93b3JrZXJU
aHJlYWRIYWRQZW5kaW5nQWN0aXZpdHkoZmFsc2UpCiB7CiAgICAgQVNTRVJUKG1fd29ya2VyT2Jq
ZWN0KTsKICAgICBBU1NFUlQoKG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+aXNEb2N1bWVudCgp
ICYmIGlzTWFpblRocmVhZCgpKQpAQCAtMTU2LDYgKzE4Niw3IEBAIHZvaWQgV29ya2VyTWVzc2Fn
aW5nUHJveHk6OnBvc3RNZXNzYWdlVG8KIAogdm9pZCBXb3JrZXJNZXNzYWdpbmdQcm94eTo6cG9z
dE1lc3NhZ2VUb1dvcmtlckNvbnRleHQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogeworICAgICsr
bV91bmNvbmZpcm1lZE1lc3NhZ2VDb3VudDsKICAgICBpZiAobV93b3JrZXJUaHJlYWQpCiAgICAg
ICAgIG1fd29ya2VyVGhyZWFkLT5tZXNzYWdlUXVldWUoKS5hcHBlbmQoTWVzc2FnZVdvcmtlckNv
bnRleHRUYXNrOjpjcmVhdGUobWVzc2FnZSkpOwogICAgIGVsc2UKQEAgLTE3Niw5ICsyMDcsOSBA
QCB2b2lkIFdvcmtlck1lc3NhZ2luZ1Byb3h5Ojp3b3JrZXJPYmplY3RECiB7CiAgICAgbV93b3Jr
ZXJPYmplY3QgPSAwOwogICAgIGlmIChtX3dvcmtlclRocmVhZCkKLSAgICAgICAgbV93b3JrZXJU
aHJlYWQtPm1lc3NhZ2VRdWV1ZSgpLmtpbGwoKTsKKyAgICAgICAgbV93b3JrZXJUaHJlYWQtPm1l
c3NhZ2VRdWV1ZSgpLmtpbGwoKTsgLy8gRklYTUU6ICgxKSBydWRlbHkga2lsbGluZyBhIHRocmVh
ZCB3b24ndCB3b3JrIHdoZW4gd2UgYWxsb3cgbmVzdGVkIHdvcmtlcnM7ICgyKSBuZWVkIHRvIGlu
dGVycnVwdCBjdXJyZW50bHkgcnVubmluZyBKUy4KICAgICBlbHNlCi0gICAgICAgIHdvcmtlckNv
bnRleHREZXN0cm95ZWRJbnRlcm5hbCgpOyAvLyBJdCBuZXZlciBleGlzdGVkLCBqdXN0IGRvIG91
dCBjbGVhbnVwLgorICAgICAgICB3b3JrZXJDb250ZXh0RGVzdHJveWVkSW50ZXJuYWwoKTsgLy8g
SXQgbmV2ZXIgZXhpc3RlZCwganVzdCBkbyBvdXIgY2xlYW51cC4KIH0KIAogdm9pZCBXb3JrZXJN
ZXNzYWdpbmdQcm94eTo6d29ya2VyQ29udGV4dERlc3Ryb3llZCgpCkBAIC0xODksOSArMjIwLDMx
IEBAIHZvaWQgV29ya2VyTWVzc2FnaW5nUHJveHk6OndvcmtlckNvbnRleHQKIAogdm9pZCBXb3Jr
ZXJNZXNzYWdpbmdQcm94eTo6d29ya2VyQ29udGV4dERlc3Ryb3llZEludGVybmFsKCkKIHsKKyAg
ICBBU1NFUlQoIW1fd29ya2VyT2JqZWN0KTsKICAgICBkZWxldGUgdGhpczsKIH0KIAordm9pZCBX
b3JrZXJNZXNzYWdpbmdQcm94eTo6cmVwb3J0V29ya2VyVGhyZWFkQWN0aXZpdHkoYm9vbCBjb25m
aXJtaW5nTWVzc2FnZSwgYm9vbCBoYXNQZW5kaW5nQWN0aXZpdHkpCit7CisgICAgbV9zY3JpcHRF
eGVjdXRpb25Db250ZXh0LT5wb3N0VGFzayhXb3JrZXJUaHJlYWRBY3Rpdml0eVJlcG9ydFRhc2s6
OmNyZWF0ZSh0aGlzLCBjb25maXJtaW5nTWVzc2FnZSwgaGFzUGVuZGluZ0FjdGl2aXR5KSk7Cisg
ICAgLy8gV2lsbCBleGVjdXRlIHJlcG9ydFdvcmtlclRocmVhZEFjdGl2aXR5SW50ZXJuYWwoKSBv
biBjb250ZXh0J3MgdGhyZWFkLgorfQorCit2b2lkIFdvcmtlck1lc3NhZ2luZ1Byb3h5OjpyZXBv
cnRXb3JrZXJUaHJlYWRBY3Rpdml0eUludGVybmFsKGJvb2wgY29uZmlybWluZ01lc3NhZ2UsIGJv
b2wgaGFzUGVuZGluZ0FjdGl2aXR5KQoreworICAgIGlmIChjb25maXJtaW5nTWVzc2FnZSkgewor
ICAgICAgICBBU1NFUlQobV91bmNvbmZpcm1lZE1lc3NhZ2VDb3VudCk7CisgICAgICAgIC0tbV91
bmNvbmZpcm1lZE1lc3NhZ2VDb3VudDsKKyAgICB9CisKKyAgICBtX3dvcmtlclRocmVhZEhhZFBl
bmRpbmdBY3Rpdml0eSA9IGhhc1BlbmRpbmdBY3Rpdml0eTsKK30KKworYm9vbCBXb3JrZXJNZXNz
YWdpbmdQcm94eTo6d29ya2VyVGhyZWFkSGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gbV91bmNvbmZpcm1lZE1lc3NhZ2VDb3VudCB8fCBtX3dvcmtlclRocmVhZEhhZFBl
bmRpbmdBY3Rpdml0eTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8g
RU5BQkxFKFdPUktFUlMpCkluZGV4OiBXZWJDb3JlL2RvbS9Xb3JrZXJNZXNzYWdpbmdQcm94eS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmgJKHJldmlz
aW9uIDM4NDkwKQorKysgV2ViQ29yZS9kb20vV29ya2VyTWVzc2FnaW5nUHJveHkuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNTMsMTkgKzUzLDI3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAg
dm9pZCB3b3JrZXJPYmplY3REZXN0cm95ZWQoKTsKICAgICAgICAgdm9pZCB3b3JrZXJDb250ZXh0
RGVzdHJveWVkKCk7CiAKKyAgICAgICAgdm9pZCByZXBvcnRXb3JrZXJUaHJlYWRBY3Rpdml0eShi
b29sIGNvbmZpcm1pbmdNZXNzYWdlLCBib29sIGhhc1BlbmRpbmdBY3Rpdml0eSk7CisgICAgICAg
IGJvb2wgd29ya2VyVGhyZWFkSGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3Q7CisKICAgICBwcml2
YXRlOgogICAgICAgICBmcmllbmQgY2xhc3MgTWVzc2FnZVdvcmtlclRhc2s7CiAgICAgICAgIGZy
aWVuZCBjbGFzcyBXb3JrZXJDb250ZXh0RGVzdHJveWVkVGFzazsKKyAgICAgICAgZnJpZW5kIGNs
YXNzIFdvcmtlclRocmVhZEFjdGl2aXR5UmVwb3J0VGFzazsKIAogICAgICAgICB+V29ya2VyTWVz
c2FnaW5nUHJveHkoKTsKIAogICAgICAgICB2b2lkIHdvcmtlckNvbnRleHREZXN0cm95ZWRJbnRl
cm5hbCgpOworICAgICAgICB2b2lkIHJlcG9ydFdvcmtlclRocmVhZEFjdGl2aXR5SW50ZXJuYWwo
Ym9vbCBjb25maXJtaW5nTWVzc2FnZSwgYm9vbCBoYXNQZW5kaW5nQWN0aXZpdHkpOwogICAgICAg
ICBXb3JrZXIqIHdvcmtlck9iamVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fd29ya2VyT2JqZWN0OyB9
CiAKICAgICAgICAgUmVmUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ+IG1fc2NyaXB0RXhlY3V0
aW9uQ29udGV4dDsKICAgICAgICAgV29ya2VyKiBtX3dvcmtlck9iamVjdDsKICAgICAgICAgUmVm
UHRyPFdvcmtlclRocmVhZD4gbV93b3JrZXJUaHJlYWQ7CiAKKyAgICAgICAgdW5zaWduZWQgbV91
bmNvbmZpcm1lZE1lc3NhZ2VDb3VudDsgLy8gVW5jb25maXJtZWQgbWVzc2FnZXMgZnJvbSB3b3Jr
ZXIgb2JqZWN0IHRvIHdvcmtlciB0aHJlYWQuCisgICAgICAgIGJvb2wgbV93b3JrZXJUaHJlYWRI
YWRQZW5kaW5nQWN0aXZpdHk7IC8vIFRoZSBsYXRlc3QgY29uZmlybWF0aW9uIGZyb20gd29ya2Vy
IHRocmVhZCByZXBvcnRlZCB0aGF0IGl0IHdhcyBzdGlsbCBhY3RpdmUuCisKICAgICAgICAgVmVj
dG9yPFJlZlB0cjxXb3JrZXJUYXNrPiA+IG1fcXVldWVkRWFybHlUYXNrczsgLy8gVGFza3MgYXJl
IHF1ZXVlZCBoZXJlIHVudGlsIHRoZXJlJ3MgYSB0aHJlYWQgb2JqZWN0IGNyZWF0ZWQuCiAgICAg
fTsKIApJbmRleDogV2ViQ29yZS9kb20vV29ya2VyVGhyZWFkLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2RvbS9Xb3JrZXJUaHJlYWQuY3BwCShyZXZpc2lvbiAzODQ5MCkKKysrIFdlYkNvcmUv
ZG9tL1dvcmtlclRocmVhZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDYgKzMzLDcgQEAKICNp
bmNsdWRlICJKU1dvcmtlckNvbnRleHQuaCIKICNpbmNsdWRlICJXb3JrZXIuaCIKICNpbmNsdWRl
ICJXb3JrZXJDb250ZXh0LmgiCisjaW5jbHVkZSAiV29ya2VyTWVzc2FnaW5nUHJveHkuaCIKICNp
bmNsdWRlICJXb3JrZXJUYXNrLmgiCiAKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CkBAIC03Nyw2ICs3
OCw3IEBAIHZvaWQqIFdvcmtlclRocmVhZDo6d29ya2VyVGhyZWFkKCkKICAgICBXb3JrZXJTY3Jp
cHRDb250cm9sbGVyKiBzY3JpcHQgPSB3b3JrZXJDb250ZXh0LT5zY3JpcHQoKTsKIAogICAgIHNj
cmlwdC0+ZXZhbHVhdGUobV9zY3JpcHRVUkwsIDEsIG1fc291cmNlQ29kZSk7CisgICAgbV9tZXNz
YWdpbmdQcm94eS0+cmVwb3J0V29ya2VyVGhyZWFkQWN0aXZpdHkodHJ1ZSwgd29ya2VyQ29udGV4
dC0+aGFzUGVuZGluZ0FjdGl2aXR5KCkpOwogCiAgICAgd2hpbGUgKHRydWUpIHsKICAgICAgICAg
UmVmUHRyPFdvcmtlclRhc2s+IHRhc2s7Cg==
</data>
<flag name="review"
          id="11643"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>