<?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>63495</bug_id>
          
          <creation_ts>2011-06-27 17:08:04 -0700</creation_ts>
          <short_desc>NRWT should wait for ReportCrash</short_desc>
          <delta_ts>2011-06-28 00:30:25 -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>New Bugs</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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>63513</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Adam Barth">abarth</reporter>
          <assigned_to name="Adam Barth">abarth</assigned_to>
          <cc>dpranke</cc>
    
    <cc>eric</cc>
    
    <cc>kkristof</cc>
    
    <cc>ossy</cc>
    
    <cc>rgabor</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>428457</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-06-27 17:08:04 -0700</bug_when>
    <thetext>NRWT should wait for ReportCrash</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>428474</commentid>
    <comment_count>1</comment_count>
      <attachid>98825</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-06-27 17:24:21 -0700</bug_when>
    <thetext>Created attachment 98825
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>428476</commentid>
    <comment_count>2</comment_count>
      <attachid>98826</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-06-27 17:27:16 -0700</bug_when>
    <thetext>Created attachment 98826
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>428477</commentid>
    <comment_count>3</comment_count>
      <attachid>98825</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-06-27 17:27:35 -0700</bug_when>
    <thetext>Comment on attachment 98825
Patch

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

&gt; Tools/Scripts/webkitpy/layout_tests/port/server_process.py:172
&gt; +            if self._executive.running_pids(self._port.is_crash_reporter):
&gt; +                _log.warning(&apos;Waiting for crash reporter...&apos;)
&gt; +            self._executive.wait_newest(self._port.is_crash_reporter)

So is this the central controller for all servers?  Or is this a single worker?   What happens if we start nrwt while a CrashReporter process is running?  What if CrashReporter never stops?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>428479</commentid>
    <comment_count>4</comment_count>
      <attachid>98826</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-06-27 17:28:33 -0700</bug_when>
    <thetext>Comment on attachment 98826
Patch

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

&gt; Tools/Scripts/webkitpy/layout_tests/port/server_process.py:171
&gt; +                _log.warning(&apos;Waiting for crash reporter...&apos;)

So if I have 24 workers on my machine, I&apos;ll get this printed 24 times?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>428483</commentid>
    <comment_count>5</comment_count>
      <attachid>98826</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-06-27 17:32:51 -0700</bug_when>
    <thetext>Comment on attachment 98826
Patch

I&apos;m certain you will get complaints about this spamming the console.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>428484</commentid>
    <comment_count>6</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-06-27 17:33:31 -0700</bug_when>
    <thetext>Committed r89881: &lt;http://trac.webkit.org/changeset/89881&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>428496</commentid>
    <comment_count>7</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-06-27 17:42:51 -0700</bug_when>
    <thetext>These are the answers I gave Eric in person:

&gt; So is this the central controller for all servers?  Or is this a single worker?

It&apos;s for a single worker.

&gt; What happens if we start nrwt while a CrashReporter process is running?

NRWT will wait for CrashReporter to stop before doing anything meaningful.

&gt; What if CrashReporter never stops?

Then NRWT will never stop.

&gt; So if I have 24 workers on my machine, I&apos;ll get this printed 24 times?

Yes.  I&apos;ve added the worker name to make it more clear what&apos;s going on.  Eric suggested that the master process could print this message, which is probably a good idea, but not a blocking issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>428502</commentid>
    <comment_count>8</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-06-27 17:46:43 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; These are the answers I gave Eric in person:
&gt; 
&gt; &gt; So is this the central controller for all servers?  Or is this a single worker?
&gt; 
&gt; It&apos;s for a single worker.
&gt; 
&gt; &gt; What happens if we start nrwt while a CrashReporter process is running?
&gt; 
&gt; NRWT will wait for CrashReporter to stop before doing anything meaningful.
&gt; 
&gt; &gt; What if CrashReporter never stops?
&gt; 
&gt; Then NRWT will never stop.
&gt; 
&gt; &gt; So if I have 24 workers on my machine, I&apos;ll get this printed 24 times?
&gt; 
&gt; Yes.  I&apos;ve added the worker name to make it more clear what&apos;s going on.  Eric suggested that the master process could print this message, which is probably a good idea, but not a blocking issue.

The master doesn&apos;t know anything about what&apos;s going on here, so that might be kinda tricky. I suppose you could post a message from the worker back to the master and the master could throttle the rate it logged messages accordingly. 

But frankly, if you have 24 workers on your machine and they&apos;re all crashing at once, you&apos;ve probably got worse things to worry about, and NRWT will exit shortly due to the max # of crashes being exceeded anyway.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>428506</commentid>
    <comment_count>9</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-06-27 17:49:15 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; &gt; What if CrashReporter never stops?
&gt; 
&gt; Then NRWT will never stop.
&gt; 

Actually, since this is being done in the worker threads, if this takes too long, the manager will treat this as a wedged thread. Wedging by itself is not fatal, and workers can actually un-wedge, but if every thread wedges and you make no progress at all, NRWT will eventually bail out.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>428507</commentid>
    <comment_count>10</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-06-27 17:50:20 -0700</bug_when>
    <thetext>&gt; NRWT will eventually bail out.

Where is the code that does that?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>428511</commentid>
    <comment_count>11</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-06-27 17:54:00 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; &gt; NRWT will eventually bail out.
&gt; 
&gt; Where is the code that does that?

Look at the _run_tests() and is_done() methods in the Manager class (manager.py:674 and manager.py:1316),</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>428515</commentid>
    <comment_count>12</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-06-27 17:57:18 -0700</bug_when>
    <thetext>&gt; Look at the _run_tests() and is_done() methods in the Manager class (manager.py:674 and manager.py:1316),

Thanks.  I suspect we might trigger those conditions if lots of tests are crashing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>428529</commentid>
    <comment_count>13</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-06-27 18:07:37 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; &gt; Look at the _run_tests() and is_done() methods in the Manager class (manager.py:674 and manager.py:1316),
&gt; 
&gt; Thanks.  I suspect we might trigger those conditions if lots of tests are crashing.

Yeah, it&apos;s possible, but even if we do it&apos;s really just a slightly-accelerated version of the early exit we&apos;d do when we hit the --exit-after-n-crashes-or-timeouts threshold, so I don&apos;t know that I&apos;d worry about it too much (although the fewer workers we have running, the more this wouldn&apos;t be true ...).

Dunno if you&apos;ve poked around in this part of the code yet, but in worker.py you have _run_test() on line 127, which calculates the &quot;hang timeout&quot;, posts a message to the manager saying that it&apos;s starting a test, runs the test and compares the results, and then posts the test completed message.

If this really becomes an issue, we have three potential options, in order of increasingly complexity and (IMO) decreasing desirability:

1) Adjust the &quot;hang timeout&quot; to be substantially longer. Given that tests don&apos;t really wedge these days, this should be fairly harmless.

2) Adjust the code in manager.py to realize you&apos;re getting a lot of crashes and be smart able adjusting the timeouts on that side to compensate

3) Rearrange the code in worker.py so that you post that we&apos;ve completed the test *before* trying to read the crash log, since we only check for wedged workers if we think they are actively running tests. This would effectively disable the wedge checking for this case, and would mess up the layering of the various methods, but would work in a worst-case scenario.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>428665</commentid>
    <comment_count>14</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-06-27 23:56:22 -0700</bug_when>
    <thetext>This patch was rolled out because it made Qt sloooow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>428667</commentid>
    <comment_count>15</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2011-06-28 00:00:08 -0700</bug_when>
    <thetext>Gábor, Kristóf, could you check why this change made our NRWT bot so slow?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>428680</commentid>
    <comment_count>16</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-06-28 00:30:25 -0700</bug_when>
    <thetext>Committed r89899: &lt;http://trac.webkit.org/changeset/89899&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>98825</attachid>
            <date>2011-06-27 17:24:21 -0700</date>
            <delta_ts>2011-06-27 17:27:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-63495-20110627172420.patch</filename>
            <type>text/plain</type>
            <size>7231</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDg5ODc4KQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMjQgQEAKKzIwMTEtMDYtMjcgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBOUldUIHNob3Vs
ZCB3YWl0IGZvciBSZXBvcnRDcmFzaAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NjM0OTUKKworICAgICAgICBXaGVuIGEgdGVzdCBjcmFzaGVzIG9uIE1h
YywgUmVwb3J0Q3Jhc2ggY29uZnVzZXMgdXMgaW50byB0aGlua2luZyB0aGUKKyAgICAgICAgdGVz
dCB0aW1lcyBvdXQuCisKKyAgICAgICAgSSdtIG5vdCBzdXJlIGhvdyB0byB0ZXN0IHRoaXMgaW4g
YSBtZWFuaW5nZnVsIHdheSBpbiBvdXIgY3VycmVudCB0ZXN0CisgICAgICAgIGhhcm5lc3MuLi4K
KworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9jcmFzaGxvZ3MucHk6
CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL2NyYXNobG9nc191bml0
dGVzdC5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRf
cGFja2FnZS90ZXN0X3Jlc3VsdF93cml0ZXIucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNlLnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL3BvcnQvbWFjLnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL3BvcnQvc2VydmVyX3Byb2Nlc3MucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJr
aXRweS90b29sL2NvbW1hbmRzL3F1ZXJpZXMucHk6CisKIDIwMTEtMDYtMjcgIEFkYW0gQmFydGgg
IDxhYmFydGhAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4K
SW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9jcmFzaGxvZ3MucHkK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL2NyYXNo
bG9ncy5weQkocmV2aXNpb24gODk4NzMpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1v
bi9zeXN0ZW0vY3Jhc2hsb2dzLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0zNiw4ICszNiw3IEBAIGRl
ZiBfaXNfY3Jhc2hfcmVwb3J0ZXIocHJvY2Vzc19uYW1lKToKIAogCiBjbGFzcyBDcmFzaExvZ3Mo
b2JqZWN0KToKLSAgICBkZWYgX19pbml0X18oc2VsZiwgZXhlY3V0aXZlLCBmaWxlc3lzdGVtKToK
LSAgICAgICAgc2VsZi5fZXhlY3V0aXZlID0gZXhlY3V0aXZlCisgICAgZGVmIF9faW5pdF9fKHNl
bGYsIGZpbGVzeXN0ZW0pOgogICAgICAgICBzZWxmLl9maWxlc3lzdGVtID0gZmlsZXN5c3RlbQog
CiAgICAgZGVmIGZpbmRfbmV3ZXN0X2xvZyhzZWxmLCBwcm9jZXNzX25hbWUpOgpAQCAtNjEsOCAr
NjAsNCBAQCBjbGFzcyBDcmFzaExvZ3Mob2JqZWN0KToKICAgICAgICAgbG9ncyA9IHNlbGYuX2Zp
bGVzeXN0ZW0uZmlsZXNfdW5kZXIobG9nX2RpcmVjdG9yeSwgZmlsZV9maWx0ZXI9aXNfY3Jhc2hf
bG9nKQogICAgICAgICBpZiBub3QgbG9nczoKICAgICAgICAgICAgIHJldHVybgotCi0gICAgICAg
ICMgRklYTUU6IFdlIHNob3VsZCB3YWl0IGZvciB0aGUgQ3Jhc2hSZXBvcnRlciB0byBmaW5pc2gs
IGJ1dCB0aGF0IGNhdXNlcyB0ZXN0cyB0byB0aW1lb3V0LgotICAgICAgICBpZiBGYWxzZToKLSAg
ICAgICAgICAgIHNlbGYuX2V4ZWN1dGl2ZS53YWl0X25ld2VzdChfaXNfY3Jhc2hfcmVwb3J0ZXIp
CiAgICAgICAgIHJldHVybiBzZWxmLl9maWxlc3lzdGVtLnJlYWRfdGV4dF9maWxlKHNvcnRlZChs
b2dzKVstMV0pCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vY3Jh
c2hsb2dzX3VuaXR0ZXN0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
Y29tbW9uL3N5c3RlbS9jcmFzaGxvZ3NfdW5pdHRlc3QucHkJKHJldmlzaW9uIDg5ODcyKQorKysg
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL2NyYXNobG9nc191bml0dGVzdC5w
eQkod29ya2luZyBjb3B5KQpAQCAtMzcsNiArMzcsNiBAQCBjbGFzcyBDcmFzaExvZ3NUZXN0KHVu
aXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgZmlsZXMgPSB7fQogICAgICAgICBmaWxlc1snL1Vz
ZXJzL21vY2svTGlicmFyeS9Mb2dzL0RpYWdub3N0aWNSZXBvcnRzL1RleHRNYXRlXzIwMTEtMDYt
MTMtMTUwNzE5X3F1YWR6ZW4uY3Jhc2gnXSA9IG1vY2tfY3Jhc2hfcmVwb3J0CiAgICAgICAgIGZp
bGVzeXN0ZW0gPSBNb2NrRmlsZVN5c3RlbShmaWxlcykKLSAgICAgICAgY3Jhc2hfbG9ncyA9IENy
YXNoTG9ncyhNb2NrKCksIGZpbGVzeXN0ZW0pCisgICAgICAgIGNyYXNoX2xvZ3MgPSBDcmFzaExv
Z3MoZmlsZXN5c3RlbSkKICAgICAgICAgbG9nID0gY3Jhc2hfbG9ncy5maW5kX25ld2VzdF9sb2co
IlRleHRNYXRlIikKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGxvZywgbW9ja19jcmFzaF9yZXBv
cnQpCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vZXhlY3V0aXZl
LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9l
eGVjdXRpdmUucHkJKHJldmlzaW9uIDg5ODcyKQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9j
b21tb24vc3lzdGVtL2V4ZWN1dGl2ZS5weQkod29ya2luZyBjb3B5KQpAQCAtMjk2LDcgKzI5Niw4
IEBAIGNsYXNzIEV4ZWN1dGl2ZShvYmplY3QpOgogICAgICAgICBydW5uaW5nX3BpZHMgPSBbXQog
CiAgICAgICAgIGlmIHN5cy5wbGF0Zm9ybSBpbiAoIndpbjMyIiwgImN5Z3dpbiIpOgotICAgICAg
ICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWQoKQorICAgICAgICAgICAgIyBGSVhNRTogcnVubmlu
Z19waWRzIGlzbid0IGltcGxlbWVudGVkIG9uIFdpbmRvd3MgeWV0Li4uCisgICAgICAgICAgICBy
ZXR1cm4gW10KIAogICAgICAgICBwc19wcm9jZXNzID0gc2VsZi5wb3BlbihbJ3BzJywgJy1lbycs
ICdwaWQsY29tbSddLCBzdGRvdXQ9c2VsZi5QSVBFLCBzdGRlcnI9c2VsZi5QSVBFKQogICAgICAg
ICBzdGRvdXQsIF8gPSBwc19wcm9jZXNzLmNvbW11bmljYXRlKCkKSW5kZXg6IFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3Rlc3RfcmVzdWx0X3dyaXRl
ci5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9s
YXlvdXRfcGFja2FnZS90ZXN0X3Jlc3VsdF93cml0ZXIucHkJKHJldmlzaW9uIDg5ODczKQorKysg
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvdGVzdF9y
ZXN1bHRfd3JpdGVyLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0xNzMsNyArMTczLDcgQEAgY2xhc3Mg
VGVzdFJlc3VsdFdyaXRlcihvYmplY3QpOgogICAgICAgICBmaWxlbmFtZSA9IHNlbGYub3V0cHV0
X2ZpbGVuYW1lKHNlbGYuRklMRU5BTUVfU1VGRklYX0NSQVNIX0xPRyArICIudHh0IikKICAgICAg
ICAgZnMubWF5YmVfbWFrZV9kaXJlY3RvcnkoZnMuZGlybmFtZShmaWxlbmFtZSkpCiAgICAgICAg
ICMgRklYTUU6IFdlIHNob3VsZG4ndCBiZSBncmFiYmluZyBwcml2YXRlIG1lbWJlcnMgb2YgcG9y
dC4KLSAgICAgICAgY3Jhc2hfbG9ncyA9IENyYXNoTG9ncyhzZWxmLl9wb3J0Ll9leGVjdXRpdmUs
IGZzKQorICAgICAgICBjcmFzaF9sb2dzID0gQ3Jhc2hMb2dzKGZzKQogICAgICAgICBsb2cgPSBj
cmFzaF9sb2dzLmZpbmRfbmV3ZXN0X2xvZyhzZWxmLl9wb3J0LmRyaXZlcl9uYW1lKCkpCiAgICAg
ICAgICMgQ3Jhc2hMb2dzIGRvZXNuJ3Qgc3VwcG9ydCBldmVyeSBwbGF0Zm9ybSwgc28gd2UgZmFs
bCBiYWNrIHRvCiAgICAgICAgICMgaW5jbHVkaW5nIHRoZSBzdGRlcnIgb3V0cHV0LCB3aGljaCBp
cyBhZG1pdHRlZGx5IHNvbWV3aGF0IHJlZHVuZGFudC4KSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYmFzZS5weQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Jhc2UucHkJKHJldmlzaW9uIDg5ODcyKQor
KysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNlLnB5CSh3b3Jr
aW5nIGNvcHkpCkBAIC0yODgsNiArMjg4LDkgQEAgY2xhc3MgUG9ydChvYmplY3QpOgogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0dWFsX2ZpbGVuYW1lKQogICAgICAgICBy
ZXR1cm4gJycuam9pbihkaWZmKQogCisgICAgZGVmIGlzX2NyYXNoX3JlcG9ydGVyKHNlbGYsIHBy
b2Nlc3NfbmFtZSk6CisgICAgICAgIHJldHVybiBGYWxzZQorCiAgICAgZGVmIGRyaXZlcl9uYW1l
KHNlbGYpOgogICAgICAgICAiIiJSZXR1cm5zIHRoZSBuYW1lIG9mIHRoZSBhY3R1YWwgYmluYXJ5
IHRoYXQgaXMgcGVyZm9ybWluZyB0aGUgdGVzdCwKICAgICAgICAgc28gdGhhdCBpdCBjYW4gYmUg
cmVmZXJyZWQgdG8gaW4gbG9nIG1lc3NhZ2VzLiBJbiBtb3N0IGNhc2VzIHRoaXMKSW5kZXg6IFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvbWFjLnB5Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvbWFjLnB5CShyZXZp
c2lvbiA4OTg3MikKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQv
bWFjLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3IEBACiAKIGltcG9ydCBsb2dnaW5n
CiBpbXBvcnQgcGxhdGZvcm0KK2ltcG9ydCByZQogCiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0
cy5wb3J0LndlYmtpdCBpbXBvcnQgV2ViS2l0UG9ydAogCkBAIC05OSw2ICsxMDAsOSBAQCBjbGFz
cyBNYWNQb3J0KFdlYktpdFBvcnQpOgogICAgICAgICByZXR1cm4gc2VsZi5wYXRoX2Zyb21fd2Vi
a2l0X2Jhc2UoJ0xheW91dFRlc3RzJywgJ3BsYXRmb3JtJywKICAgICAgICAgICAgJ21hYycsICd0
ZXN0X2V4cGVjdGF0aW9ucy50eHQnKQogCisgICAgZGVmIGlzX2NyYXNoX3JlcG9ydGVyKHNlbGYs
IHByb2Nlc3NfbmFtZSk6CisgICAgICAgIHJldHVybiByZS5zZWFyY2gocidSZXBvcnRDcmFzaCcs
IHByb2Nlc3NfbmFtZSkKKwogICAgIGRlZiBfc2tpcHBlZF9maWxlX3BhdGhzKHNlbGYpOgogICAg
ICAgICAjIEZJWE1FOiBUaGlzIG1ldGhvZCB3aWxsIG5lZWQgdG8gYmUgbWFkZSB3b3JrIGZvciBu
b24tbWFjCiAgICAgICAgICMgcGxhdGZvcm1zIGFuZCBtb3ZlZCBpbnRvIGJhc2UuUG9ydC4KSW5k
ZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvc2VydmVyX3Byb2Nl
c3MucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
cG9ydC9zZXJ2ZXJfcHJvY2Vzcy5weQkocmV2aXNpb24gODk4NzIpCisrKyBUb29scy9TY3JpcHRz
L3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3NlcnZlcl9wcm9jZXNzLnB5CSh3b3JraW5nIGNv
cHkpCkBAIC0xNjcsNiArMTY3LDEwIEBAIGNsYXNzIFNlcnZlclByb2Nlc3M6CiAgICAgICAgIHNl
bGVjdF9mZHMgPSAob3V0X2ZkLCBlcnJfZmQpCiAgICAgICAgIGRlYWRsaW5lID0gdGltZS50aW1l
KCkgKyB0aW1lb3V0CiAgICAgICAgIHdoaWxlIG5vdCBzZWxmLnRpbWVkX291dCBhbmQgbm90IHNl
bGYuY3Jhc2hlZDoKKyAgICAgICAgICAgIGlmIHNlbGYuX2V4ZWN1dGl2ZS5ydW5uaW5nX3BpZHMo
c2VsZi5fcG9ydC5pc19jcmFzaF9yZXBvcnRlcik6CisgICAgICAgICAgICAgICAgX2xvZy53YXJu
aW5nKCdXYWl0aW5nIGZvciBjcmFzaCByZXBvcnRlci4uLicpCisgICAgICAgICAgICBzZWxmLl9l
eGVjdXRpdmUud2FpdF9uZXdlc3Qoc2VsZi5fcG9ydC5pc19jcmFzaF9yZXBvcnRlcikKKwogICAg
ICAgICAgICAgIyBwb2xsKCkgaXMgbm90IHRocmVhZHNhZmUgYW5kIGNhbiB0aHJvdyBPU0Vycm9y
IGR1ZSB0bzoKICAgICAgICAgICAgICMgaHR0cDovL2J1Z3MucHl0aG9uLm9yZy9pc3N1ZTE3MzE3
MTcKICAgICAgICAgICAgIGlmIHNlbGYuX3Byb2MucG9sbCgpICE9IE5vbmU6CkluZGV4OiBUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvcXVlcmllcy5weQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvcXVlcmllcy5weQkocmV2aXNp
b24gODk4NzIpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvcXVlcmll
cy5weQkod29ya2luZyBjb3B5KQpAQCAtMzczLDcgKzM3Myw3IEBAIGNsYXNzIENyYXNoTG9nKEFi
c3RyYWN0RGVjbGFyYXRpdmVDb21tYW4KICAgICBhcmd1bWVudF9uYW1lcyA9ICJQUk9DRVNTX05B
TUUiCiAKICAgICBkZWYgZXhlY3V0ZShzZWxmLCBvcHRpb25zLCBhcmdzLCB0b29sKToKLSAgICAg
ICAgY3Jhc2hfbG9ncyA9IENyYXNoTG9ncyh0b29sLmV4ZWN1dGl2ZSwgdG9vbC5maWxlc3lzdGVt
KQorICAgICAgICBjcmFzaF9sb2dzID0gQ3Jhc2hMb2dzKHRvb2wuZmlsZXN5c3RlbSkKICAgICAg
ICAgcHJpbnQgY3Jhc2hfbG9ncy5maW5kX25ld2VzdF9sb2coYXJnc1swXSkKIAogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>98826</attachid>
            <date>2011-06-27 17:27:16 -0700</date>
            <delta_ts>2011-06-27 17:43:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-63495-20110627172714.patch</filename>
            <type>text/plain</type>
            <size>7235</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDg5ODc4KQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMjQgQEAKKzIwMTEtMDYtMjcgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBOUldUIHNob3Vs
ZCB3YWl0IGZvciBSZXBvcnRDcmFzaAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NjM0OTUKKworICAgICAgICBXaGVuIGEgdGVzdCBjcmFzaGVzIG9uIE1h
YywgUmVwb3J0Q3Jhc2ggY29uZnVzZXMgdXMgaW50byB0aGlua2luZyB0aGUKKyAgICAgICAgdGVz
dCB0aW1lcyBvdXQuCisKKyAgICAgICAgSSdtIG5vdCBzdXJlIGhvdyB0byB0ZXN0IHRoaXMgaW4g
YSBtZWFuaW5nZnVsIHdheSBpbiBvdXIgY3VycmVudCB0ZXN0CisgICAgICAgIGhhcm5lc3MuLi4K
KworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9jcmFzaGxvZ3MucHk6
CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL2NyYXNobG9nc191bml0
dGVzdC5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRf
cGFja2FnZS90ZXN0X3Jlc3VsdF93cml0ZXIucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNlLnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL3BvcnQvbWFjLnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL3BvcnQvc2VydmVyX3Byb2Nlc3MucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJr
aXRweS90b29sL2NvbW1hbmRzL3F1ZXJpZXMucHk6CisKIDIwMTEtMDYtMjcgIEFkYW0gQmFydGgg
IDxhYmFydGhAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4K
SW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9jcmFzaGxvZ3MucHkK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL2NyYXNo
bG9ncy5weQkocmV2aXNpb24gODk4NzMpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1v
bi9zeXN0ZW0vY3Jhc2hsb2dzLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0zNiw4ICszNiw3IEBAIGRl
ZiBfaXNfY3Jhc2hfcmVwb3J0ZXIocHJvY2Vzc19uYW1lKToKIAogCiBjbGFzcyBDcmFzaExvZ3Mo
b2JqZWN0KToKLSAgICBkZWYgX19pbml0X18oc2VsZiwgZXhlY3V0aXZlLCBmaWxlc3lzdGVtKToK
LSAgICAgICAgc2VsZi5fZXhlY3V0aXZlID0gZXhlY3V0aXZlCisgICAgZGVmIF9faW5pdF9fKHNl
bGYsIGZpbGVzeXN0ZW0pOgogICAgICAgICBzZWxmLl9maWxlc3lzdGVtID0gZmlsZXN5c3RlbQog
CiAgICAgZGVmIGZpbmRfbmV3ZXN0X2xvZyhzZWxmLCBwcm9jZXNzX25hbWUpOgpAQCAtNjEsOCAr
NjAsNCBAQCBjbGFzcyBDcmFzaExvZ3Mob2JqZWN0KToKICAgICAgICAgbG9ncyA9IHNlbGYuX2Zp
bGVzeXN0ZW0uZmlsZXNfdW5kZXIobG9nX2RpcmVjdG9yeSwgZmlsZV9maWx0ZXI9aXNfY3Jhc2hf
bG9nKQogICAgICAgICBpZiBub3QgbG9nczoKICAgICAgICAgICAgIHJldHVybgotCi0gICAgICAg
ICMgRklYTUU6IFdlIHNob3VsZCB3YWl0IGZvciB0aGUgQ3Jhc2hSZXBvcnRlciB0byBmaW5pc2gs
IGJ1dCB0aGF0IGNhdXNlcyB0ZXN0cyB0byB0aW1lb3V0LgotICAgICAgICBpZiBGYWxzZToKLSAg
ICAgICAgICAgIHNlbGYuX2V4ZWN1dGl2ZS53YWl0X25ld2VzdChfaXNfY3Jhc2hfcmVwb3J0ZXIp
CiAgICAgICAgIHJldHVybiBzZWxmLl9maWxlc3lzdGVtLnJlYWRfdGV4dF9maWxlKHNvcnRlZChs
b2dzKVstMV0pCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vY3Jh
c2hsb2dzX3VuaXR0ZXN0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
Y29tbW9uL3N5c3RlbS9jcmFzaGxvZ3NfdW5pdHRlc3QucHkJKHJldmlzaW9uIDg5ODcyKQorKysg
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL2NyYXNobG9nc191bml0dGVzdC5w
eQkod29ya2luZyBjb3B5KQpAQCAtMzcsNiArMzcsNiBAQCBjbGFzcyBDcmFzaExvZ3NUZXN0KHVu
aXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgZmlsZXMgPSB7fQogICAgICAgICBmaWxlc1snL1Vz
ZXJzL21vY2svTGlicmFyeS9Mb2dzL0RpYWdub3N0aWNSZXBvcnRzL1RleHRNYXRlXzIwMTEtMDYt
MTMtMTUwNzE5X3F1YWR6ZW4uY3Jhc2gnXSA9IG1vY2tfY3Jhc2hfcmVwb3J0CiAgICAgICAgIGZp
bGVzeXN0ZW0gPSBNb2NrRmlsZVN5c3RlbShmaWxlcykKLSAgICAgICAgY3Jhc2hfbG9ncyA9IENy
YXNoTG9ncyhNb2NrKCksIGZpbGVzeXN0ZW0pCisgICAgICAgIGNyYXNoX2xvZ3MgPSBDcmFzaExv
Z3MoZmlsZXN5c3RlbSkKICAgICAgICAgbG9nID0gY3Jhc2hfbG9ncy5maW5kX25ld2VzdF9sb2co
IlRleHRNYXRlIikKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGxvZywgbW9ja19jcmFzaF9yZXBv
cnQpCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vZXhlY3V0aXZl
LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9l
eGVjdXRpdmUucHkJKHJldmlzaW9uIDg5ODcyKQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9j
b21tb24vc3lzdGVtL2V4ZWN1dGl2ZS5weQkod29ya2luZyBjb3B5KQpAQCAtMjk2LDcgKzI5Niw4
IEBAIGNsYXNzIEV4ZWN1dGl2ZShvYmplY3QpOgogICAgICAgICBydW5uaW5nX3BpZHMgPSBbXQog
CiAgICAgICAgIGlmIHN5cy5wbGF0Zm9ybSBpbiAoIndpbjMyIiwgImN5Z3dpbiIpOgotICAgICAg
ICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWQoKQorICAgICAgICAgICAgIyBGSVhNRTogcnVubmlu
Z19waWRzIGlzbid0IGltcGxlbWVudGVkIG9uIFdpbmRvd3MgeWV0Li4uCisgICAgICAgICAgICBy
ZXR1cm4gW10KIAogICAgICAgICBwc19wcm9jZXNzID0gc2VsZi5wb3BlbihbJ3BzJywgJy1lbycs
ICdwaWQsY29tbSddLCBzdGRvdXQ9c2VsZi5QSVBFLCBzdGRlcnI9c2VsZi5QSVBFKQogICAgICAg
ICBzdGRvdXQsIF8gPSBwc19wcm9jZXNzLmNvbW11bmljYXRlKCkKSW5kZXg6IFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3Rlc3RfcmVzdWx0X3dyaXRl
ci5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9s
YXlvdXRfcGFja2FnZS90ZXN0X3Jlc3VsdF93cml0ZXIucHkJKHJldmlzaW9uIDg5ODczKQorKysg
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvdGVzdF9y
ZXN1bHRfd3JpdGVyLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0xNzMsNyArMTczLDcgQEAgY2xhc3Mg
VGVzdFJlc3VsdFdyaXRlcihvYmplY3QpOgogICAgICAgICBmaWxlbmFtZSA9IHNlbGYub3V0cHV0
X2ZpbGVuYW1lKHNlbGYuRklMRU5BTUVfU1VGRklYX0NSQVNIX0xPRyArICIudHh0IikKICAgICAg
ICAgZnMubWF5YmVfbWFrZV9kaXJlY3RvcnkoZnMuZGlybmFtZShmaWxlbmFtZSkpCiAgICAgICAg
ICMgRklYTUU6IFdlIHNob3VsZG4ndCBiZSBncmFiYmluZyBwcml2YXRlIG1lbWJlcnMgb2YgcG9y
dC4KLSAgICAgICAgY3Jhc2hfbG9ncyA9IENyYXNoTG9ncyhzZWxmLl9wb3J0Ll9leGVjdXRpdmUs
IGZzKQorICAgICAgICBjcmFzaF9sb2dzID0gQ3Jhc2hMb2dzKGZzKQogICAgICAgICBsb2cgPSBj
cmFzaF9sb2dzLmZpbmRfbmV3ZXN0X2xvZyhzZWxmLl9wb3J0LmRyaXZlcl9uYW1lKCkpCiAgICAg
ICAgICMgQ3Jhc2hMb2dzIGRvZXNuJ3Qgc3VwcG9ydCBldmVyeSBwbGF0Zm9ybSwgc28gd2UgZmFs
bCBiYWNrIHRvCiAgICAgICAgICMgaW5jbHVkaW5nIHRoZSBzdGRlcnIgb3V0cHV0LCB3aGljaCBp
cyBhZG1pdHRlZGx5IHNvbWV3aGF0IHJlZHVuZGFudC4KSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYmFzZS5weQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Jhc2UucHkJKHJldmlzaW9uIDg5ODcyKQor
KysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNlLnB5CSh3b3Jr
aW5nIGNvcHkpCkBAIC0yODgsNiArMjg4LDkgQEAgY2xhc3MgUG9ydChvYmplY3QpOgogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0dWFsX2ZpbGVuYW1lKQogICAgICAgICBy
ZXR1cm4gJycuam9pbihkaWZmKQogCisgICAgZGVmIGlzX2NyYXNoX3JlcG9ydGVyKHNlbGYsIHBy
b2Nlc3NfbmFtZSk6CisgICAgICAgIHJldHVybiBGYWxzZQorCiAgICAgZGVmIGRyaXZlcl9uYW1l
KHNlbGYpOgogICAgICAgICAiIiJSZXR1cm5zIHRoZSBuYW1lIG9mIHRoZSBhY3R1YWwgYmluYXJ5
IHRoYXQgaXMgcGVyZm9ybWluZyB0aGUgdGVzdCwKICAgICAgICAgc28gdGhhdCBpdCBjYW4gYmUg
cmVmZXJyZWQgdG8gaW4gbG9nIG1lc3NhZ2VzLiBJbiBtb3N0IGNhc2VzIHRoaXMKSW5kZXg6IFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvbWFjLnB5Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvbWFjLnB5CShyZXZp
c2lvbiA4OTg3MikKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQv
bWFjLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3IEBACiAKIGltcG9ydCBsb2dnaW5n
CiBpbXBvcnQgcGxhdGZvcm0KK2ltcG9ydCByZQogCiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0
cy5wb3J0LndlYmtpdCBpbXBvcnQgV2ViS2l0UG9ydAogCkBAIC05OSw2ICsxMDAsOSBAQCBjbGFz
cyBNYWNQb3J0KFdlYktpdFBvcnQpOgogICAgICAgICByZXR1cm4gc2VsZi5wYXRoX2Zyb21fd2Vi
a2l0X2Jhc2UoJ0xheW91dFRlc3RzJywgJ3BsYXRmb3JtJywKICAgICAgICAgICAgJ21hYycsICd0
ZXN0X2V4cGVjdGF0aW9ucy50eHQnKQogCisgICAgZGVmIGlzX2NyYXNoX3JlcG9ydGVyKHNlbGYs
IHByb2Nlc3NfbmFtZSk6CisgICAgICAgIHJldHVybiByZS5zZWFyY2gocidSZXBvcnRDcmFzaCcs
IHByb2Nlc3NfbmFtZSkKKwogICAgIGRlZiBfc2tpcHBlZF9maWxlX3BhdGhzKHNlbGYpOgogICAg
ICAgICAjIEZJWE1FOiBUaGlzIG1ldGhvZCB3aWxsIG5lZWQgdG8gYmUgbWFkZSB3b3JrIGZvciBu
b24tbWFjCiAgICAgICAgICMgcGxhdGZvcm1zIGFuZCBtb3ZlZCBpbnRvIGJhc2UuUG9ydC4KSW5k
ZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvc2VydmVyX3Byb2Nl
c3MucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
cG9ydC9zZXJ2ZXJfcHJvY2Vzcy5weQkocmV2aXNpb24gODk4NzIpCisrKyBUb29scy9TY3JpcHRz
L3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3NlcnZlcl9wcm9jZXNzLnB5CSh3b3JraW5nIGNv
cHkpCkBAIC0xNjcsNiArMTY3LDEwIEBAIGNsYXNzIFNlcnZlclByb2Nlc3M6CiAgICAgICAgIHNl
bGVjdF9mZHMgPSAob3V0X2ZkLCBlcnJfZmQpCiAgICAgICAgIGRlYWRsaW5lID0gdGltZS50aW1l
KCkgKyB0aW1lb3V0CiAgICAgICAgIHdoaWxlIG5vdCBzZWxmLnRpbWVkX291dCBhbmQgbm90IHNl
bGYuY3Jhc2hlZDoKKyAgICAgICAgICAgIGlmIHNlbGYuX2V4ZWN1dGl2ZS5ydW5uaW5nX3BpZHMo
c2VsZi5fcG9ydC5pc19jcmFzaF9yZXBvcnRlcik6CisgICAgICAgICAgICAgICAgX2xvZy53YXJu
aW5nKCdXYWl0aW5nIGZvciBjcmFzaCByZXBvcnRlci4uLicpCisgICAgICAgICAgICAgICAgc2Vs
Zi5fZXhlY3V0aXZlLndhaXRfbmV3ZXN0KHNlbGYuX3BvcnQuaXNfY3Jhc2hfcmVwb3J0ZXIpCisK
ICAgICAgICAgICAgICMgcG9sbCgpIGlzIG5vdCB0aHJlYWRzYWZlIGFuZCBjYW4gdGhyb3cgT1NF
cnJvciBkdWUgdG86CiAgICAgICAgICAgICAjIGh0dHA6Ly9idWdzLnB5dGhvbi5vcmcvaXNzdWUx
NzMxNzE3CiAgICAgICAgICAgICBpZiBzZWxmLl9wcm9jLnBvbGwoKSAhPSBOb25lOgpJbmRleDog
VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3F1ZXJpZXMucHkKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3F1ZXJpZXMucHkJKHJl
dmlzaW9uIDg5ODcyKQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3F1
ZXJpZXMucHkJKHdvcmtpbmcgY29weSkKQEAgLTM3Myw3ICszNzMsNyBAQCBjbGFzcyBDcmFzaExv
ZyhBYnN0cmFjdERlY2xhcmF0aXZlQ29tbWFuCiAgICAgYXJndW1lbnRfbmFtZXMgPSAiUFJPQ0VT
U19OQU1FIgogCiAgICAgZGVmIGV4ZWN1dGUoc2VsZiwgb3B0aW9ucywgYXJncywgdG9vbCk6Ci0g
ICAgICAgIGNyYXNoX2xvZ3MgPSBDcmFzaExvZ3ModG9vbC5leGVjdXRpdmUsIHRvb2wuZmlsZXN5
c3RlbSkKKyAgICAgICAgY3Jhc2hfbG9ncyA9IENyYXNoTG9ncyh0b29sLmZpbGVzeXN0ZW0pCiAg
ICAgICAgIHByaW50IGNyYXNoX2xvZ3MuZmluZF9uZXdlc3RfbG9nKGFyZ3NbMF0pCiAKIAo=
</data>
<flag name="review"
          id="93148"
          type_id="1"
          status="+"
          setter="eric"
    />
          </attachment>
      

    </bug>

</bugzilla>