<?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>105359</bug_id>
          
          <creation_ts>2012-12-18 16:01:45 -0800</creation_ts>
          <short_desc>REGRESSION(r137607): PluginDocument loads consume huge amounts of memory</short_desc>
          <delta_ts>2012-12-19 09:39:59 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</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="Nate Chapin">japhet</reporter>
          <assigned_to name="Nate Chapin">japhet</assigned_to>
          <cc>abarth</cc>
    
    <cc>ap</cc>
    
    <cc>koivisto</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>794126</commentid>
    <comment_count>0</comment_count>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2012-12-18 16:01:45 -0800</bug_when>
    <thetext>Original report: https://code.google.com/p/chromium/issues/detail?id=166374

To reproduce, go to a plugin that loads as a main resource in a chromium canary (e.g., http://www.scb.se/statistik/_publikationer/NR0001_2012K02_TI_A28TI1203.pdf). That 4MB pdf can easily consume multiple GBs of memory.

The problem is that CachedRawResource implicitly assumes that, if setShouldBufferData() will be called, it will be called before the load starts. PluginDocument calls it after receiving the first chunk of data, which leaves CachedRawResource in an inconsistent state&gt; It ends up sending the entirety of the data received so far in each callback instead of only the incremental data.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>794131</commentid>
    <comment_count>1</comment_count>
      <attachid>180047</attachid>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2012-12-18 16:06:53 -0800</bug_when>
    <thetext>Created attachment 180047
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>794745</commentid>
    <comment_count>2</comment_count>
      <attachid>180047</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-12-19 09:31:09 -0800</bug_when>
    <thetext>Comment on attachment 180047
patch

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

&gt; Source/WebCore/ChangeLog:12
&gt; +        (WebCore::ResourceLoader::setShouldBufferData): shouldBufferData is an enum, not a boolean, so this is reversed.

It&apos;s named as a boolean, so it should be renamed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>794746</commentid>
    <comment_count>3</comment_count>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2012-12-19 09:32:36 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 180047 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=180047&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:12
&gt; &gt; +        (WebCore::ResourceLoader::setShouldBufferData): shouldBufferData is an enum, not a boolean, so this is reversed.
&gt; 
&gt; It&apos;s named as a boolean, so it should be renamed.

true

I&apos;ll do that in a separate patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>794748</commentid>
    <comment_count>4</comment_count>
      <attachid>180047</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-19 09:39:55 -0800</bug_when>
    <thetext>Comment on attachment 180047
patch

Clearing flags on attachment: 180047

Committed r138174: &lt;http://trac.webkit.org/changeset/138174&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>794749</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-19 09:39:59 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>180047</attachid>
            <date>2012-12-18 16:06:53 -0800</date>
            <delta_ts>2012-12-19 09:39:55 -0800</delta_ts>
            <desc>patch</desc>
            <filename>buffer.txt</filename>
            <type>text/plain</type>
            <size>2834</size>
            <attacher name="Nate Chapin">japhet</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcAkocmV2aXNpb24g
MTM4MDQ2KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTk0LDcgKzE5NCw3IEBACiAgICAgbV9vcHRpb25zLnNob3VsZEJ1ZmZl
ckRhdGEgPSBzaG91bGRCdWZmZXJEYXRhOyAKIAogICAgIC8vIFJlc2V0IGFueSBhbHJlYWR5IGJ1
ZmZlcmVkIGRhdGEKLSAgICBpZiAoIXNob3VsZEJ1ZmZlckRhdGEpCisgICAgaWYgKHNob3VsZEJ1
ZmZlckRhdGEgPT0gRG9Ob3RCdWZmZXJEYXRhKQogICAgICAgICBtX3Jlc291cmNlRGF0YSA9IDA7
CiB9CiAgICAgCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVz
b3VyY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRSYXdSZXNvdXJjZS5jcHAJKHJldmlzaW9uIDEzODA0NikKKysrIFNvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU2LDE5
ICs1NiwyNiBAQAogICAgICAgICBpbmNyZW1lbnRhbERhdGEgPSBkYXRhLT5kYXRhKCkgKyBwcmV2
aW91c0RhdGFMZW5ndGg7CiAgICAgICAgIGluY3JlbWVudGFsRGF0YUxlbmd0aCA9IGRhdGEtPnNp
emUoKSAtIHByZXZpb3VzRGF0YUxlbmd0aDsKICAgICB9Ci0gICAgCisKICAgICBpZiAobV9vcHRp
b25zLnNob3VsZEJ1ZmZlckRhdGEgPT0gQnVmZmVyRGF0YSkgewogICAgICAgICBpZiAoZGF0YSkK
ICAgICAgICAgICAgIHNldEVuY29kZWRTaXplKGRhdGEtPnNpemUoKSk7CiAgICAgICAgIG1fZGF0
YSA9IGRhdGE7CiAgICAgfQotICAgIAorCisgICAgRGF0YUJ1ZmZlcmluZ1BvbGljeSBkYXRhQnVm
ZmVyaW5nUG9saWN5ID0gbV9vcHRpb25zLnNob3VsZEJ1ZmZlckRhdGE7CiAgICAgaWYgKGluY3Jl
bWVudGFsRGF0YUxlbmd0aCkgewogICAgICAgICBDYWNoZWRSZXNvdXJjZUNsaWVudFdhbGtlcjxD
YWNoZWRSYXdSZXNvdXJjZUNsaWVudD4gdyhtX2NsaWVudHMpOwogICAgICAgICB3aGlsZSAoQ2Fj
aGVkUmF3UmVzb3VyY2VDbGllbnQqIGMgPSB3Lm5leHQoKSkKICAgICAgICAgICAgIGMtPmRhdGFS
ZWNlaXZlZCh0aGlzLCBpbmNyZW1lbnRhbERhdGEsIGluY3JlbWVudGFsRGF0YUxlbmd0aCk7CiAg
ICAgfQogICAgIENhY2hlZFJlc291cmNlOjpkYXRhKG1fZGF0YSwgYWxsRGF0YVJlY2VpdmVkKTsK
KworICAgIGlmIChkYXRhQnVmZmVyaW5nUG9saWN5ID09IEJ1ZmZlckRhdGEgJiYgbV9vcHRpb25z
LnNob3VsZEJ1ZmZlckRhdGEgPT0gRG9Ob3RCdWZmZXJEYXRhKSB7CisgICAgICAgIGlmIChtX2xv
YWRlcikKKyAgICAgICAgICAgIG1fbG9hZGVyLT5zZXRTaG91bGRCdWZmZXJEYXRhKERvTm90QnVm
ZmVyRGF0YSk7CisgICAgICAgIGNsZWFyKCk7CisgICAgfQogfQogCiB2b2lkIENhY2hlZFJhd1Jl
c291cmNlOjpkaWRBZGRDbGllbnQoQ2FjaGVkUmVzb3VyY2VDbGllbnQqIGMpCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCShyZXZpc2lvbiAxMzgwNzkpCisrKyBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtp
bmcgY29weSkKQEAgLTEsMyArMSwxOSBAQAorMjAxMi0xMi0xOCAgTmF0ZSBDaGFwaW4gIDxqYXBo
ZXRAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJFR1JFU1NJT04ocjEzNzYwNyk6IFBsdWdpbkRv
Y3VtZW50IGxvYWRzIGNvbnN1bWUgaHVnZSBhbW91bnRzIG9mIG1lbW9yeQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA1MzU5CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCB2ZXJpZmll
ZCBtYW51YWxseSB0aGF0IGh0dHA6Ly93d3cuc2NiLnNlL3N0YXRpc3Rpay9fcHVibGlrYXRpb25l
ci9OUjAwMDFfMjAxMkswMl9USV9BMjhUSTEyMDMucGRmCisgICAgICAgIG5vIGxvbmdlciBjb25z
dW1lcyBzZXZlcmFsIEdCIG9mIG1lbW9yeS4KKworICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxv
YWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6c2V0U2hvdWxkQnVm
ZmVyRGF0YSk6IHNob3VsZEJ1ZmZlckRhdGEgaXMgYW4gZW51bSwgbm90IGEgYm9vbGVhbiwgc28g
dGhpcyBpcyByZXZlcnNlZC4KKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3Vy
Y2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmF3UmVzb3VyY2U6OmRhdGEpOiBJZiB0
aGUgZGF0YVJlY2VpdmVkKCkgY2FsbGJhY2sgdGVsbHMgdXMgdG8gc3RvcCBidWZmZXJpbmcgZGF0
YSwgYmUgc3VyZSB0bworICAgICAgICAgICAgbm90aWZ5IHRoZSBSZXNvdXJjZUxvYWRlciBhbmQg
Y2xlYXIgdGhlIGRhdGEgYnVmZmVyLgorCiAyMDEyLTEyLTE4ICBTaW1vbiBGcmFzZXIgIDxzaW1v
bi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIEFsbG93IHBvc2l0aW9uOnN0aWNreSBlbGVt
ZW50cyB0byBiZSBtb3ZlZCBieSB0aGUgc2Nyb2xsaW5nIHRocmVhZAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>