<?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>54420</bug_id>
          
          <creation_ts>2011-02-14 16:02:26 -0800</creation_ts>
          <short_desc>SharedBuffer::buffer() misses purgeable data, sometimes breaking re-decodes on macs.</short_desc>
          <delta_ts>2011-02-15 14:34:38 -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>Page Loading</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</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>0</everconfirmed>
          <reporter name="Gavin Peters">gavinp</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>gavinp</cc>
    
    <cc>ggaren</cc>
    
    <cc>koivisto</cc>
    
    <cc>pkasting</cc>
    
    <cc>sam</cc>
    
    <cc>simon.fraser</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>350952</commentid>
    <comment_count>0</comment_count>
    <who name="Gavin Peters">gavinp</who>
    <bug_when>2011-02-14 16:02:26 -0800</bug_when>
    <thetext>On the mac platform, when we build with ENABLE(PURGEABLE_MEMORY), the call SharedBuffer::buffer() can return an empty vector when the SharedBuffer contains no data, but has purgeable memory associated with it.  Some image decoders (JPEGImageDecoder &amp; WEBPImageDecoder) rely on buffer() to get their data, and as a result are actually broken after the original image data has migrated to purgeable memory.  This migration occurs on Images in CachedImage::destroyDecodedData(), which makes JPEG and WEBP images unreconstructable by the JPEGImageDecoder after we&apos;ve destroyed the decoded data, a very undesirable result, as subsequent decode attempts get a 0,0 image.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>350967</commentid>
    <comment_count>1</comment_count>
      <attachid>82382</attachid>
    <who name="Gavin Peters">gavinp</who>
    <bug_when>2011-02-14 16:35:40 -0800</bug_when>
    <thetext>Created attachment 82382
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>350971</commentid>
    <comment_count>2</comment_count>
      <attachid>82382</attachid>
    <who name="Peter Kasting">pkasting</who>
    <bug_when>2011-02-14 16:38:27 -0800</bug_when>
    <thetext>Comment on attachment 82382
Patch

Image parts LGTM</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>350973</commentid>
    <comment_count>3</comment_count>
      <attachid>82382</attachid>
    <who name="Gavin Peters">gavinp</who>
    <bug_when>2011-02-14 16:40:38 -0800</bug_when>
    <thetext>Comment on attachment 82382
Patch

This patch fixes the issue by removing consumers of SharedBuffer::buffer() and using the safer SharedBuffer::data().

pkasting pointed out (in irc) that there may be further simplification to be had by making all decoders use the same interface.  I believe that!  However this bug was causing chrome to stop displaying images on many sites, and so I made this minimal fix right away.

I&apos;m open to ideas on testing, and also to follow up with more rationalization of how we handle SharedBuffer.

See: http://code.google.com/p/chromium/issues/detail?id=68622 for the chrome bug that brought me here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>351146</commentid>
    <comment_count>4</comment_count>
      <attachid>82382</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2011-02-15 01:26:27 -0800</bug_when>
    <thetext>Comment on attachment 82382
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>351200</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-02-15 05:07:33 -0800</bug_when>
    <thetext>The commit-queue encountered the following flaky tests while processing attachment 82382:

http/tests/websocket/tests/multiple-connections.html bug 53825 (author: abarth@webkit.org)
The commit-queue is continuing to process your patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>351201</commentid>
    <comment_count>6</comment_count>
      <attachid>82382</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-02-15 05:09:27 -0800</bug_when>
    <thetext>Comment on attachment 82382
Patch

Clearing flags on attachment: 82382

Committed r78548: &lt;http://trac.webkit.org/changeset/78548&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>351202</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-02-15 05:09:32 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>351212</commentid>
    <comment_count>8</comment_count>
    <who name="Gavin Peters">gavinp</who>
    <bug_when>2011-02-15 05:51:08 -0800</bug_when>
    <thetext>Renaming this bug (a bit late!) at ap&apos;s suggestion.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>351577</commentid>
    <comment_count>9</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2011-02-15 14:34:38 -0800</bug_when>
    <thetext>Shame the changelog didn&apos;t say anything about the changes.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>82382</attachid>
            <date>2011-02-14 16:35:40 -0800</date>
            <delta_ts>2011-02-15 05:09:27 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-54420-20110214193539.patch</filename>
            <type>text/plain</type>
            <size>4781</size>
            <attacher name="Gavin Peters">gavinp</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogNzg1MjEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBmMGQ1NmEyODU5ZDY4NzAx
N2MxYTRjYTUzZGI4MWU4ZmI5MjVjMzI5Li41ZmYyYjc0MDU5OWM1MTIxODlhNDFjMDZlNGZlZDVk
MmJjNzJjY2VkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTEtMDItMTQgIEdhdmlu
IFBldGVycyAgPGdhdmlucEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgU2hhcmVkQnVmZmVyOjpidWZmZXIoKSBkb2VzIG5vdCBk
byB3aGF0IHlvdSB0aGluay4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTU0NDIwCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLgorCisgICAgICAgICogaW5z
cGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yUmVzb3VyY2VBZ2VudDo6cmVzb3VyY2VDb250ZW50QmFzZTY0KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9TaGFyZWRCdWZmZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlBFR0ltYWdl
UmVhZGVyOjpkZWNvZGUpOgorICAgICAgICAoV2ViQ29yZTo6SlBFR0ltYWdlRGVjb2Rlcjo6ZGVj
b2RlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJwL1dFQlBJbWFnZURl
Y29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V0VCUEltYWdlRGVjb2Rlcjo6ZGVjb2RlKToK
KwogMjAxMS0wMi0xNCAgRW5yaWNhIENhc3VjY2kgIDxlbnJpY2FAYXBwbGUuY29tPgogCiAgICAg
ICAgIENvcHkvcGFzdGUgZnJvbSBhIFdlYktpdCB3aW5kb3cgdG8gYSBUZXh0RWRpdCB3aW5kb3cg
bG9zZXMgZm9udHMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yUmVzb3VyY2VBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
UmVzb3VyY2VBZ2VudC5jcHAKaW5kZXggMzhkOWUzMmQ0M2IzYWQxZDgxYjU1M2EzY2FiODhlM2Yw
NjEwNTc3My4uZjAyNDMxZTBjMTc3YjAwYTExYjIwM2EwYjkxYzhjOGMzNTRhODA0NiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNw
cApAQCAtMTA3LDcgKzEwNyw3IEBAIGJvb2wgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6cmVzb3Vy
Y2VDb250ZW50QmFzZTY0KEZyYW1lKiBmcmFtZSwgY29uc3QgS1VSTCYgdXJsCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICB9CiAKLSAgICAqcmVzdWx0ID0gYmFzZTY0RW5jb2RlKGRhdGEtPmJ1
ZmZlcigpKTsKKyAgICAqcmVzdWx0ID0gYmFzZTY0RW5jb2RlKGRhdGEtPmRhdGEoKSwgZGF0YS0+
c2l6ZSgpKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFy
ZWRCdWZmZXIuaAppbmRleCBiZmM1OTMxMmMzMjJlMGM5OTE4YmFkN2VkNjNlM2Y4OWM5NDY2NWZj
Li4zYzkyY2YzNDg0MzdjZTEyZWU1ZjAxOWNiMGIzMzdkNmE1NzNkYzZkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaApAQCAtODEsMTAgKzgxLDYgQEAgcHVibGljOgogCiAg
ICAgdW5zaWduZWQgc2l6ZSgpIGNvbnN0OwogCi0gICAgLy8gQ2FsbGluZyB0aGlzIGZ1bmN0aW9u
IHdpbGwgZm9yY2UgaW50ZXJuYWwgc2VnbWVudGVkIGJ1ZmZlcnMKLSAgICAvLyB0byBiZSBtZXJn
ZWQgaW50byBhIGZsYXQgYnVmZmVyLiBVc2UgZ2V0U29tZURhdGEoKSB3aGVuZXZlciBwb3NzaWJs
ZQotICAgIC8vIGZvciBiZXR0ZXIgcGVyZm9ybWFuY2UuCi0gICAgY29uc3QgVmVjdG9yPGNoYXI+
JiBidWZmZXIoKSBjb25zdDsKIAogICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuICFz
aXplKCk7IH0KIApAQCAtMTE5LDYgKzExNSwxMyBAQCBwcml2YXRlOgogICAgIFNoYXJlZEJ1ZmZl
cihjb25zdCBjaGFyKiwgaW50KTsKICAgICBTaGFyZWRCdWZmZXIoY29uc3QgdW5zaWduZWQgY2hh
ciosIGludCk7CiAgICAgCisgICAgLy8gQ2FsbGluZyB0aGlzIGZ1bmN0aW9uIHdpbGwgZm9yY2Ug
aW50ZXJuYWwgc2VnbWVudGVkIGJ1ZmZlcnMKKyAgICAvLyB0byBiZSBtZXJnZWQgaW50byBhIGZs
YXQgYnVmZmVyLiBVc2UgZ2V0U29tZURhdGEoKSB3aGVuZXZlciBwb3NzaWJsZQorICAgIC8vIGZv
ciBiZXR0ZXIgcGVyZm9ybWFuY2UuCisgICAgLy8gQXMgd2VsbCwgYmUgYXdhcmUgdGhhdCB0aGlz
IG1ldGhvZCBkb2VzICpub3QqIHJldHVybiBhbnkgcHVyZ2VhYmxlCisgICAgLy8gbWVtb3J5LCB3
aGljaCBjYW4gYmUgYSBzb3VyY2Ugb2YgYnVncy4KKyAgICBjb25zdCBWZWN0b3I8Y2hhcj4mIGJ1
ZmZlcigpIGNvbnN0OworCiAgICAgdm9pZCBjbGVhclBsYXRmb3JtRGF0YSgpOwogICAgIHZvaWQg
bWF5YmVUcmFuc2ZlclBsYXRmb3JtRGF0YSgpOwogICAgIGJvb2wgaGFzUGxhdGZvcm1EYXRhKCkg
Y29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcAppbmRleCAxNDM0YzY1ZDJhYjI3
ODVlY2Y0YmJiZjZlNWU0Nzg5YmVjZThhOWIxLi40NzFhYjk4ZjEwYTE0N2E5NTk5ZDdhZjlhMWI2
ODQ5MjUyNjk4ZjY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHAKQEAgLTE3OSw3
ICsxNzksNyBAQCBwdWJsaWM6CiAgICAgICAgIG1fYnl0ZXNUb1NraXAgPSBzdGQ6Om1heChudW1C
eXRlcyAtIGJ5dGVzVG9Ta2lwLCBzdGF0aWNfY2FzdDxsb25nPigwKSk7CiAgICAgfQogCi0gICAg
Ym9vbCBkZWNvZGUoY29uc3QgVmVjdG9yPGNoYXI+JiBkYXRhLCBib29sIG9ubHlTaXplKQorICAg
IGJvb2wgZGVjb2RlKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBvbmx5U2l6ZSkKICAg
ICB7CiAgICAgICAgIG1fZGVjb2RpbmdTaXplT25seSA9IG9ubHlTaXplOwogCkBAIC01MzIsNyAr
NTMyLDcgQEAgdm9pZCBKUEVHSW1hZ2VEZWNvZGVyOjpkZWNvZGUoYm9vbCBvbmx5U2l6ZSkKIAog
ICAgIC8vIElmIHdlIGNvdWxkbid0IGRlY29kZSB0aGUgaW1hZ2UgYnV0IHdlJ3ZlIHJlY2VpdmVk
IGFsbCB0aGUgZGF0YSwgZGVjb2RpbmcKICAgICAvLyBoYXMgZmFpbGVkLgotICAgIGlmICghbV9y
ZWFkZXItPmRlY29kZShtX2RhdGEtPmJ1ZmZlcigpLCBvbmx5U2l6ZSkgJiYgaXNBbGxEYXRhUmVj
ZWl2ZWQoKSkKKyAgICBpZiAoIW1fcmVhZGVyLT5kZWNvZGUoKm1fZGF0YSwgb25seVNpemUpICYm
IGlzQWxsRGF0YVJlY2VpdmVkKCkpCiAgICAgICAgIHNldEZhaWxlZCgpOwogICAgIC8vIElmIHdl
J3JlIGRvbmUgZGVjb2RpbmcgdGhlIGltYWdlLCB3ZSBkb24ndCBuZWVkIHRoZSBKUEVHSW1hZ2VS
ZWFkZXIKICAgICAvLyBhbnltb3JlLiAgKElmIHdlIGZhaWxlZCwgfG1fcmVhZGVyfCBoYXMgYWxy
ZWFkeSBiZWVuIGNsZWFyZWQuKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQSW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3dlYnAvV0VCUEltYWdlRGVjb2Rlci5jcHAKaW5kZXgg
M2RiMDBmNmE5YzUwOTA4ZWQ3ODhmMjRlYWZkZmQ0MWU3NmQ2NDBlOS4uMDYwYzYyYTU4OTA2MjEz
Y2ZhMWE0YTViYWIxMzFkMjM5MmIyNzI1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJwL1dFQlBJbWFnZURlY29kZXIu
Y3BwCkBAIC03OSw5ICs3OSw5IEBAIGJvb2wgV0VCUEltYWdlRGVjb2Rlcjo6ZGVjb2RlKGJvb2wg
b25seVNpemUpCiAKICAgICBpZiAoZmFpbGVkKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICBjb25zdCBzaXplX3QgZGF0YVNpemUgPSBtX2RhdGEtPmJ1ZmZlcigpLnNpemUoKTsKKyAgICBj
b25zdCBzaXplX3QgZGF0YVNpemUgPSBtX2RhdGEtPnNpemUoKTsKICAgICBjb25zdCB1aW50OF90
KiBkYXRhQnl0ZXMgPQotICAgICAgICByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPiht
X2RhdGEtPmJ1ZmZlcigpLmRhdGEoKSk7CisgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
dWludDhfdCo+KG1fZGF0YS0+ZGF0YSgpKTsKICAgICBpbnQgd2lkdGgsIGhlaWdodDsKICAgICBp
ZiAoZGF0YVNpemUgPCBzaXplT2ZIZWFkZXIpCiAgICAgICAgIHJldHVybiB0cnVlOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>