<?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>77781</bug_id>
          
          <creation_ts>2012-02-03 14:41:10 -0800</creation_ts>
          <short_desc>webkitpy: change exit() calls to sys.exit(), fix a leak in outputcapture</short_desc>
          <delta_ts>2012-02-03 17:41:26 -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>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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Dirk Pranke">dpranke</reporter>
          <assigned_to name="Dirk Pranke">dpranke</assigned_to>
          <cc>abarth</cc>
    
    <cc>eric</cc>
    
    <cc>ojan</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>549104</commentid>
    <comment_count>0</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-02-03 14:41:10 -0800</bug_when>
    <thetext>webkitpy: change exit() calls to sys.exit(), fix a leak in outputcapture</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>549133</commentid>
    <comment_count>1</comment_count>
      <attachid>125426</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-02-03 14:56:07 -0800</bug_when>
    <thetext>Created attachment 125426
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>549224</commentid>
    <comment_count>2</comment_count>
      <attachid>125426</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-02-03 16:24:20 -0800</bug_when>
    <thetext>Comment on attachment 125426
Patch

http://docs.python.org/library/sys.html#sys.exit

So I guess the downside of calling exit() is that it only works from the main thread?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>549226</commentid>
    <comment_count>3</comment_count>
      <attachid>125426</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-02-03 16:28:18 -0800</bug_when>
    <thetext>Comment on attachment 125426
Patch

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

&gt; Tools/Scripts/webkitpy/common/system/outputcapture.py:84
&gt; +        try:
&gt; +            if expected_exception:
&gt; +                return_value = testcase.assertRaises(expected_exception, function, *args, **kwargs)
&gt; +            else:
&gt; +                return_value = function(*args, **kwargs)
&gt; +        finally:
&gt; +            (stdout_string, stderr_string, logs_string) = self.restore_output()
&gt; +

So when does this leak?  And how does this leak manifest?  I assume we hit this if an exception is thrown during a unittest?  The unittest framework will catch the exception for us and continue, but our output will never get restored?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>549229</commentid>
    <comment_count>4</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-02-03 16:36:46 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 125426 [details])
&gt; http://docs.python.org/library/sys.html#sys.exit
&gt; 
&gt; So I guess the downside of calling exit() is that it only works from the main thread?

sys.exit(), yes. Fortunately, as far as I know, we don&apos;t use multiple threads anywhere in webkitpy :).

Note that there is a note in the python docs commenting that exit() shouldn&apos;t be used outside of the interpreter:

http://docs.python.org/library/constants.html

(In reply to comment #3)
&gt; (From update of attachment 125426 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=125426&amp;action=review
&gt; 
&gt; &gt; Tools/Scripts/webkitpy/common/system/outputcapture.py:84
&gt; &gt; +        try:
&gt; &gt; +            if expected_exception:
&gt; &gt; +                return_value = testcase.assertRaises(expected_exception, function, *args, **kwargs)
&gt; &gt; +            else:
&gt; &gt; +                return_value = function(*args, **kwargs)
&gt; &gt; +        finally:
&gt; &gt; +            (stdout_string, stderr_string, logs_string) = self.restore_output()
&gt; &gt; +
&gt; 
&gt; So when does this leak?

This leaked if expected_exception was not set or if expected_exception was the wrong class.  

&gt; And how does this leak manifest?  I assume we hit this if an exception is thrown during a unittest?  The unittest framework will catch the exception for us and continue, but our output will never get restored?

Yup, you got it. I discovered it when I had a breakpoint set in the python debugger that would fire after all of tests were done being run; pdb would error out since stdin and stderr were messed up.

I have forgotten if the tests in question were actually written incorrectly and should be fixed; I can go back and check that as part of this if you like. I can also add a test to outputcapture_unittest for this if you like, but I&apos;m not always a fan of writing tests for tests, so I was waffling and/or lazy :).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>549248</commentid>
    <comment_count>5</comment_count>
      <attachid>125426</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-02-03 16:57:07 -0800</bug_when>
    <thetext>Comment on attachment 125426
Patch

seems oK.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>549282</commentid>
    <comment_count>6</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-02-03 17:41:26 -0800</bug_when>
    <thetext>Committed r106721: &lt;http://trac.webkit.org/changeset/106721&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>125426</attachid>
            <date>2012-02-03 14:56:07 -0800</date>
            <delta_ts>2012-02-03 16:57:07 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-77781-20120203145606.patch</filename>
            <type>text/plain</type>
            <size>11090</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA2NTkyCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggOWRjNzEyNDJhMWI3NzQ4MGQzY2I5ZTBmMDNmNjY3NDVl
YzNjMWNhMi4uY2EzMDRhNTExNzBjNTljZjkyYmRlN2YyNTM5NDg5YTI1OGI3ZDA0ZiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQz
IEBACisyMDEyLTAyLTAzICBEaXJrIFByYW5rZSAgPGRwcmFua2VAY2hyb21pdW0ub3JnPgorCisg
ICAgICAgIHdlYmtpdHB5OiBjaGFuZ2UgZXhpdCgpIGNhbGxzIHRvIHN5cy5leGl0KCksIGZpeCBh
IGxlYWsgaW4gb3V0cHV0Y2FwdHVyZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9Nzc3ODEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBUaGlzIGNoYW5nZSBmaXhlcyBhIGNvdXBsZSBvZiBpc3N1ZXMgZGlzY292
ZXJlZCB3aGlsZSBkZWJ1Z2dpbmcKKyAgICAgICAgdGVzdC13ZWJraXRweTsgYm90aCBjYWxsaW5n
IGV4aXQoKSBpbnN0ZWFkIG9mIHN5cy5leGl0KCkgLS0KKyAgICAgICAgd2hpY2ggaXMgZGlzY291
cmFnZWQgaW4gcHJvZ3JhbSBjb2RlIGluc3RlYWQgb2YgdGhlIGludGVycHJldGVyCisgICAgICAg
IC0tIGFuZCBhIHBhcnRpY3VsYXIgdXNhZ2Ugb2Ygb3V0cHV0Y2FwdHVyZSB3ZXJlIHN0ZGluIHRv
IGdldCB3aGFja2VkCisgICAgICAgIGFuZCBwcmV2ZW50aW5nIGRlYnVnZ2luZy4KKyAgICAgICAK
KyAgICAgICAgVGhpcyBjaGFuZ2UgaW50cm9kdWNlcyBhIGNvdXBsZSBvZiBjb21tb24gX2V4aXQo
KSBtZXRob2RzIHRoYXQKKyAgICAgICAgd2lsbCBzdGFuZGFyZGl6ZSBob3cgd2Via2l0LXBhdGNo
IGV4aXQncywgaW4gY2FzZSB3ZSBuZWVkIHRvIGRvCisgICAgICAgIHNvbWV0aGluZyBkaWZmZXJl
bnQgaW4gdGhlIGZ1dHVyZS4KKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5
c3RlbS9kZXByZWNhdGVkX2xvZ2dpbmcucHk6CisgICAgICAgIChlcnJvcik6CisgICAgICAgICog
U2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL291dHB1dGNhcHR1cmUucHk6CisgICAgICAg
IChPdXRwdXRDYXB0dXJlLmFzc2VydF9vdXRwdXRzKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtp
dHB5L3Rvb2wvYm90L3F1ZXVlZW5naW5lLnB5OgorICAgICAgICAoUXVldWVFbmdpbmUuZXhpdF9h
ZnRlcl9oYW5kbGVkX2Vycm9yKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29t
bWFuZHMvYWJzdHJhY3RzZXF1ZW5jZWRjb21tYW5kLnB5OgorICAgICAgICAoQWJzdHJhY3RTZXF1
ZW5jZWRDb21tYW5kLmV4ZWN1dGUpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdG9vbC9j
b21tYW5kcy9xdWV1ZXMucHk6CisgICAgICAgIChTdHlsZVF1ZXVlLmhhbmRsZV9zY3JpcHRfZXJy
b3IpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy91cGxvYWQucHk6
CisgICAgICAgIChNYXJrQnVnRml4ZWQuZXhlY3V0ZSk6CisgICAgICAgICogU2NyaXB0cy93ZWJr
aXRweS90b29sL211bHRpY29tbWFuZHRvb2wucHk6CisgICAgICAgIChDb21tYW5kLl9leGl0KToK
KyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvYWJzdHJhY3RzdGVwLnB5Ogor
ICAgICAgICAoQWJzdHJhY3RTdGVwLl9leGl0KToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5
L3Rvb2wvc3RlcHMvY2hlY2tzdHlsZS5weToKKyAgICAgICAgKENoZWNrU3R5bGUucnVuKToKKyAg
ICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvY29tbWl0LnB5OgorICAgICAgICAo
Q29tbWl0Ll9jaGVja190ZXN0X2V4cGVjdGF0aW9ucyk6CisgICAgICAgICogU2NyaXB0cy93ZWJr
aXRweS90b29sL3N0ZXBzL2NvbmZpcm1kaWZmLnB5OgorICAgICAgICAoQ29uZmlybURpZmYucnVu
KToKKwogMjAxMi0wMi0wMiAgRGlyayBQcmFua2UgIDxkcHJhbmtlQGNocm9taXVtLm9yZz4KIAog
ICAgICAgIG5yd3Qgc2hvdWxkbid0IGJsb3cgdXAgd2hlbiB0aGVyZSBhcmUgZXJyb3JzIGluIHRl
c3RfZXhwZWN0YXRpb25zLnR4dApkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9j
b21tb24vc3lzdGVtL2RlcHJlY2F0ZWRfbG9nZ2luZy5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvY29tbW9uL3N5c3RlbS9kZXByZWNhdGVkX2xvZ2dpbmcucHkKaW5kZXggOWU2YjUyOThmNmJk
NWRiNTQzNjkzYjYxN2ZiN2NiMjAzYjA0MDhkMi4uMTM3NTM1NDM4YTk4N2ZmOTQ4NTk4NmUwMmUw
MzU1MmZhZmE5YmYyNCAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24v
c3lzdGVtL2RlcHJlY2F0ZWRfbG9nZ2luZy5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L2NvbW1vbi9zeXN0ZW0vZGVwcmVjYXRlZF9sb2dnaW5nLnB5CkBAIC00MSw3ICs0MSw3IEBAIGRl
ZiBsb2coc3RyaW5nKToKIAogZGVmIGVycm9yKHN0cmluZyk6CiAgICAgbG9nKCJFUlJPUjogJXMi
ICUgc3RyaW5nKQotICAgIGV4aXQoMSkKKyAgICBzeXMuZXhpdCgxKQogCiAKICMgU2ltcGxlIGNs
YXNzIHRvIHNwbGl0IG91dHB1dCBiZXR3ZWVuIG11bHRpcGxlIGRlc3RpbmF0aW9ucwpkaWZmIC0t
Z2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL291dHB1dGNhcHR1cmUu
cHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vb3V0cHV0Y2FwdHVyZS5w
eQppbmRleCBjYjZlZGJlYzc3OWQ5YWZiNzZjOGM4YzcyNTdjOWJjNjg3NDE3M2EyLi42NjE4OGMw
Y2JlNzdlMDAzYmI1NGE0NTY3M2JlZWIzNDk5YWMwNzIyIDEwMDY0NAotLS0gYS9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vb3V0cHV0Y2FwdHVyZS5weQorKysgYi9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vb3V0cHV0Y2FwdHVyZS5weQpAQCAtNzQsMTEg
Kzc0LDE0IEBAIGNsYXNzIE91dHB1dENhcHR1cmUob2JqZWN0KToKIAogICAgIGRlZiBhc3NlcnRf
b3V0cHV0cyhzZWxmLCB0ZXN0Y2FzZSwgZnVuY3Rpb24sIGFyZ3M9W10sIGt3YXJncz17fSwgZXhw
ZWN0ZWRfc3Rkb3V0PSIiLCBleHBlY3RlZF9zdGRlcnI9IiIsIGV4cGVjdGVkX2V4Y2VwdGlvbj1O
b25lLCBleHBlY3RlZF9sb2dzPU5vbmUpOgogICAgICAgICBzZWxmLmNhcHR1cmVfb3V0cHV0KCkK
LSAgICAgICAgaWYgZXhwZWN0ZWRfZXhjZXB0aW9uOgotICAgICAgICAgICAgcmV0dXJuX3ZhbHVl
ID0gdGVzdGNhc2UuYXNzZXJ0UmFpc2VzKGV4cGVjdGVkX2V4Y2VwdGlvbiwgZnVuY3Rpb24sICph
cmdzLCAqKmt3YXJncykKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJldHVybl92YWx1ZSA9
IGZ1bmN0aW9uKCphcmdzLCAqKmt3YXJncykKLSAgICAgICAgKHN0ZG91dF9zdHJpbmcsIHN0ZGVy
cl9zdHJpbmcsIGxvZ3Nfc3RyaW5nKSA9IHNlbGYucmVzdG9yZV9vdXRwdXQoKQorICAgICAgICB0
cnk6CisgICAgICAgICAgICBpZiBleHBlY3RlZF9leGNlcHRpb246CisgICAgICAgICAgICAgICAg
cmV0dXJuX3ZhbHVlID0gdGVzdGNhc2UuYXNzZXJ0UmFpc2VzKGV4cGVjdGVkX2V4Y2VwdGlvbiwg
ZnVuY3Rpb24sICphcmdzLCAqKmt3YXJncykKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAg
ICAgICAgcmV0dXJuX3ZhbHVlID0gZnVuY3Rpb24oKmFyZ3MsICoqa3dhcmdzKQorICAgICAgICBm
aW5hbGx5OgorICAgICAgICAgICAgKHN0ZG91dF9zdHJpbmcsIHN0ZGVycl9zdHJpbmcsIGxvZ3Nf
c3RyaW5nKSA9IHNlbGYucmVzdG9yZV9vdXRwdXQoKQorCiAgICAgICAgIHRlc3RjYXNlLmFzc2Vy
dEVxdWFsKHN0ZG91dF9zdHJpbmcsIGV4cGVjdGVkX3N0ZG91dCkKICAgICAgICAgdGVzdGNhc2Uu
YXNzZXJ0RXF1YWwoc3RkZXJyX3N0cmluZywgZXhwZWN0ZWRfc3RkZXJyKQogICAgICAgICBpZiBl
eHBlY3RlZF9sb2dzIGlzIG5vdCBOb25lOgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS90b29sL2JvdC9xdWV1ZWVuZ2luZS5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9v
bC9ib3QvcXVldWVlbmdpbmUucHkKaW5kZXggMmYwODdiZmNkNWIyZDk3MmI3YjJkYzhjMWFkMTdj
YzY0MmMzNzQ0YS4uNzUyZWY3NDhhY2NmM2M2MjNjMzQ5MjVhYjVmMmI1YjAwNTBkODA4ZSAxMDA2
NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2JvdC9xdWV1ZWVuZ2luZS5weQor
KysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvYm90L3F1ZXVlZW5naW5lLnB5CkBAIC0y
OCw2ICsyOCw3IEBACiAjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKIGltcG9ydCBvcworaW1wb3J0IHN5cwogaW1w
b3J0IHRpbWUKIGltcG9ydCB0cmFjZWJhY2sKIApAQCAtODYsNyArODcsNyBAQCBjbGFzcyBRdWV1
ZUVuZ2luZToKICAgICBAY2xhc3NtZXRob2QKICAgICBkZWYgZXhpdF9hZnRlcl9oYW5kbGVkX2Vy
cm9yKGNscywgZXJyb3IpOgogICAgICAgICBsb2coZXJyb3IpCi0gICAgICAgIGV4aXQoY2xzLmhh
bmRsZWRfZXJyb3JfY29kZSkKKyAgICAgICAgc3lzLmV4aXQoY2xzLmhhbmRsZWRfZXJyb3JfY29k
ZSkKIAogICAgIGRlZiBydW4oc2VsZik6CiAgICAgICAgIHNlbGYuX2JlZ2luX2xvZ2dpbmcoKQpk
aWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL2Fic3RyYWN0
c2VxdWVuY2VkY29tbWFuZC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5k
cy9hYnN0cmFjdHNlcXVlbmNlZGNvbW1hbmQucHkKaW5kZXggZmQxMDg5MDU2ZjUzYTk1YWMxZDll
YWIxZDY5NDVlZGIxMzI4MWYzNC4uNWVhZjI0OWM1NWEzZDJiMDQwYTE2ZTRkZmRjNGU0NjZkNDNk
Y2Y4ZCAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL2Fi
c3RyYWN0c2VxdWVuY2VkY29tbWFuZC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rv
b2wvY29tbWFuZHMvYWJzdHJhY3RzZXF1ZW5jZWRjb21tYW5kLnB5CkBAIC00Niw2ICs0Niw2IEBA
IGNsYXNzIEFic3RyYWN0U2VxdWVuY2VkQ29tbWFuZChBYnN0cmFjdERlY2xhcmF0aXZlQ29tbWFu
ZCk6CiAgICAgICAgICAgICBzdGF0ZSA9IHNlbGYuX3ByZXBhcmVfc3RhdGUob3B0aW9ucywgYXJn
cywgdG9vbCkKICAgICAgICAgZXhjZXB0IFNjcmlwdEVycm9yLCBlOgogICAgICAgICAgICAgbG9n
KGUubWVzc2FnZV93aXRoX291dHB1dCgpKQotICAgICAgICAgICAgZXhpdChlLmV4aXRfY29kZSBv
ciAyKQorICAgICAgICAgICAgc2VsZi5fZXhpdChlLmV4aXRfY29kZSBvciAyKQogCiAgICAgICAg
IHNlbGYuX3NlcXVlbmNlLnJ1bl9hbmRfaGFuZGxlX2Vycm9ycyh0b29sLCBvcHRpb25zLCBzdGF0
ZSkKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9xdWV1
ZXMucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvcXVldWVzLnB5Cmlu
ZGV4IGY2MWE2Mzk5MTk5YTc5YzgzZjA4ZWM2ZGY3ZjZmOWM4OWQ4YmU5NTIuLmJhYmU2MzFkNTMy
NGQwMWFlYzkxOGQ4OWYxMGM2MjIxM2VjNTQzZjQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvdG9vbC9jb21tYW5kcy9xdWV1ZXMucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS90b29sL2NvbW1hbmRzL3F1ZXVlcy5weQpAQCAtMzAsOSArMzAsMTAgQEAKIGZyb20gX19m
dXR1cmVfXyBpbXBvcnQgd2l0aF9zdGF0ZW1lbnQKIAogaW1wb3J0IGNvZGVjcworaW1wb3J0IG9z
CitpbXBvcnQgc3lzCiBpbXBvcnQgdGltZQogaW1wb3J0IHRyYWNlYmFjawotaW1wb3J0IG9zCiAK
IGZyb20gZGF0ZXRpbWUgaW1wb3J0IGRhdGV0aW1lCiBmcm9tIG9wdHBhcnNlIGltcG9ydCBtYWtl
X29wdGlvbgpAQCAtNDQwLDQgKzQ0MSw0IEBAIGNsYXNzIFN0eWxlUXVldWUoQWJzdHJhY3RSZXZp
ZXdRdWV1ZSk6CiAgICAgICAgICAgICBRdWV1ZUVuZ2luZS5leGl0X2FmdGVyX2hhbmRsZWRfZXJy
b3Ioc2NyaXB0X2Vycm9yKQogICAgICAgICBtZXNzYWdlID0gIkF0dGFjaG1lbnQgJXMgZGlkIG5v
dCBwYXNzICVzOlxuXG4lc1xuXG5JZiBhbnkgb2YgdGhlc2UgZXJyb3JzIGFyZSBmYWxzZSBwb3Np
dGl2ZXMsIHBsZWFzZSBmaWxlIGEgYnVnIGFnYWluc3QgY2hlY2std2Via2l0LXN0eWxlLiIgJSAo
c3RhdGVbInBhdGNoIl0uaWQoKSwgY2xzLm5hbWUsIHNjcmlwdF9lcnJvci5tZXNzYWdlX3dpdGhf
b3V0cHV0KG91dHB1dF9saW1pdD0zKjEwMjQpKQogICAgICAgICB0b29sLmJ1Z3MucG9zdF9jb21t
ZW50X3RvX2J1ZyhzdGF0ZVsicGF0Y2giXS5idWdfaWQoKSwgbWVzc2FnZSwgY2M9Y2xzLndhdGNo
ZXJzKQotICAgICAgICBleGl0KDEpCisgICAgICAgIHN5cy5leGl0KDEpCmRpZmYgLS1naXQgYS9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvdXBsb2FkLnB5IGIvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3VwbG9hZC5weQppbmRleCAxNDM2YTkzNzhlYjMx
ZWE4ZTExMmVkZTk2MWY0ODJhOTAyYWVlMzI3Li5mZjZkMjJlYWU3NWQxODY2NWEyYjFlMTk0OTg3
N2RhNjhiNTJiYzRhIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29t
bWFuZHMvdXBsb2FkLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5k
cy91cGxvYWQucHkKQEAgLTQxMCw3ICs0MTAsNyBAQCBjbGFzcyBNYXJrQnVnRml4ZWQoQWJzdHJh
Y3REZWNsYXJhdGl2ZUNvbW1hbmQpOgogCiAgICAgICAgIGlmIG5lZWRzX3Byb21wdDoKICAgICAg
ICAgICAgIGlmIG5vdCB0b29sLnVzZXIuY29uZmlybSgiSXMgdGhpcyBjb3JyZWN0PyIpOgotICAg
ICAgICAgICAgICAgIGV4aXQoMSkKKyAgICAgICAgICAgICAgICBzZWxmLl9leGl0KDEpCiAKICAg
ICAgICAgYnVnX2NvbW1lbnQgPSBidWdfY29tbWVudF9mcm9tX3N2bl9yZXZpc2lvbihzdm5fcmV2
aXNpb24pCiAgICAgICAgIGlmIG9wdGlvbnMuY29tbWVudDoKZGlmZiAtLWdpdCBhL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvdG9vbC9tdWx0aWNvbW1hbmR0b29sLnB5IGIvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS90b29sL211bHRpY29tbWFuZHRvb2wucHkKaW5kZXggNDg0OGFlNTMyYTUwMzVlYTg0
MTUyZjU2OWVkMDFiMTYyNWQ2NjU2Yy4uMzhjNDEwY2Y4OWQ2YjViYTJlYTQ2ZGZmYWU4ODNiMjgy
Y2M1ZjM4NCAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL211bHRpY29t
bWFuZHRvb2wucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL211bHRpY29tbWFu
ZHRvb2wucHkKQEAgLTU4LDYgKzU4LDkgQEAgY2xhc3MgQ29tbWFuZChvYmplY3QpOgogICAgICAg
ICAjIFRoaXMgZGVmYXVsdCBwYXJzZXIgd2lsbCBiZSB1c2VkIGZvciBzdGFuZGFsb25lX2hlbHAg
cHJpbnRpbmcuCiAgICAgICAgIHNlbGYub3B0aW9uX3BhcnNlciA9IEhlbHBQcmludGluZ09wdGlv
blBhcnNlcih1c2FnZT1TVVBQUkVTU19VU0FHRSwgYWRkX2hlbHBfb3B0aW9uPUZhbHNlLCBvcHRp
b25fbGlzdD1zZWxmLm9wdGlvbnMpCiAKKyAgICBkZWYgX2V4aXQoc2VsZiwgY29kZSk6CisgICAg
ICAgIHN5cy5leGl0KGNvZGUpCisKICAgICAjIFRoaXMgZGVzaWduIGlzIHNsaWdodGx5IGF3a3dh
cmQsIGJ1dCB3ZSBuZWVkIHRoZQogICAgICMgdGhlIHRvb2wgdG8gYmUgYWJsZSB0byBjcmVhdGUg
YW5kIG1vZGlmeSB0aGUgb3B0aW9uX3BhcnNlcgogICAgICMgYmVmb3JlIGl0IGtub3dzIHdoYXQg
Q29tbWFuZCB0byBydW4uCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wv
c3RlcHMvYWJzdHJhY3RzdGVwLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBz
L2Fic3RyYWN0c3RlcC5weQppbmRleCA1YWM5NzZmOWVlZjhmODkyNjU2NTFmNjQwZDQzYTUwNTdk
YmY1NTRmLi5kYjBjMGQ1YTg3MGNhNzUwMzJjYTgzNWY1OWUzMDlhYzhiMTZmNWFjIDEwMDY0NAot
LS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvYWJzdHJhY3RzdGVwLnB5Cisr
KyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9hYnN0cmFjdHN0ZXAucHkKQEAg
LTI2LDYgKzI2LDggQEAKICMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKK2ltcG9ydCBz
eXMKKwogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmV4ZWN1dGl2ZSBpbXBvcnQgU2NyaXB0
RXJyb3IKIGZyb20gd2Via2l0cHkuY29tbW9uLmNvbmZpZy5wb3J0cyBpbXBvcnQgV2ViS2l0UG9y
dAogZnJvbSB3ZWJraXRweS50b29sLnN0ZXBzLm9wdGlvbnMgaW1wb3J0IE9wdGlvbnMKQEAgLTM2
LDYgKzM4LDkgQEAgY2xhc3MgQWJzdHJhY3RTdGVwKG9iamVjdCk6CiAgICAgICAgIHNlbGYuX3Rv
b2wgPSB0b29sCiAgICAgICAgIHNlbGYuX29wdGlvbnMgPSBvcHRpb25zCiAKKyAgICBkZWYgX2V4
aXQoc2VsZiwgY29kZSk6CisgICAgICAgIHN5cy5leGl0KGNvZGUpCisKICAgICBkZWYgX2NoYW5n
ZWRfZmlsZXMoc2VsZiwgc3RhdGUpOgogICAgICAgICByZXR1cm4gc2VsZi5jYWNoZWRfbG9va3Vw
KHN0YXRlLCAiY2hhbmdlZF9maWxlcyIpCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvdG9vbC9zdGVwcy9jaGVja3N0eWxlLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90
b29sL3N0ZXBzL2NoZWNrc3R5bGUucHkKaW5kZXggYTFhMzE4MTM0YWM4OTIwMjAzMmM3NWFiNDg5
NzVjZGU0MDllYmExMC4uZjYwMGQxN2QwMDY0ZjI3NWQ4MGNhYzk1ODdkMDNkYmE2NjU2ODlhZiAx
MDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL2NoZWNrc3R5bGUu
cHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL2NoZWNrc3R5bGUucHkK
QEAgLTY3LDQgKzY3LDQgQEAgY2xhc3MgQ2hlY2tTdHlsZShBYnN0cmFjdFN0ZXApOgogICAgICAg
ICAgICAgICAgICMgc3R5bGUtcXVldWUgZG8gdGhlIHJpZ2h0IHRoaW5nLgogICAgICAgICAgICAg
ICAgIHJhaXNlIGUKICAgICAgICAgICAgIGlmIG5vdCBzZWxmLl90b29sLnVzZXIuY29uZmlybSgi
QXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGNvbnRpbnVlPyIpOgotICAgICAgICAgICAgICAgIGV4
aXQoMSkKKyAgICAgICAgICAgICAgICBzZWxmLl9leGl0KDEpCmRpZmYgLS1naXQgYS9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvY29tbWl0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS90b29sL3N0ZXBzL2NvbW1pdC5weQppbmRleCBlOGZjMzkyYmFhMmU3NDE3MTQ1MmQ0MzFl
ZjkzNmQ1N2Q5Y2M1MmNjLi45ZTY5ZTc5ODBjZDU4ZTY2Y2QzMzVkODgwNmJhZGEzNWU3ZDdhNWI5
IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvY29tbWl0LnB5
CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9jb21taXQucHkKQEAgLTI2
LDYgKzI2LDggQEAKICMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKK2ltcG9ydCBzeXMK
KwogZnJvbSB3ZWJraXRweS5jb21tb24uY2hlY2tvdXQuc2NtIGltcG9ydCBBdXRoZW50aWNhdGlv
bkVycm9yLCBBbWJpZ3VvdXNDb21taXRFcnJvcgogZnJvbSB3ZWJraXRweS5jb21tb24uY29uZmln
IGltcG9ydCB1cmxzCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZGVwcmVjYXRlZF9sb2dn
aW5nIGltcG9ydCBsb2cKQEAgLTY1LDcgKzY3LDcgQEAgY2xhc3MgQ29tbWl0KEFic3RyYWN0U3Rl
cCk6CiAgICAgICAgICAgICBzZWxmLl90b29sLmV4ZWN1dGl2ZS5ydW5fYW5kX3Rocm93X2lmX2Zh
aWwoc2VsZi5fdG9vbC5wb3J0KCkuY2hlY2tfd2Via2l0X3N0eWxlX2NvbW1hbmQoKSArIGFyZ3Ms
IGN3ZD1zZWxmLl90b29sLnNjbSgpLmNoZWNrb3V0X3Jvb3QpCiAgICAgICAgIGV4Y2VwdCBTY3Jp
cHRFcnJvciwgZToKICAgICAgICAgICAgIGlmIG5vdCBzZWxmLl90b29sLnVzZXIuY29uZmlybSgi
QXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGNvbnRpbnVlPyIsIGRlZmF1bHQ9Im4iKToKLSAgICAg
ICAgICAgICAgICBleGl0KDEpCisgICAgICAgICAgICAgICAgc2VsZi5fZXhpdCgxKQogCiAgICAg
ZGVmIHJ1bihzZWxmLCBzdGF0ZSk6CiAgICAgICAgIHNlbGYuX2NvbW1pdF9tZXNzYWdlID0gc2Vs
Zi5fdG9vbC5jaGVja291dCgpLmNvbW1pdF9tZXNzYWdlX2Zvcl90aGlzX2NvbW1pdChzZWxmLl9v
cHRpb25zLmdpdF9jb21taXQpLm1lc3NhZ2UoKQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS90b29sL3N0ZXBzL2NvbmZpcm1kaWZmLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS90b29sL3N0ZXBzL2NvbmZpcm1kaWZmLnB5CmluZGV4IDdlOGUzNDg5ODE0YjNmZTlhNDFiNjNm
ZDY1ODZmZGFkMDM2MGQ4NWQuLjg2YzhhMmM4ZDJhOGJiMTdmYTVkYmY4YjE3MThiOGFhNDMwZGEy
ZTIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9jb25maXJt
ZGlmZi5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvY29uZmlybWRp
ZmYucHkKQEAgLTc0LDQgKzc0LDQgQEAgY2xhc3MgQ29uZmlybURpZmYoQWJzdHJhY3RTdGVwKToK
ICAgICAgICAgaWYgcHJldHR5X2RpZmZfZmlsZToKICAgICAgICAgICAgIHByZXR0eV9kaWZmX2Zp
bGUuY2xvc2UoKQogICAgICAgICBpZiBub3QgZGlmZl9jb3JyZWN0OgotICAgICAgICAgICAgZXhp
dCgxKQorICAgICAgICAgICAgc2VsZi5fZXhpdCgxKQo=
</data>
<flag name="review"
          id="126925"
          type_id="1"
          status="+"
          setter="eric"
    />
          </attachment>
      

    </bug>

</bugzilla>