<?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>184846</bug_id>
          
          <creation_ts>2018-04-20 15:43:52 -0700</creation_ts>
          <short_desc>Handle more JSON stringify OOM</short_desc>
          <delta_ts>2018-04-25 08:42:50 -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>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=184883</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>184941</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="JF Bastien">jfbastien</reporter>
          <assigned_to name="JF Bastien">jfbastien</assigned_to>
          <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fpizlo</cc>
    
    <cc>jfbastien</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>rmorisset</cc>
    
    <cc>ryanhaddad</cc>
    
    <cc>saam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1416467</commentid>
    <comment_count>0</comment_count>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2018-04-20 15:43:52 -0700</bug_when>
    <thetext>JSON stringinfication can OOM easily. Here&apos;s another case.

I&apos;m working on a separate patch which teaches StringBuilder that it&apos;s fallible, but that&apos;s way bigger and more complex, so I&apos;ll commit it separately. It&apos;ll be much more comprehensive though!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1416468</commentid>
    <comment_count>1</comment_count>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2018-04-20 15:44:10 -0700</bug_when>
    <thetext>&lt;rdar://problem/39390672&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1416470</commentid>
    <comment_count>2</comment_count>
      <attachid>338473</attachid>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2018-04-20 15:47:38 -0700</bug_when>
    <thetext>Created attachment 338473
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1416471</commentid>
    <comment_count>3</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-04-20 15:49:52 -0700</bug_when>
    <thetext>Attachment 338473 did not pass style-queue:


ERROR: Source/WTF/wtf/text/StringBuilderJSON.cpp:100:  One line control clauses should not use braces.  [whitespace/braces] [4]
Total errors found: 1 in 5 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1416472</commentid>
    <comment_count>4</comment_count>
      <attachid>338473</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2018-04-20 15:51:43 -0700</bug_when>
    <thetext>Comment on attachment 338473
patch

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

r=me with fixes.

&gt; Source/WTF/ChangeLog:9
&gt; +        JSON stringinfication can OOM easily. Here&apos;s another case.

typo: /stringinfication/stringification/.

&gt; Source/WTF/ChangeLog:13
&gt; +        I&apos;m working on a separate patch which teaches StringBuilder that
&gt; +        it&apos;s fallible, but that&apos;s way bigger and more complex, so I&apos;ll
&gt; +        commit it separately. It&apos;ll be much more comprehensive though!

I don&apos;t think you need to say this.

&gt; Source/WTF/wtf/text/StringBuilderJSON.cpp:98
&gt; +    if (is8Bit() &amp;&amp; !string.is8Bit()) {

You don&apos;t need the curly brace here.

&gt; Source/WTF/wtf/text/StringBuilderJSON.cpp:100
&gt; +    } else

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1416487</commentid>
    <comment_count>5</comment_count>
      <attachid>338478</attachid>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2018-04-20 16:02:22 -0700</bug_when>
    <thetext>Created attachment 338478
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1416497</commentid>
    <comment_count>6</comment_count>
      <attachid>338478</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-04-20 16:18:28 -0700</bug_when>
    <thetext>Comment on attachment 338478
patch

Clearing flags on attachment: 338478

Committed r230863: &lt;https://trac.webkit.org/changeset/230863&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1416498</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-04-20 16:18:30 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1416947</commentid>
    <comment_count>8</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2018-04-23 12:43:34 -0700</bug_when>
    <thetext>The test added with this change is failing on the 32-bit JSC bot:

stress/json-stringified-overflow-2.js.default: Exception: Error: Out of memory

https://build.webkit.org/builders/Apple%20High%20Sierra%2032-bit%20JSC%20%28BuildAndTest%29/builds/1718</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1416950</commentid>
    <comment_count>9</comment_count>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2018-04-23 13:23:19 -0700</bug_when>
    <thetext>(In reply to Ryan Haddad from comment #8)
&gt; The test added with this change is failing on the 32-bit JSC bot:
&gt; 
&gt; stress/json-stringified-overflow-2.js.default: Exception: Error: Out of
&gt; memory
&gt; 
&gt; https://build.webkit.org/builders/Apple%20High%20Sierra%2032-
&gt; bit%20JSC%20%28BuildAndTest%29/builds/1718

Shouldn&apos;t these bots not run tests marked with:

//@ skip if $memoryLimited

?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1417232</commentid>
    <comment_count>10</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2018-04-24 12:36:28 -0700</bug_when>
    <thetext>(In reply to JF Bastien from comment #9)
&gt; (In reply to Ryan Haddad from comment #8)
&gt; &gt; The test added with this change is failing on the 32-bit JSC bot:
&gt; &gt; 
&gt; &gt; stress/json-stringified-overflow-2.js.default: Exception: Error: Out of
&gt; &gt; memory
&gt; &gt; 
&gt; &gt; https://build.webkit.org/builders/Apple%20High%20Sierra%2032-
&gt; &gt; bit%20JSC%20%28BuildAndTest%29/builds/1718
&gt; 
&gt; Shouldn&apos;t these bots not run tests marked with:
&gt; 
&gt; //@ skip if $memoryLimited
&gt; 
&gt; ?

No.  The failing bot is a High Sierra bot which is not memory limited.  The test should catch the OOM error and verify that it did catch the error.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1417287</commentid>
    <comment_count>11</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2018-04-24 14:42:40 -0700</bug_when>
    <thetext>(In reply to Mark Lam from comment #10)
&gt; (In reply to JF Bastien from comment #9)
&gt; &gt; (In reply to Ryan Haddad from comment #8)
&gt; &gt; &gt; The test added with this change is failing on the 32-bit JSC bot:
&gt; &gt; &gt; 
&gt; &gt; &gt; stress/json-stringified-overflow-2.js.default: Exception: Error: Out of
&gt; &gt; &gt; memory
&gt; &gt; &gt; 
&gt; &gt; &gt; https://build.webkit.org/builders/Apple%20High%20Sierra%2032-
&gt; &gt; &gt; bit%20JSC%20%28BuildAndTest%29/builds/1718
&gt; &gt; 
&gt; &gt; Shouldn&apos;t these bots not run tests marked with:
&gt; &gt; 
&gt; &gt; //@ skip if $memoryLimited
&gt; &gt; 
&gt; &gt; ?
&gt; 
&gt; No.  The failing bot is a High Sierra bot which is not memory limited.  The
&gt; test should catch the OOM error and verify that it did catch the error.

I can reproduce this on a 32-bit build but only if I don&apos;t run jsc from inside lldb.  I&apos;ll just land a test fix to get the bots unstuck.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1417295</commentid>
    <comment_count>12</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2018-04-24 14:53:59 -0700</bug_when>
    <thetext>Test fix landed in r230972: &lt;http://trac.webkit.org/r230972&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1417322</commentid>
    <comment_count>13</comment_count>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2018-04-24 15:51:25 -0700</bug_when>
    <thetext>(In reply to Mark Lam from comment #12)
&gt; Test fix landed in r230972: &lt;http://trac.webkit.org/r230972&gt;.

That fix is incorrect. It&apos;s handling OOM from string *and* stringify. We only want to test OOM from stringify.

It seems to me like 32-bit bots should be marked as memory limited.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1417326</commentid>
    <comment_count>14</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2018-04-24 16:05:17 -0700</bug_when>
    <thetext>(In reply to JF Bastien from comment #13)
&gt; (In reply to Mark Lam from comment #12)
&gt; &gt; Test fix landed in r230972: &lt;http://trac.webkit.org/r230972&gt;.
&gt; 
&gt; That fix is incorrect. It&apos;s handling OOM from string *and* stringify. We
&gt; only want to test OOM from stringify.
&gt; 
&gt; It seems to me like 32-bit bots should be marked as memory limited.

I disagree.  padStart() can throw an OutOfMemoryError, and it did in this case.  I understand that the test is to check if JSON.stringify() throws an OOM.  But what is the correct behavior for the test then?  I think if padStart() throws an OOM, then the test is over ... which is what I changed it to do.

How would you do this differently?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1417327</commentid>
    <comment_count>15</comment_count>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2018-04-24 16:07:01 -0700</bug_when>
    <thetext>(In reply to Mark Lam from comment #14)
&gt; (In reply to JF Bastien from comment #13)
&gt; &gt; (In reply to Mark Lam from comment #12)
&gt; &gt; &gt; Test fix landed in r230972: &lt;http://trac.webkit.org/r230972&gt;.
&gt; &gt; 
&gt; &gt; That fix is incorrect. It&apos;s handling OOM from string *and* stringify. We
&gt; &gt; only want to test OOM from stringify.
&gt; &gt; 
&gt; &gt; It seems to me like 32-bit bots should be marked as memory limited.
&gt; 
&gt; I disagree.  padStart() can throw an OutOfMemoryError, and it did in this
&gt; case.  I understand that the test is to check if JSON.stringify() throws an
&gt; OOM.  But what is the correct behavior for the test then?  I think if
&gt; padStart() throws an OOM, then the test is over ... which is what I changed
&gt; it to do.
&gt; 
&gt; How would you do this differently?

Mark 32-bit bots as memory limited, otherwise we&apos;re deluding ourselves that we&apos;re testing stringify on *any* bot (64-bit bots aren&apos;t testing stringify either as far as we know).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1417333</commentid>
    <comment_count>16</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2018-04-24 16:19:12 -0700</bug_when>
    <thetext>(In reply to JF Bastien from comment #15)
&gt; (In reply to Mark Lam from comment #14)
&gt; &gt; (In reply to JF Bastien from comment #13)
&gt; &gt; &gt; (In reply to Mark Lam from comment #12)
&gt; &gt; &gt; &gt; Test fix landed in r230972: &lt;http://trac.webkit.org/r230972&gt;.
&gt; &gt; &gt; 
&gt; &gt; &gt; That fix is incorrect. It&apos;s handling OOM from string *and* stringify. We
&gt; &gt; &gt; only want to test OOM from stringify.
&gt; &gt; &gt; 
&gt; &gt; &gt; It seems to me like 32-bit bots should be marked as memory limited.
&gt; &gt; 
&gt; &gt; I disagree.  padStart() can throw an OutOfMemoryError, and it did in this
&gt; &gt; case.  I understand that the test is to check if JSON.stringify() throws an
&gt; &gt; OOM.  But what is the correct behavior for the test then?  I think if
&gt; &gt; padStart() throws an OOM, then the test is over ... which is what I changed
&gt; &gt; it to do.
&gt; &gt; 
&gt; &gt; How would you do this differently?
&gt; 
&gt; Mark 32-bit bots as memory limited, otherwise we&apos;re deluding ourselves that
&gt; we&apos;re testing stringify on *any* bot (64-bit bots aren&apos;t testing stringify
&gt; either as far as we know).

The 32-bit bots are not memory limited by any stretch of the imagination.  I&apos;m reproducing this on my iMac which tons of memory.  We could skip the tests for 32-bit builds, but I think that&apos;s not really fixing the core issue.  From my cursory look at the code briefly, I think padStart() could just as well throw an OOM on 6-bit as well.  

I filed https://bugs.webkit.org/show_bug.cgi?id=184941 for us to re-visit these tests later.  For now, the tests do get some coverage (thought not guaranteed to be the specific coverage we want) and the bots are green.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1417336</commentid>
    <comment_count>17</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2018-04-24 16:20:01 -0700</bug_when>
    <thetext>(In reply to Mark Lam from comment #16)
&gt; The 32-bit bots are not memory limited by any stretch of the imagination. 
&gt; I&apos;m reproducing this on my iMac which tons of memory.  We could skip the
&gt; tests for 32-bit builds, but I think that&apos;s not really fixing the core
&gt; issue.  From my cursory look at the code briefly, I think padStart() could
&gt; just as well throw an OOM on 6-bit as well.  
&gt; 
&gt; I filed https://bugs.webkit.org/show_bug.cgi?id=184941 for us to re-visit
&gt; these tests later.  For now, the tests do get some coverage (thought not
&gt; guaranteed to be the specific coverage we want) and the bots are green.

By &quot;6-bit&quot;, I meant 64-bit.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>338473</attachid>
            <date>2018-04-20 15:47:38 -0700</date>
            <delta_ts>2018-04-20 16:02:22 -0700</delta_ts>
            <desc>patch</desc>
            <filename>0001-Handle-more-JSON-stringify-OOM.patch</filename>
            <type>text/plain</type>
            <size>3904</size>
            <attacher name="JF Bastien">jfbastien</attacher>
            
              <data encoding="base64">RnJvbSAwYTExODJjODM3NTZmNDE0MmNjMDk2NzY5ZjcyZmEyZGRjYTc2OTA3IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKRiBCYXN0aWVuIDxqZmJhc3RpZW5AYXBwbGUuY29tPgpEYXRl
OiBGcmksIDIwIEFwciAyMDE4IDE1OjQ3OjEzIC0wNzAwClN1YmplY3Q6IFtQQVRDSF0gSGFuZGxl
IG1vcmUgSlNPTiBzdHJpbmdpZnkgT09NCgotLS0KIEpTVGVzdHMvQ2hhbmdlTG9nICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB8IDE1ICsrKysrKysrKysrKysrKwogSlNUZXN0cy9zdHJlc3Mv
anNvbi1zdHJpbmdpZmllZC1vdmVyZmxvdy0yLmpzIHwgIDUgKysrKysKIEpTVGVzdHMvc3RyZXNz
L2pzb24tc3RyaW5naWZpZWQtb3ZlcmZsb3cuanMgICB8ICAzICsrLQogU291cmNlL1dURi9DaGFu
Z2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMTcgKysrKysrKysrKysrKysrKysKIFNv
dXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nQnVpbGRlckpTT04uY3BwICAgICB8ICA4ICsrKysrKy0t
CiA1IGZpbGVzIGNoYW5nZWQsIDQ1IGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCiBjcmVh
dGUgbW9kZSAxMDA2NDQgSlNUZXN0cy9zdHJlc3MvanNvbi1zdHJpbmdpZmllZC1vdmVyZmxvdy0y
LmpzCgpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9DaGFuZ2VMb2cgYi9KU1Rlc3RzL0NoYW5nZUxvZwpp
bmRleCA4MzE0N2FhLi43MzJkZGE2IDEwMDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxvZworKysg
Yi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDE4LTA0LTIwICBKRiBCYXN0
aWVuICA8amZiYXN0aWVuQGFwcGxlLmNvbT4KKworICAgICAgICBIYW5kbGUgbW9yZSBKU09OIHN0
cmluZ2lmeSBPT00KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE4NDg0NgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzkzOTA2NzI+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBzdHJlc3MvanNvbi1zdHJp
bmdpZmllZC1vdmVyZmxvdy0yLmpzOiBBZGRlZC4gU2FtZSBhcyB0aGUgb25lCisgICAgICAgIGJl
bG93LCBidXQgd2l0aCBhIGJpZ2dlciBpbnB1dCB3aGljaCB3aWxsIHRyaWdnZXIgYSBkaWZmZXJl
bnQgY29kZQorICAgICAgICBwYXRoLgorICAgICAgICAoY2F0Y2gpOgorICAgICAgICAqIHN0cmVz
cy9qc29uLXN0cmluZ2lmaWVkLW92ZXJmbG93LmpzOiBNb2RpZnkgdGhlIHRlc3QgdG8gb25seQor
ICAgICAgICBjYXRjaCBPT00gb24gc3RyaW5naWZpY2F0aW9uLiBub3Qgb24gc3RyaW5nIGNyZWF0
aW9uLgorCiAyMDE4LTA0LTE4ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29t
PgogCiAgICAgICAgIFtXZWJBc3NlbWJseV1bTW9kdWxlc10gSW1wb3J0IHRhYmxlcyBpbiB3YXNt
IG1vZHVsZXMKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2pzb24tc3RyaW5naWZpZWQtb3Zl
cmZsb3ctMi5qcyBiL0pTVGVzdHMvc3RyZXNzL2pzb24tc3RyaW5naWZpZWQtb3ZlcmZsb3ctMi5q
cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MDZlMGMwCi0tLSAvZGV2L251
bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvanNvbi1zdHJpbmdpZmllZC1vdmVyZmxvdy0yLmpzCkBA
IC0wLDAgKzEsNSBAQAorLy9AIHNraXAgaWYgJG1lbW9yeUxpbWl0ZWQKK2NvbnN0IHMgPSAiYSIu
cGFkU3RhcnQoMHg4MDAwMDAwMCAtIDEpOwordHJ5IHsKKyAgICBKU09OLnN0cmluZ2lmeShzKTsK
K30gY2F0Y2ggKGUpIHt9CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9qc29uLXN0cmluZ2lm
aWVkLW92ZXJmbG93LmpzIGIvSlNUZXN0cy9zdHJlc3MvanNvbi1zdHJpbmdpZmllZC1vdmVyZmxv
dy5qcwppbmRleCAxYjE3YTM3Li5hNmQxN2MwIDEwMDY0NAotLS0gYS9KU1Rlc3RzL3N0cmVzcy9q
c29uLXN0cmluZ2lmaWVkLW92ZXJmbG93LmpzCisrKyBiL0pTVGVzdHMvc3RyZXNzL2pzb24tc3Ry
aW5naWZpZWQtb3ZlcmZsb3cuanMKQEAgLTEsNCArMSw1IEBACiAvL0Agc2tpcCBpZiAkbWVtb3J5
TGltaXRlZAorY29uc3QgcyA9ICIxMjMiLnBhZFN0YXJ0KDEwNzM3NDE4MjMpOwogdHJ5IHsKLSAg
ICAgIEpTT04uc3RyaW5naWZ5KCIxMjMiLnBhZFN0YXJ0KDEwNzM3NDE4MjMpKQorICAgIEpTT04u
c3RyaW5naWZ5KHMpOwogfSBjYXRjaCAoZSkge30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggNzhlYTc4My4uNDI0N2JiMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwyMCBAQAorMjAxOC0wNC0yMCAgSkYgQmFzdGllbiAgPGpmYmFzdGllbkBhcHBs
ZS5jb20+CisKKyAgICAgICAgSGFuZGxlIG1vcmUgSlNPTiBzdHJpbmdpZnkgT09NCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODQ4NDYKKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzM5MzkwNjcyPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEpTT04gc3RyaW5naW5maWNhdGlvbiBjYW4gT09NIGVhc2lseS4g
SGVyZSdzIGFub3RoZXIgY2FzZS4KKworICAgICAgICBJJ20gd29ya2luZyBvbiBhIHNlcGFyYXRl
IHBhdGNoIHdoaWNoIHRlYWNoZXMgU3RyaW5nQnVpbGRlciB0aGF0CisgICAgICAgIGl0J3MgZmFs
bGlibGUsIGJ1dCB0aGF0J3Mgd2F5IGJpZ2dlciBhbmQgbW9yZSBjb21wbGV4LCBzbyBJJ2xsCisg
ICAgICAgIGNvbW1pdCBpdCBzZXBhcmF0ZWx5LiBJdCdsbCBiZSBtdWNoIG1vcmUgY29tcHJlaGVu
c2l2ZSB0aG91Z2ghCisKKyAgICAgICAgKiB3dGYvdGV4dC9TdHJpbmdCdWlsZGVySlNPTi5jcHA6
CisgICAgICAgIChXVEY6OlN0cmluZ0J1aWxkZXI6OmFwcGVuZFF1b3RlZEpTT05TdHJpbmcpOgor
CiAyMDE4LTA0LTE5ICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CiAKICAgICAg
ICAgRW5hYmxlIE9iamVjdGl2ZS1DIHdlYWsgcmVmZXJlbmNlcwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dURi93dGYvdGV4dC9TdHJpbmdCdWlsZGVySlNPTi5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0
L1N0cmluZ0J1aWxkZXJKU09OLmNwcAppbmRleCBhMGViZDYyLi5hNDVjNGZmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0J1aWxkZXJKU09OLmNwcAorKysgYi9Tb3VyY2Uv
V1RGL3d0Zi90ZXh0L1N0cmluZ0J1aWxkZXJKU09OLmNwcApAQCAtOTEsOSArOTEsMTMgQEAgYm9v
bCBTdHJpbmdCdWlsZGVyOjphcHBlbmRRdW90ZWRKU09OU3RyaW5nKGNvbnN0IFN0cmluZyYgc3Ry
aW5nKQogICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzYw
ODYKICAgICBhbGxvY2F0aW9uU2l6ZSA9IHN0ZDo6bWF4KGFsbG9jYXRpb25TaXplLCByb3VuZFVw
VG9Qb3dlck9mVHdvKGFsbG9jYXRpb25TaXplKSk7CiAKLSAgICBpZiAoaXM4Qml0KCkgJiYgIXN0
cmluZy5pczhCaXQoKSkKKyAgICAvLyBBbGxvY2F0aW5nIHRoaXMgbXVjaCB3aWxsIGRlZmluaXRl
bHkgZmFpbC4KKyAgICBpZiAoYWxsb2NhdGlvblNpemUgPj0gMHg4MDAwMDAwMCkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgaWYgKGlzOEJpdCgpICYmICFzdHJpbmcuaXM4Qml0KCkpIHsK
ICAgICAgICAgYWxsb2NhdGVCdWZmZXJVcENvbnZlcnQobV9idWZmZXJDaGFyYWN0ZXJzOCwgYWxs
b2NhdGlvblNpemUpOwotICAgIGVsc2UKKyAgICB9IGVsc2UKICAgICAgICAgcmVzZXJ2ZUNhcGFj
aXR5KGFsbG9jYXRpb25TaXplKTsKICAgICBBU1NFUlQobV9idWZmZXItPmxlbmd0aCgpID49IGFs
bG9jYXRpb25TaXplKTsKIAotLSAKMi45LjMKCg==
</data>
<flag name="review"
          id="356760"
          type_id="1"
          status="+"
          setter="mark.lam"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>338478</attachid>
            <date>2018-04-20 16:02:22 -0700</date>
            <delta_ts>2018-04-20 16:18:28 -0700</delta_ts>
            <desc>patch</desc>
            <filename>0001-Handle-more-JSON-stringify-OOM.patch</filename>
            <type>text/plain</type>
            <size>3514</size>
            <attacher name="JF Bastien">jfbastien</attacher>
            
              <data encoding="base64">RnJvbSBhNzUwMjc0N2FiMzFmMjQxMDdmNjM5NWJiMDE0MDE1MWQ2NWY5NjJlIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKRiBCYXN0aWVuIDxqZmJhc3RpZW5AYXBwbGUuY29tPgpEYXRl
OiBGcmksIDIwIEFwciAyMDE4IDE1OjQ3OjEzIC0wNzAwClN1YmplY3Q6IFtQQVRDSF0gSGFuZGxl
IG1vcmUgSlNPTiBzdHJpbmdpZnkgT09NCgotLS0KIEpTVGVzdHMvQ2hhbmdlTG9nICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB8IDE1ICsrKysrKysrKysrKysrKwogSlNUZXN0cy9zdHJlc3Mv
anNvbi1zdHJpbmdpZmllZC1vdmVyZmxvdy0yLmpzIHwgIDUgKysrKysKIEpTVGVzdHMvc3RyZXNz
L2pzb24tc3RyaW5naWZpZWQtb3ZlcmZsb3cuanMgICB8ICAzICsrLQogU291cmNlL1dURi9DaGFu
Z2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMTMgKysrKysrKysrKysrKwogU291cmNl
L1dURi93dGYvdGV4dC9TdHJpbmdCdWlsZGVySlNPTi5jcHAgICAgIHwgIDQgKysrKwogNSBmaWxl
cyBjaGFuZ2VkLCAzOSBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCiBjcmVhdGUgbW9kZSAx
MDA2NDQgSlNUZXN0cy9zdHJlc3MvanNvbi1zdHJpbmdpZmllZC1vdmVyZmxvdy0yLmpzCgpkaWZm
IC0tZ2l0IGEvSlNUZXN0cy9DaGFuZ2VMb2cgYi9KU1Rlc3RzL0NoYW5nZUxvZwppbmRleCA4MzE0
N2FhLi43YmIxZTA2IDEwMDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxvZworKysgYi9KU1Rlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDE4LTA0LTIwICBKRiBCYXN0aWVuICA8amZi
YXN0aWVuQGFwcGxlLmNvbT4KKworICAgICAgICBIYW5kbGUgbW9yZSBKU09OIHN0cmluZ2lmeSBP
T00KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4NDg0
NgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzkzOTA2NzI+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTWFyayBMYW0uCisKKyAgICAgICAgKiBzdHJlc3MvanNvbi1zdHJpbmdpZmllZC1vdmVyZmxv
dy0yLmpzOiBBZGRlZC4gU2FtZSBhcyB0aGUgb25lCisgICAgICAgIGJlbG93LCBidXQgd2l0aCBh
IGJpZ2dlciBpbnB1dCB3aGljaCB3aWxsIHRyaWdnZXIgYSBkaWZmZXJlbnQgY29kZQorICAgICAg
ICBwYXRoLgorICAgICAgICAoY2F0Y2gpOgorICAgICAgICAqIHN0cmVzcy9qc29uLXN0cmluZ2lm
aWVkLW92ZXJmbG93LmpzOiBNb2RpZnkgdGhlIHRlc3QgdG8gb25seQorICAgICAgICBjYXRjaCBP
T00gb24gc3RyaW5naWZpY2F0aW9uLiBub3Qgb24gc3RyaW5nIGNyZWF0aW9uLgorCiAyMDE4LTA0
LTE4ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgogCiAgICAgICAgIFtX
ZWJBc3NlbWJseV1bTW9kdWxlc10gSW1wb3J0IHRhYmxlcyBpbiB3YXNtIG1vZHVsZXMKZGlmZiAt
LWdpdCBhL0pTVGVzdHMvc3RyZXNzL2pzb24tc3RyaW5naWZpZWQtb3ZlcmZsb3ctMi5qcyBiL0pT
VGVzdHMvc3RyZXNzL2pzb24tc3RyaW5naWZpZWQtb3ZlcmZsb3ctMi5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi41MDZlMGMwCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0
cy9zdHJlc3MvanNvbi1zdHJpbmdpZmllZC1vdmVyZmxvdy0yLmpzCkBAIC0wLDAgKzEsNSBAQAor
Ly9AIHNraXAgaWYgJG1lbW9yeUxpbWl0ZWQKK2NvbnN0IHMgPSAiYSIucGFkU3RhcnQoMHg4MDAw
MDAwMCAtIDEpOwordHJ5IHsKKyAgICBKU09OLnN0cmluZ2lmeShzKTsKK30gY2F0Y2ggKGUpIHt9
CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9qc29uLXN0cmluZ2lmaWVkLW92ZXJmbG93Lmpz
IGIvSlNUZXN0cy9zdHJlc3MvanNvbi1zdHJpbmdpZmllZC1vdmVyZmxvdy5qcwppbmRleCAxYjE3
YTM3Li5hNmQxN2MwIDEwMDY0NAotLS0gYS9KU1Rlc3RzL3N0cmVzcy9qc29uLXN0cmluZ2lmaWVk
LW92ZXJmbG93LmpzCisrKyBiL0pTVGVzdHMvc3RyZXNzL2pzb24tc3RyaW5naWZpZWQtb3ZlcmZs
b3cuanMKQEAgLTEsNCArMSw1IEBACiAvL0Agc2tpcCBpZiAkbWVtb3J5TGltaXRlZAorY29uc3Qg
cyA9ICIxMjMiLnBhZFN0YXJ0KDEwNzM3NDE4MjMpOwogdHJ5IHsKLSAgICAgIEpTT04uc3RyaW5n
aWZ5KCIxMjMiLnBhZFN0YXJ0KDEwNzM3NDE4MjMpKQorICAgIEpTT04uc3RyaW5naWZ5KHMpOwog
fSBjYXRjaCAoZSkge30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNl
L1dURi9DaGFuZ2VMb2cKaW5kZXggNzhlYTc4My4uN2JmNTZmNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBA
QAorMjAxOC0wNC0yMCAgSkYgQmFzdGllbiAgPGpmYmFzdGllbkBhcHBsZS5jb20+CisKKyAgICAg
ICAgSGFuZGxlIG1vcmUgSlNPTiBzdHJpbmdpZnkgT09NCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODQ4NDYKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVt
LzM5MzkwNjcyPgorCisgICAgICAgIFJldmlld2VkIGJ5IE1hcmsgTGFtLgorCisgICAgICAgIEpT
T04gc3RyaW5naWZpY2F0aW9uIGNhbiBPT00gZWFzaWx5LiBIZXJlJ3MgYW5vdGhlciBjYXNlLgor
CisgICAgICAgICogd3RmL3RleHQvU3RyaW5nQnVpbGRlckpTT04uY3BwOgorICAgICAgICAoV1RG
OjpTdHJpbmdCdWlsZGVyOjphcHBlbmRRdW90ZWRKU09OU3RyaW5nKToKKwogMjAxOC0wNC0xOSAg
RGF2aWQgS2lsemVyICA8ZGRraWx6ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIEVuYWJsZSBPYmpl
Y3RpdmUtQyB3ZWFrIHJlZmVyZW5jZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQv
U3RyaW5nQnVpbGRlckpTT04uY3BwIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdCdWlsZGVy
SlNPTi5jcHAKaW5kZXggYTBlYmQ2Mi4uMjI2Mjk1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93
dGYvdGV4dC9TdHJpbmdCdWlsZGVySlNPTi5jcHAKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9T
dHJpbmdCdWlsZGVySlNPTi5jcHAKQEAgLTkxLDYgKzkxLDEwIEBAIGJvb2wgU3RyaW5nQnVpbGRl
cjo6YXBwZW5kUXVvdGVkSlNPTlN0cmluZyhjb25zdCBTdHJpbmcmIHN0cmluZykKICAgICAvLyBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc2MDg2CiAgICAgYWxsb2Nh
dGlvblNpemUgPSBzdGQ6Om1heChhbGxvY2F0aW9uU2l6ZSwgcm91bmRVcFRvUG93ZXJPZlR3byhh
bGxvY2F0aW9uU2l6ZSkpOwogCisgICAgLy8gQWxsb2NhdGluZyB0aGlzIG11Y2ggd2lsbCBkZWZp
bml0ZWx5IGZhaWwuCisgICAgaWYgKGFsbG9jYXRpb25TaXplID49IDB4ODAwMDAwMDApCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKwogICAgIGlmIChpczhCaXQoKSAmJiAhc3RyaW5nLmlzOEJpdCgp
KQogICAgICAgICBhbGxvY2F0ZUJ1ZmZlclVwQ29udmVydChtX2J1ZmZlckNoYXJhY3RlcnM4LCBh
bGxvY2F0aW9uU2l6ZSk7CiAgICAgZWxzZQotLSAKMi45LjMKCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>