<?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>62292</bug_id>
          
          <creation_ts>2011-06-08 09:34:39 -0700</creation_ts>
          <short_desc>[Chromium] Worker object may be garbage collected even if it has message handlers</short_desc>
          <delta_ts>2011-06-10 01:06: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>WebCore Misc.</component>
          <version>528+ (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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Yury Semikhatsky">yurys</reporter>
          <assigned_to name="Yury Semikhatsky">yurys</assigned_to>
          <cc>ap</cc>
    
    <cc>caseq</cc>
    
    <cc>dimich</cc>
    
    <cc>dslomov</cc>
    
    <cc>levin</cc>
    
    <cc>pfeldman</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>417291</commentid>
    <comment_count>0</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2011-06-08 09:34:39 -0700</bug_when>
    <thetext>Currently if you create a dedicated worker by calling the following function:

function createWorker() {
    var worker = new Worker(&quot;worker.js&quot;);
    worker.onmessage = function(event) {
       console.log(&quot;Message from worker: &quot; + event.data);
    };
    worker.postMessage(&quot;ping&quot;);
}

the worker object may well be GC&apos;ed before any message from the worker
context is received. This behavior looks confusing. The spec doesn&apos;t say
anything specific about this while in many examples there no references
to the worker object to which onmessage/onerror handlers are attached which
means that those samples may be affected by this issue.

Should we protect the worker from being collected while it has message
handlers? Probably this problem has already been discussed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>417346</commentid>
    <comment_count>1</comment_count>
    <who name="Dmitry Titov">dimich</who>
    <bug_when>2011-06-08 10:51:01 -0700</bug_when>
    <thetext>Is there a repro case for this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>417360</commentid>
    <comment_count>2</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-06-08 11:18:18 -0700</bug_when>
    <thetext>In your example, the worker object will be GC protected because there is an outstanding message. Once it&apos;s handled and acknowledged, and we also know that it hasn&apos;t triggered a timer or XHR inside the worker thread, it should be fine to collect the worker, because we know that it can&apos;t possibly be messaged again from either side.

Having handlers always GC protect the object would make it extremely likely to leak.

So, this is correct behavior. Do you have an example where the implementation doesn&apos;t match the design that I described above?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>417366</commentid>
    <comment_count>3</comment_count>
    <who name="Andrey Kosyakov">caseq</who>
    <bug_when>2011-06-08 11:24:30 -0700</bug_when>
    <thetext>Doesn&apos;t fast/workers/worker-gc.html aim at testing just this? I wonder what&apos;s so different in Yury&apos;s example.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>417404</commentid>
    <comment_count>4</comment_count>
    <who name="Dmitry Titov">dimich</who>
    <bug_when>2011-06-08 12:16:22 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; Doesn&apos;t fast/workers/worker-gc.html aim at testing just this? I wonder what&apos;s so different in Yury&apos;s example.

During test in worker-gc.html, the Worker always has &apos;pending activity&apos; in the form of a message being sent and replied. 

In the Yury.s example, I would expect the &quot;ping&quot; message to be delivered to the worker context, and if the worker context replies with another message from its onmessage handler, it would be delivered back and appended to console log. After that, if there is no pending activity in the worker context (no timers, xhrs, database requests, file operations) - the worker becomes &apos;unprotected&apos; (as spec says) in a sense that it can not fire any new events and thus can be GC&apos;ed safely, together with its event handlers.

However, if in this example the worker context replies back but the even handler is not firing because it was GC&apos;ed, it&apos;s a bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>417851</commentid>
    <comment_count>5</comment_count>
      <attachid>96551</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2011-06-08 23:32:27 -0700</bug_when>
    <thetext>Created attachment 96551
Repro case 1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>417852</commentid>
    <comment_count>6</comment_count>
      <attachid>96552</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2011-06-08 23:32:52 -0700</bug_when>
    <thetext>Created attachment 96552
Repro case 1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>417862</commentid>
    <comment_count>7</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2011-06-08 23:50:59 -0700</bug_when>
    <thetext>(In reply to comment #1)
&gt; Is there a repro case for this?

Yes, see attached worker.html and worker.js. worker.js periodically sends a message to its worker object so the worker context is not collected. However the worker object is not GC protected and I see only part of the messages printed in the page. I can reliably reproduce it on Chromium Linux after the page refresh: messages from worker #0 will never be printed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>417869</commentid>
    <comment_count>8</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-06-08 23:57:14 -0700</bug_when>
    <thetext>I cannot reproduce this in WebKit nightly r88132 (after changing the test to not use bind()). I forced garbage collection several times manually when running the test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>417874</commentid>
    <comment_count>9</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2011-06-09 00:14:02 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; In your example, the worker object will be GC protected because there is an outstanding message. Once it&apos;s handled and acknowledged, and we also know that it hasn&apos;t triggered a timer or XHR inside the worker thread, it should be fine to collect the worker, because we know that it can&apos;t possibly be messaged again from either side.
&gt; 
Does it mean that the worker object should stay alive while there is a pending activity in the corresponding worker context?

&gt; Having handlers always GC protect the object would make it extremely likely to leak.
&gt; 
Yeah, I understand that. As I see in current implementation tracking of pending activities in the worker context is supposed to address the issue.

&gt; So, this is correct behavior. Do you have an example where the implementation doesn&apos;t match the design that I described above?
I posted my example, it looks like a bug in Chromium&apos;s implementation which appears after page refresh.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>417875</commentid>
    <comment_count>10</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2011-06-09 00:15:10 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; I cannot reproduce this in WebKit nightly r88132 (after changing the test to not use bind()). I forced garbage collection several times manually when running the test.

I suspect this is Chromium-specific, let me try to reproduce it on WebKit ToT.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>417883</commentid>
    <comment_count>11</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2011-06-09 00:38:14 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; (In reply to comment #8)
&gt; &gt; I cannot reproduce this in WebKit nightly r88132 (after changing the test to not use bind()). I forced garbage collection several times manually when running the test.
&gt; 
&gt; I suspect this is Chromium-specific, let me try to reproduce it on WebKit ToT.

Yeah, I couldn&apos;t reproduce it on WebKit r88431 Linux Qt.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>417989</commentid>
    <comment_count>12</comment_count>
      <attachid>96582</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2011-06-09 07:04:35 -0700</bug_when>
    <thetext>Created attachment 96582
Reduced test case

The case doesn&apos;t fail in debug mode with a shorter interval in worker-pending.js as in that case message from the worker context seems to be delivered before acknowledge for the message from the worker.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>418008</commentid>
    <comment_count>13</comment_count>
      <attachid>96587</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2011-06-09 07:32:15 -0700</bug_when>
    <thetext>Created attachment 96587
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>418012</commentid>
    <comment_count>14</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2011-06-09 07:37:33 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; Created an attachment (id=96587) [details]
&gt; Patch

I&apos;d like to convert the test case into a layout test but I don&apos;t see yet how to do this so that the test isn&apos;t too slow and reliable. The problem with test is that full-GC needs to be triggered right after WebWorkerClientImpl::confirmMessageFromWorkerObject is called and there is no way to hook WebWorkerClientImpl::confirmMessageFromWorkerObject from JavaScript.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>418037</commentid>
    <comment_count>15</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-06-09 08:48:22 -0700</bug_when>
    <thetext>Did you try forcing garbage collection to make the test faster? There is a gc() function in js-test-pre.js.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>418038</commentid>
    <comment_count>16</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2011-06-09 08:50:28 -0700</bug_when>
    <thetext>WebWorkerClientImpl currently inverts order of dispatching of confirmMessageFromWorkerObject and postMessageToWorkerObject.
Let assume that WebWorkerClientImpl::postMessageToWorkerObject is called right after WebWorkerClientImpl::confirmMessageFromWorkerObject. WebWorkerClientImpl::confirmMessageFromWorkerObject will unconditionally schedule asynchronous task while WebWorkerClientImpl::postMessageToWorkerObject will check if current thread is the same where the client was created (which is always true for workers created in Page) and will dispatch the message synchronously i.e. before WebWorkerClientImpl::confirmMessageFromWorkerObjectTask is executed.

Looks like a bug to me. Dmitry, could clarify this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>418043</commentid>
    <comment_count>17</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2011-06-09 08:53:31 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; Did you try forcing garbage collection to make the test faster? There is a gc() function in js-test-pre.js.

Yes, tried it both by inserting:

    function triggerGC() {
        var head;
        for (var i = 0; i &lt; 10000; i++) {
            var newHead = new Array(1000);
            newHead[0] = head;
            head = newHead;
        }
    }
    setInterval(triggerGC, 0);

and 


    function triggerGC() {
        var head;
        for (var i = 0; i &lt; 10000; i++) {
            var newHead = new Array(1000);
            newHead[0] = head;
            head = newHead;
        }
        gc();
    }
    setInterval(triggerGC, 0);

with no success. If the interval between acknowledge and message from worker context is short enough, we cannot be sure that triggerGC() is invoked in between.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>418174</commentid>
    <comment_count>18</comment_count>
    <who name="Dmitry Titov">dimich</who>
    <bug_when>2011-06-09 12:13:28 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; WebWorkerClientImpl currently inverts order of dispatching of confirmMessageFromWorkerObject and postMessageToWorkerObject.
&gt; Let assume that WebWorkerClientImpl::postMessageToWorkerObject is called right after WebWorkerClientImpl::confirmMessageFromWorkerObject. WebWorkerClientImpl::confirmMessageFromWorkerObject will unconditionally schedule asynchronous task while WebWorkerClientImpl::postMessageToWorkerObject will check if current thread is the same where the client was created (which is always true for workers created in Page) and will dispatch the message synchronously i.e. before WebWorkerClientImpl::confirmMessageFromWorkerObjectTask is executed.
&gt; 
&gt; Looks like a bug to me. Dmitry, could clarify this?

I think there is no bug there, at least at first look. It&apos;s fine to delay confirmation, it only will keep the Worker object alive for a bit longer.

However, loosing the pending activity information that you are fixing in your patch is a real bug. Very nice catch!

Note that this code will soon be eliminated (dslomov@chromium.org works on moving dedicated workers back in process so they won&apos;t use Chromium WebWorker API anymore. Shared workers will still go via Chromium API, but they have different lifetime tracking. This work will also enable running dedicated workers tests in DRT for Chromium port (currently all workers layout tests are disabled in test_expectations) - so unless you want to add a ui_test for this failure, I don&apos;t see how it can be tested.

So I&apos;m going to r+ your patch w/o test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>418175</commentid>
    <comment_count>19</comment_count>
      <attachid>96587</attachid>
    <who name="Dmitry Titov">dimich</who>
    <bug_when>2011-06-09 12:14:45 -0700</bug_when>
    <thetext>Comment on attachment 96587
Patch

r=me. Please add a comment to ChangeLog on why there is no layout test, and rename the bug to have &apos;[Chromium]&apos; in it, including in ChangeLog.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>418551</commentid>
    <comment_count>20</comment_count>
      <attachid>96703</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2011-06-10 00:34:22 -0700</bug_when>
    <thetext>Created attachment 96703
Patch for landing

Changelog entry was modified to include information about testing the change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>418554</commentid>
    <comment_count>21</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2011-06-10 00:38:53 -0700</bug_when>
    <thetext>Committed r88529: &lt;http://trac.webkit.org/changeset/88529&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>418558</commentid>
    <comment_count>22</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2011-06-10 00:44:17 -0700</bug_when>
    <thetext>(In reply to comment #18)
&gt; (In reply to comment #16)
&gt; Note that this code will soon be eliminated (dslomov@chromium.org works on moving dedicated workers back in process so they won&apos;t use Chromium WebWorker API anymore. 

Is it in a usable state yet? Any ETA? Then I&apos;d rather focus on the inspection of the new in-process dedicated workers instead of spending time on the current implementation which involves modifications in Chromium IPC.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>418569</commentid>
    <comment_count>23</comment_count>
    <who name="Dmitry Lomov">dslomov</who>
    <bug_when>2011-06-10 01:06:45 -0700</bug_when>
    <thetext>(In reply to comment #22)
&gt; (In reply to comment #18)
&gt; &gt; (In reply to comment #16)
&gt; &gt; Note that this code will soon be eliminated (dslomov@chromium.org works on moving dedicated workers back in process so they won&apos;t use Chromium WebWorker API anymore. 
&gt; 
&gt; Is it in a usable state yet? Any ETA? Then I&apos;d rather focus on the inspection of the new in-process dedicated workers instead of spending time on the current implementation which involves modifications in Chromium IPC.

My ETA for this is end of June. You can track progress at https://bugs.webkit.org/show_bug.cgi?id=61016</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>96551</attachid>
            <date>2011-06-08 23:32:27 -0700</date>
            <delta_ts>2011-06-08 23:32:27 -0700</delta_ts>
            <desc>Repro case 1</desc>
            <filename>worker.html</filename>
            <type>text/html</type>
            <size>651</size>
            <attacher name="Yury Semikhatsky">yurys</attacher>
            
              <data encoding="base64">PGh0bWw+DQogIDxib2R5Pg0KDQogIDxkaXYgaWQ9InJlc3VsdCI+PC9kaXY+DQoNCiAgPHNjcmlw
dCBsYW5ndWFnZT0iamF2YXNjcmlwdCI+DQogICAgZnVuY3Rpb24gZHVtcCh0ZXh0KSB7DQogICAg
ICAgIHZhciBtc2cgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsNCiAgICAgICAgbXNn
LnRleHRDb250ZW50ID0gdGV4dDsNCiAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJl
c3VsdCIpLmFwcGVuZENoaWxkKG1zZyk7DQogICAgfQ0KICAgIA0KICAgIGZvciAodmFyIGkgPSAw
OyBpIDwgMzsgaSsrKSB7DQogICAgICAgIHNldFRpbWVvdXQoc3RhcnRXb3JrZXIuYmluZCh0aGlz
LCBpKSwgaSAqIDMwMDApOw0KICAgIH0NCg0KDQogICAgZnVuY3Rpb24gc3RhcnRXb3JrZXIoaSkg
ew0KICAgICAgICB2YXIgd29ya2VyID0gbmV3IFdvcmtlcigid29ya2VyLmpzIik7DQoNCiAgICAg
ICAgd29ya2VyLm9ubWVzc2FnZSA9IGZ1bmN0aW9uKGV2ZW50KSB7DQogICAgICAgICAgZHVtcCgi
TWVzc2FnZSBmcm9tIHdvcmtlciAjIiArIGkgKyAiOiAiICsgZXZlbnQuZGF0YSk7DQogICAgICAg
IH07DQoNCiAgICAgICAgd29ya2VyLnBvc3RNZXNzYWdlKGkpOw0KICAgIH0NCg0KICA8L3Njcmlw
dD4NCiAgPC9ib2R5Pg0KPC9odG1sPg0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>96552</attachid>
            <date>2011-06-08 23:32:52 -0700</date>
            <delta_ts>2011-06-08 23:32:52 -0700</delta_ts>
            <desc>Repro case 1</desc>
            <filename>worker.js</filename>
            <type>application/javascript</type>
            <size>240</size>
            <attacher name="Yury Semikhatsky">yurys</attacher>
            
              <data encoding="base64">dmFyIHdvcmtlcl9pZCA9IC0xOw0KdmFyIG1lc3NhZ2VfaWQgPSAxOw0Kb25tZXNzYWdlID0gZnVu
Y3Rpb24oZXZlbnQpIHsNCiAgd29ya2VyX2lkID0gcGFyc2VJbnQoZXZlbnQuZGF0YSk7DQogIHNl
dEludGVydmFsKGRvV29yaywgNTAwMCk7DQp9Ow0KDQpmdW5jdGlvbiBkb1dvcmsoKSB7DQogIHBv
c3RNZXNzYWdlKCJXb3JrZXIgIyIgKyB3b3JrZXJfaWQgKyAiIG1lc3NhZ2UgIyIgKyBtZXNzYWdl
X2lkKyspOw0KfQ0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>96582</attachid>
            <date>2011-06-09 07:04:35 -0700</date>
            <delta_ts>2011-06-09 07:04:35 -0700</delta_ts>
            <desc>Reduced test case</desc>
            <filename>worker-pending.zip</filename>
            <type>application/zip</type>
            <size>826</size>
            <attacher name="Yury Semikhatsky">yurys</attacher>
            
              <data encoding="base64">UEsDBBQAAAAIAHGPyT6se3ySewEAAA8DAAATABwAd29ya2VyLXBlbmRpbmcuaHRtbFVUCQADxtHw
Td/R8E11eAsAAQQkdwAABIgTAABlUz1PwzAQ3ZH4DydPrgpJu9K0ElSIdmBmQAwmviYuiR05TkqF
+t85x0loyw2xfXfv3WeS3JXF6vYGIPk08ki37i5VC0oumcW6KRxbJTFpBmOdWlU5KITOGpHhku1F
K4KSdVQAu0anThkNsikr7vDbTeAnmLy0wkJZZ7AEadKmRO2i1KJw+Fygf3FG4dhk8Ycg78jTrI12
5EBI/zpzGIkydD3L03Er+VDCJBJVhVquc1VITnQD+ykc4esTOxj7hZYiaDzAW/fgLCjvPYPSWbSv
u+wCKNgio0usa2oIQYf6ObaUyFntXT/Ya++4s6bs4Q/AYAqdeySFE2N612EqU7sez1lFyYx9GhNv
tMSd0ihHrK8rNU3XuPniakbOqixD+7Lm/4aUo5BnTd4ZC9zrFfHMFnQkMJ+R0HU6vUAPDNTEDZH0
7Xy0Vhy5h5wP10vv9z77INersF7ykWRzaTxdjLFGt6UNsa0o+FjXHcyGaSVxWNSw8nG/80nc/wa/
UEsDBBQAAAAIAHGPyT6e6dMuYQAAAH4AAAARABwAd29ya2VyLXBlbmRpbmcuanNVVAkAA8XR8E3g
0fBNdXgLAAEEJHcAAASIEwAAy8/LTS0uTkxPVbBVSCvNSy7JzM/TSC1LzSvRVKjm5VJQKE4tCcnM
Tc0vLdEoTs1LCUotLsjPK07VUTA1MDDQtOblqgViXi6YXgVkRRpQMwryi0t8IdZoKAFl0pXAGnm5
AFBLAQIeAxQAAAAIAHGPyT6se3ySewEAAA8DAAATABgAAAAAAAEAAACkgQAAAAB3b3JrZXItcGVu
ZGluZy5odG1sVVQFAAPG0fBNdXgLAAEEJHcAAASIEwAAUEsBAh4DFAAAAAgAcY/JPp7p0y5hAAAA
fgAAABEAGAAAAAAAAQAAAKSByAEAAHdvcmtlci1wZW5kaW5nLmpzVVQFAAPF0fBNdXgLAAEEJHcA
AASIEwAAUEsFBgAAAAACAAIAsAAAAHQCAAAAAA==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>96587</attachid>
            <date>2011-06-09 07:32:15 -0700</date>
            <delta_ts>2011-06-09 12:14:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-62292-20110609183212.patch</filename>
            <type>text/plain</type>
            <size>3689</size>
            <attacher name="Yury Semikhatsky">yurys</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODg0MzEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXgg
ZmEzMWY0MTI4OGU5YmU3OTU0NjkxZjZiYzk2Mzk2ZTA0MzE5MDhhYi4uYjUwNDYzMGYxNTQ3YzY2
MmM3YjE2OTlmNTNmMzI4N2EyNmNiM2IzYiAxMDA3NTUKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxNiBAQAorMjAxMS0wNi0wOSAgWXVyeSBTZW1pa2hhdHNreSAgPHl1cnlzQGNocm9t
aXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBXb3JrZXIgb2JqZWN0IG1heSBiZSBnYXJiYWdlIGNvbGxlY3RlZCBldmVuIGlmIGl0IGhhcyBt
ZXNzYWdlIGhhbmRsZXJzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD02MjI5MgorCisgICAgICAgICogc3JjL1dlYldvcmtlckNsaWVudEltcGwuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJXb3JrZXJDbGllbnRJbXBsOjpjb25maXJtTWVzc2FnZUZyb21X
b3JrZXJPYmplY3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJXb3JrZXJDbGllbnRJbXBsOjpjb25m
aXJtTWVzc2FnZUZyb21Xb3JrZXJPYmplY3RUYXNrKTogdXBkYXRlIHdvcmtlciBjb250ZXh0IHBl
bmRpbmcKKyAgICAgICAgYWN0aXZpdHkgc3RhdGUgZXZlcnkgdGltZSBhIG1lc3NhZ2UgaXMgY29u
ZmlybWVkIHNpbmNlIHRoZSBtZXNzYWdlIG1heSBoYXZlIGNyZWF0ZWQgYSBuZXcgYWN0aXZpdHku
CisgICAgICAgICogc3JjL1dlYldvcmtlckNsaWVudEltcGwuaDoKKwogMjAxMS0wNi0wOCAgSnVz
dGluIE5vdm9zYWQgIDxqdW5vdkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkg
SmFtZXMgUm9iaW5zb24uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJXb3JrZXJDbGllbnRJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYldv
cmtlckNsaWVudEltcGwuY3BwCmluZGV4IDM2YmJmMTQ1MzY3YzU5ZjgyYzdhMGZkYmEwY2E2NTZk
ZTc4YTFlYmEuLjQyYzUzMTc5YTQxN2IxZmYzZjdlZDBlODZhMmU2MjY4OTE3OTc3YmQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYldvcmtlckNsaWVudEltcGwuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYldvcmtlckNsaWVudEltcGwuY3Bw
CkBAIC0zMTgsNyArMzE4LDggQEAgdm9pZCBXZWJXb3JrZXJDbGllbnRJbXBsOjpjb25maXJtTWVz
c2FnZUZyb21Xb3JrZXJPYmplY3QoYm9vbCBoYXNQZW5kaW5nQWN0aXZpdHkKICAgICAvLyBhY2Nl
c3NlZC4gIE90aGVyd2lzZSB0aGVyZSBhcmUgcmFjZSBjb25kaXRpb25zIHdpdGggdjgncyBnYXJi
YWdlCiAgICAgLy8gY29sbGVjdGlvbi4KICAgICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnBv
c3RUYXNrKGNyZWF0ZUNhbGxiYWNrVGFzaygmY29uZmlybU1lc3NhZ2VGcm9tV29ya2VyT2JqZWN0
VGFzaywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKHRoaXMpKSk7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWxsb3dDcm9zc1RocmVh
ZEFjY2Vzcyh0aGlzKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBoYXNQZW5kaW5nQWN0aXZpdHkpKTsKIH0KIAogdm9pZCBXZWJXb3Jr
ZXJDbGllbnRJbXBsOjpyZXBvcnRQZW5kaW5nQWN0aXZpdHkoYm9vbCBoYXNQZW5kaW5nQWN0aXZp
dHkpCkBAIC00MzIsOSArNDMzLDExIEBAIHZvaWQgV2ViV29ya2VyQ2xpZW50SW1wbDo6cG9zdENv
bnNvbGVNZXNzYWdlVG9Xb3JrZXJPYmplY3RUYXNrKFNjcmlwdEV4ZWN1dGlvbkNvCiB9CiAKIHZv
aWQgV2ViV29ya2VyQ2xpZW50SW1wbDo6Y29uZmlybU1lc3NhZ2VGcm9tV29ya2VyT2JqZWN0VGFz
ayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYldvcmtlckNsaWVudElt
cGwqIHRoaXNQdHIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgV2ViV29ya2VyQ2xpZW50SW1wbCogdGhpc1B0ciwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29s
IGhhc1BlbmRpbmdBY3Rpdml0eSkKIHsKICAgICB0aGlzUHRyLT5tX3VuY29uZmlybWVkTWVzc2Fn
ZUNvdW50LS07CisgICAgdGhpc1B0ci0+bV93b3JrZXJDb250ZXh0SGFkUGVuZGluZ0FjdGl2aXR5
ID0gaGFzUGVuZGluZ0FjdGl2aXR5OwogfQogCiB2b2lkIFdlYldvcmtlckNsaWVudEltcGw6OnJl
cG9ydFBlbmRpbmdBY3Rpdml0eVRhc2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYldvcmtlckNsaWVudElt
cGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYldvcmtlckNsaWVudEltcGwuaApp
bmRleCA2NzRjZGQxMjBjYTc5MmRiOGZmYzFmNDQwZmE3N2IzOTJhMjJiMGRjLi42NThiZjVhNGFh
OTMzOTY5ODA5YzQwNGRiY2YwNWUyOGFmOTkzOTZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJXb3JrZXJDbGllbnRJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViV29ya2VyQ2xpZW50SW1wbC5oCkBAIC0xNTMsNyArMTUzLDggQEAgcHJp
dmF0ZToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaW50IGxpbmVOdW1iZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IFdURjo6U3RyaW5nJiBzb3VyY2VVUkwpOwogICAgIHN0YXRp
YyB2b2lkIGNvbmZpcm1NZXNzYWdlRnJvbVdvcmtlck9iamVjdFRhc2soV2ViQ29yZTo6U2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFdlYldvcmtlckNsaWVudEltcGwqIHRoaXNQdHIpOworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViV29ya2Vy
Q2xpZW50SW1wbCogdGhpc1B0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGJvb2wgaGFzUGVuZGluZ0FjdGl2aXR5KTsKICAgICBzdGF0aWMgdm9p
ZCByZXBvcnRQZW5kaW5nQWN0aXZpdHlUYXNrKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIGNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBX
ZWJXb3JrZXJDbGllbnRJbXBsKiB0aGlzUHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYm9vbCBoYXNQZW5kaW5nQWN0aXZpdHkpOwo=
</data>
<flag name="review"
          id="90314"
          type_id="1"
          status="+"
          setter="dimich"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>96703</attachid>
            <date>2011-06-10 00:34:22 -0700</date>
            <delta_ts>2011-06-10 00:34:22 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>worker.patch</filename>
            <type>text/plain</type>
            <size>3919</size>
            <attacher name="Yury Semikhatsky">yurys</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggZGI0NzFkMS4uZGRjOTRkMyAxMDA3NTUKLS0t
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMyBAQAorMjAxMS0wNi0wOSAgWXVyeSBTZW1p
a2hhdHNreSAgPHl1cnlzQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBbQ2hyb21pdW1dIFdvcmtlciBvYmplY3QgbWF5IGJlIGdh
cmJhZ2UgY29sbGVjdGVkIGV2ZW4gaWYgaXQgaGFzIG1lc3NhZ2UgaGFuZGxlcnMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYyMjkyCisKKyAgICAgICAg
SSdkIGxpa2UgdG8gY29udmVydCB0aGUgdGVzdCBjYXNlIGludG8gYSBsYXlvdXQgdGVzdCBidXQg
SSBkb24ndCBzZWUgeWV0CisgICAgICAgIGhvdyB0byBkbyB0aGlzIHNvIHRoYXQgdGhlIHRlc3Qg
aXNuJ3QgdG9vIHNsb3cgYW5kIHJlbGlhYmxlLiBUaGUgcHJvYmxlbQorICAgICAgICB3aXRoIHRl
c3QgaXMgdGhhdCBmdWxsLUdDIG5lZWRzIHRvIGJlIHRyaWdnZXJlZCByaWdodCBhZnRlcgorICAg
ICAgICBXZWJXb3JrZXJDbGllbnRJbXBsOjpjb25maXJtTWVzc2FnZUZyb21Xb3JrZXJPYmplY3Qg
aXMgY2FsbGVkIGFuZCB0aGVyZQorICAgICAgICBpcyBubyB3YXkgdG8gaG9vayBXZWJXb3JrZXJD
bGllbnRJbXBsOjpjb25maXJtTWVzc2FnZUZyb21Xb3JrZXJPYmplY3QgZnJvbSBKYXZhU2NyaXB0
LgorICAgICAgICBTbyBubyB0ZXN0IGZvciBub3cuCisKKyAgICAgICAgKiBzcmMvV2ViV29ya2Vy
Q2xpZW50SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYldvcmtlckNsaWVudEltcGw6OmNv
bmZpcm1NZXNzYWdlRnJvbVdvcmtlck9iamVjdCk6CisgICAgICAgIChXZWJLaXQ6OldlYldvcmtl
ckNsaWVudEltcGw6OmNvbmZpcm1NZXNzYWdlRnJvbVdvcmtlck9iamVjdFRhc2spOiB1cGRhdGUg
d29ya2VyIGNvbnRleHQgcGVuZGluZworICAgICAgICBhY3Rpdml0eSBzdGF0ZSBldmVyeSB0aW1l
IGEgbWVzc2FnZSBpcyBjb25maXJtZWQgc2luY2UgdGhlIG1lc3NhZ2UgbWF5IGhhdmUgY3JlYXRl
ZCBhIG5ldyBhY3Rpdml0eS4KKyAgICAgICAgKiBzcmMvV2ViV29ya2VyQ2xpZW50SW1wbC5oOgor
CiAyMDExLTA2LTA5ICBKYW1lcyBLb3ppYW5za2kgIDxrb3pAY2hyb21pdW0ub3JnPgogCiAgICAg
ICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHI4ODQ2Ni4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYldvcmtlckNsaWVudEltcGwuY3BwIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViV29ya2VyQ2xpZW50SW1wbC5jcHAKaW5kZXggMzZiYmYxNC4uNDJj
NTMxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViV29ya2VyQ2xp
ZW50SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViV29ya2VyQ2xp
ZW50SW1wbC5jcHAKQEAgLTMxOCw3ICszMTgsOCBAQCB2b2lkIFdlYldvcmtlckNsaWVudEltcGw6
OmNvbmZpcm1NZXNzYWdlRnJvbVdvcmtlck9iamVjdChib29sIGhhc1BlbmRpbmdBY3Rpdml0eQog
ICAgIC8vIGFjY2Vzc2VkLiAgT3RoZXJ3aXNlIHRoZXJlIGFyZSByYWNlIGNvbmRpdGlvbnMgd2l0
aCB2OCdzIGdhcmJhZ2UKICAgICAvLyBjb2xsZWN0aW9uLgogICAgIG1fc2NyaXB0RXhlY3V0aW9u
Q29udGV4dC0+cG9zdFRhc2soY3JlYXRlQ2FsbGJhY2tUYXNrKCZjb25maXJtTWVzc2FnZUZyb21X
b3JrZXJPYmplY3RUYXNrLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3ModGhpcykpKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBbGxv
d0Nyb3NzVGhyZWFkQWNjZXNzKHRoaXMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhc1BlbmRpbmdBY3Rpdml0eSkpOwogfQogCiB2
b2lkIFdlYldvcmtlckNsaWVudEltcGw6OnJlcG9ydFBlbmRpbmdBY3Rpdml0eShib29sIGhhc1Bl
bmRpbmdBY3Rpdml0eSkKQEAgLTQzMiw5ICs0MzMsMTEgQEAgdm9pZCBXZWJXb3JrZXJDbGllbnRJ
bXBsOjpwb3N0Q29uc29sZU1lc3NhZ2VUb1dvcmtlck9iamVjdFRhc2soU2NyaXB0RXhlY3V0aW9u
Q28KIH0KIAogdm9pZCBXZWJXb3JrZXJDbGllbnRJbXBsOjpjb25maXJtTWVzc2FnZUZyb21Xb3Jr
ZXJPYmplY3RUYXNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViV29y
a2VyQ2xpZW50SW1wbCogdGhpc1B0cikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJXb3JrZXJDbGllbnRJbXBsKiB0aGlzUHRy
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGJvb2wgaGFzUGVuZGluZ0FjdGl2aXR5KQogewogICAgIHRoaXNQdHItPm1fdW5jb25m
aXJtZWRNZXNzYWdlQ291bnQtLTsKKyAgICB0aGlzUHRyLT5tX3dvcmtlckNvbnRleHRIYWRQZW5k
aW5nQWN0aXZpdHkgPSBoYXNQZW5kaW5nQWN0aXZpdHk7CiB9CiAKIHZvaWQgV2ViV29ya2VyQ2xp
ZW50SW1wbDo6cmVwb3J0UGVuZGluZ0FjdGl2aXR5VGFzayhTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViV29y
a2VyQ2xpZW50SW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViV29ya2VyQ2xp
ZW50SW1wbC5oCmluZGV4IDY3NGNkZDEuLjY1OGJmNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYldvcmtlckNsaWVudEltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJXb3JrZXJDbGllbnRJbXBsLmgKQEAgLTE1Myw3ICsxNTMsOCBAQCBw
cml2YXRlOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpbnQgbGluZU51bWJlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgV1RGOjpTdHJpbmcmIHNvdXJjZVVSTCk7CiAgICAgc3Rh
dGljIHZvaWQgY29uZmlybU1lc3NhZ2VGcm9tV29ya2VyT2JqZWN0VGFzayhXZWJDb3JlOjpTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgV2ViV29ya2VyQ2xpZW50SW1wbCogdGhpc1B0cik7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJXb3Jr
ZXJDbGllbnRJbXBsKiB0aGlzUHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYm9vbCBoYXNQZW5kaW5nQWN0aXZpdHkpOwogICAgIHN0YXRpYyB2
b2lkIHJlcG9ydFBlbmRpbmdBY3Rpdml0eVRhc2soV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFdlYldvcmtlckNsaWVudEltcGwqIHRoaXNQdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBib29sIGhhc1BlbmRpbmdBY3Rpdml0eSk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>