<?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>65502</bug_id>
          
          <creation_ts>2011-08-01 17:44:38 -0700</creation_ts>
          <short_desc>Virtual copying of FastMalloc allocated memory causes madvise MADV_FREE_REUSABLE errors</short_desc>
          <delta_ts>2011-08-02 14:19:21 -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>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Michael Saboff">msaboff</reporter>
          <assigned_to name="Michael Saboff">msaboff</assigned_to>
          <cc>psolanki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>445036</commentid>
    <comment_count>0</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2011-08-01 17:44:38 -0700</bug_when>
    <thetext>There are two instances where we make virtual copies of memory allocated via FastMalloc.  One is when we use vm_copy in PurgeableBuffer::create() and the other is implicit in CoreIPC where we use the MACH_MSG_VIRTUAL_COPY flag in Connection::sendOutgoingMessage.  In both cases, the kernel creates a second reference to the region being copied.  These additional references preclude using the MADV_FREE_REUSABLE flag in madvise.  This stops us from making memory available to the system for other processes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>445047</commentid>
    <comment_count>1</comment_count>
      <attachid>102602</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2011-08-01 17:54:45 -0700</bug_when>
    <thetext>Created attachment 102602
Proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>445053</commentid>
    <comment_count>2</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2011-08-01 18:03:40 -0700</bug_when>
    <thetext>Two defects in Radar: &lt;rdar://problem/9747241&gt; and &lt;rdar://problem/9747279&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>445065</commentid>
    <comment_count>3</comment_count>
      <attachid>102602</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-08-01 18:19:55 -0700</bug_when>
    <thetext>Comment on attachment 102602
Proposed patch

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

&gt; Source/WebCore/platform/mac/PurgeableBufferMac.cpp:67
&gt; +    memcpy(reinterpret_cast&lt;char*&gt;(buffer), data, size);

Since memcpy’s destination is a void* I would not expect you’d need to typecast a pointer to use it as a memcpy destination. Can you just pass buffer without a typecast?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>445488</commentid>
    <comment_count>4</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2011-08-02 13:27:04 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 102602 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=102602&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/mac/PurgeableBufferMac.cpp:67
&gt; &gt; +    memcpy(reinterpret_cast&lt;char*&gt;(buffer), data, size);
&gt; 
&gt; Since memcpy’s destination is a void* I would not expect you’d need to typecast a pointer to use it as a memcpy destination. Can you just pass buffer without a typecast?

The cast is needed because vm_address_t is really a uintptr_t which is an unsigned long, a non-pointer type.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>445527</commentid>
    <comment_count>5</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2011-08-02 14:19:21 -0700</bug_when>
    <thetext>Committed r92231: &lt;http://trac.webkit.org/changeset/92231&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>102602</attachid>
            <date>2011-08-01 17:54:45 -0700</date>
            <delta_ts>2011-08-01 18:19:55 -0700</delta_ts>
            <desc>Proposed patch</desc>
            <filename>65502.patch</filename>
            <type>text/plain</type>
            <size>5237</size>
            <attacher name="Michael Saboff">msaboff</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gOTIxNTUpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAK
KzIwMTEtMDgtMDEgIE1pY2hhZWwgU2Fib2ZmICA8bXNhYm9mZkBhcHBsZS5jb20+CisKKyAgICAg
ICAgVmlydHVhbCBjb3B5aW5nIG9mIEZhc3RNYWxsb2MgYWxsb2NhdGVkIG1lbW9yeSBjYXVzZXMg
bWFkdmlzZSBNQURWX0ZSRUVfUkVVU0FCTEUgZXJyb3JzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NTUwMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFdpdGggdGhlIGZpeCBvZiB0aGUgaXNzdWVzIGNhdXNp
bmcgbWFkdmlzZSBNQURWX0ZSRUVfUkVVU0FCTEUgdG8gZmFpbCwKKyAgICAgICAgYWRkZWQgYW4g
YXNzZXJ0IHRvIHRoZSByZXR1cm4gY29kZSBvZiBtYWR2aXNlIHRvIGNhdGNoIGFueSByZWdyZXNz
aW9ucy4KKworICAgICAgICAqIHd0Zi9UQ1N5c3RlbUFsbG9jLmNwcDoKKyAgICAgICAgKFRDTWFs
bG9jX1N5c3RlbVJlbGVhc2UpOgorCiAyMDExLTA3LTE0ICBEYXZpZCBMZXZpbiAgPGxldmluQGNo
cm9taXVtLm9yZz4KIAogICAgICAgICBjdXJyZW50VGhyZWFkIGlzIHRvbyBzbG93IQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9UQ1N5c3RlbUFsbG9jLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1RDU3lzdGVtQWxsb2MuY3BwCShyZXZpc2lvbiA5
MTk1NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvVENTeXN0ZW1BbGxvYy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTM5Miw3ICszOTIsMTIgQEAgdm9pZCogVENNYWxsb2NfU3lzdGVtQWxs
b2Moc2l6ZV90IHNpemUsIAogCiB2b2lkIFRDTWFsbG9jX1N5c3RlbVJlbGVhc2Uodm9pZCogc3Rh
cnQsIHNpemVfdCBsZW5ndGgpCiB7Ci0gICAgd2hpbGUgKG1hZHZpc2Uoc3RhcnQsIGxlbmd0aCwg
TUFEVl9GUkVFX1JFVVNBQkxFKSA9PSAtMSAmJiBlcnJubyA9PSBFQUdBSU4pIHsgfQorICAgIGlu
dCBtYWR2aXNlUmVzdWx0OworCisgICAgd2hpbGUgKChtYWR2aXNlUmVzdWx0ID0gbWFkdmlzZShz
dGFydCwgbGVuZ3RoLCBNQURWX0ZSRUVfUkVVU0FCTEUpKSA9PSAtMSAmJiBlcnJubyA9PSBFQUdB
SU4pIHsgfQorCisgICAgLy8gQWx0aG91Z2ggcmVhbGx5IGFkdmlzb3J5LCBpZiBtYWR2aXNlIGZh
aWwsIHdlIHdhbnQgdG8ga25vdyBhYm91dCBpdC4KKyAgICBBU1NFUlRfVU5VU0VEKG1hZHZpc2VS
ZXN1bHQsIG1hZHZpc2VSZXN1bHQgIT0gLTEpOwogfQogCiAjZWxpZiBIQVZFKE1BRFZfRlJFRSkg
fHwgSEFWRShNQURWX0RPTlRORUVEKQpJbmRleDogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gOTIxNTUpCisr
KyBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMCBA
QAorMjAxMS0wOC0wMSAgTWljaGFlbCBTYWJvZmYgIDxtc2Fib2ZmQGFwcGxlLmNvbT4KKworICAg
ICAgICBWaXJ0dWFsIGNvcHlpbmcgb2YgRmFzdE1hbGxvYyBhbGxvY2F0ZWQgbWVtb3J5IGNhdXNl
cyBtYWR2aXNlIE1BRFZfRlJFRV9SRVVTQUJMRSBlcnJvcnMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY1NTAyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ2hhbmdlIHRoZSB2bV9jb3B5IGluIFB1cmdlYWJs
ZUJ1ZmZlcjo6Y3JlYXRlIHRvIGJlIGEgbWVtY3B5LiAgVGhlCisgICAgICAgIHZtX2NvcHkgY2F1
c2VzIHRoZSBwcm9jZXNzIHRvIGhhdmUgYWRkaXRpb25hbCByZWZlcmVuY2VzIHRvIHRoZSBzYW1l
CisgICAgICAgIG1lbW9yeSByZWdpb24uICBUaGVzZSBhZGRpdGlvbmFsIHJlZmVyZW5jZSBjYXVz
ZWQgbWFkdmlzZShNQURWX0ZSRUVfUkVVU0FCTEUpCisgICAgICAgIHRvIGZhaWwgd2hlbiBpdCBl
bmNvdW50ZXJlZCBzdWNoIHBhZ2VzLgorCisgICAgICAgIE5vIHRlc3RzIGFkZGVkIHRoaXMgaXMg
YSByZXNvdXJjZSBkZWZlY3QgYW5kIG5vdCBhIGZ1bmN0aW9uYWwgaXNzdWUuCisKKyAgICAgICAg
KiBwbGF0Zm9ybS9tYWMvUHVyZ2VhYmxlQnVmZmVyTWFjLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlB1cmdlYWJsZUJ1ZmZlcjo6Y3JlYXRlKToKKwogMjAxMS0wOC0wMSAgTWljaGFlbCBOb3JkbWFu
ICA8bWljaGFlbG5AZ29vZ2xlLmNvbT4KIAogICAgICAgICBbQ2hyb21pdW1dIFdlYlNRTERhdGFi
YXNlIHZlcnNpb24gaGFuZGxpbmcgaXMgYnJva2VuIGluIG11bHRpLXByb2Nlc3MgYnJvd3NlcnMu
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUHVyZ2VhYmxlQnVmZmVyTWFjLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUHVyZ2VhYmxlQnVm
ZmVyTWFjLmNwcAkocmV2aXNpb24gOTE5NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
YWMvUHVyZ2VhYmxlQnVmZmVyTWFjLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjQsMTMgKzY0LDcg
QEAgUGFzc093blB0cjxQdXJnZWFibGVCdWZmZXI+IFB1cmdlYWJsZUJ1ZgogICAgIGlmIChyZXQg
IT0gS0VSTl9TVUNDRVNTKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldCA9IHZt
X2NvcHkobWFjaF90YXNrX3NlbGYoKSwgcmVpbnRlcnByZXRfY2FzdDx2bV9hZGRyZXNzX3Q+KGRh
dGEpLCBzaXplLCBidWZmZXIpOwotCi0gICAgQVNTRVJUKHJldCA9PSBLRVJOX1NVQ0NFU1MpOwot
ICAgIGlmIChyZXQgIT0gS0VSTl9TVUNDRVNTKSB7Ci0gICAgICAgIHZtX2RlYWxsb2NhdGUobWFj
aF90YXNrX3NlbGYoKSwgYnVmZmVyLCBzaXplKTsKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0g
ICAgfQorICAgIG1lbWNweShyZWludGVycHJldF9jYXN0PGNoYXIqPihidWZmZXIpLCBkYXRhLCBz
aXplKTsKIAogICAgIHJldHVybiBhZG9wdFB0cihuZXcgUHVyZ2VhYmxlQnVmZmVyKHJlaW50ZXJw
cmV0X2Nhc3Q8Y2hhcio+KGJ1ZmZlciksIHNpemUpKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHJldmlz
aW9uIDkyMTU1KQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTggQEAKKzIwMTEtMDgtMDEgIE1pY2hhZWwgU2Fib2ZmICA8bXNhYm9mZkBhcHBs
ZS5jb20+CisKKyAgICAgICAgVmlydHVhbCBjb3B5aW5nIG9mIEZhc3RNYWxsb2MgYWxsb2NhdGVk
IG1lbW9yeSBjYXVzZXMgbWFkdmlzZSBNQURWX0ZSRUVfUkVVU0FCTEUgZXJyb3JzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NTUwMgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENoYW5nZWQgT09MIG1lc3Nh
Z2UgdG8gdXNlIE1BQ0hfTVNHX1BIWVNJQ0FMX0NPUFkgZmxhZyBpbnN0ZWFkIG9mIHZpcnR1YWwg
ZmxhZworICAgICAgICBzbyB0aGF0IHRoZSBvcmlnaW5hbCBtZW1vcnkgcmVnaW9uIGlzbid0IHJl
ZmVyZW5jZWQgYnkgdGhlIG1lc3NhZ2UgYW5kIHVsdGltYXRlbHkKKyAgICAgICAgdGhlIHJlY2Vp
dmluZyBwcm9jZXNzLiAgVGhlIGFkZGl0aW9uYWwgcmVmZXJlbmNlIGNhdXNlZCBtYWR2aXNlKE1B
RFZfRlJFRV9SRVVTQUJMRSkKKyAgICAgICAgdG8gZmFpbCB3aGVuIGl0IGVuY291bnRlcmVkIHN1
Y2ggcGFnZXMuCisKKyAgICAgICAgKiBQbGF0Zm9ybS9Db3JlSVBDL21hYy9Db25uZWN0aW9uTWFj
LmNwcDoKKyAgICAgICAgKENvcmVJUEM6OkNvbm5lY3Rpb246OnNlbmRPdXRnb2luZ01lc3NhZ2Up
OgorCiAyMDExLTA4LTAxICBTY290dCBHcmFoYW0gIDxzY290dG1nQGNocm9taXVtLm9yZz4KIAog
ICAgICAgICBSRUdSRVNTSU9OIChyMzk3MjU/KTogUmVzb3VyY2VzIHJlbW92ZWQgZnJvbSBkb2N1
bWVudCBjYW4gbm90IGJlIGZyZWVkIHVudGlsIHRoZSBkb2N1bWVudCBpcyBkZWxldGVkCkluZGV4
OiBTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL21hYy9Db25uZWN0aW9uTWFjLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL21hYy9Db25uZWN0
aW9uTWFjLmNwcAkocmV2aXNpb24gOTE5NTQpCisrKyBTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9D
b3JlSVBDL21hYy9Db25uZWN0aW9uTWFjLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU1LDcgKzE1
NSw3IEBAIGJvb2wgQ29ubmVjdGlvbjo6c2VuZE91dGdvaW5nTWVzc2FnZShNZXMKICAgICBpZiAo
bWVzc2FnZVNpemUgPiBzaXplb2YoYnVmZmVyKSkgewogICAgICAgICBtZXNzYWdlQm9keUlzT09M
ID0gdHJ1ZTsKIAotICAgICAgICBhdHRhY2htZW50cy5hcHBlbmQoQXR0YWNobWVudChhcmd1bWVu
dHMtPmJ1ZmZlcigpLCBhcmd1bWVudHMtPmJ1ZmZlclNpemUoKSwgTUFDSF9NU0dfVklSVFVBTF9D
T1BZLCBmYWxzZSkpOworICAgICAgICBhdHRhY2htZW50cy5hcHBlbmQoQXR0YWNobWVudChhcmd1
bWVudHMtPmJ1ZmZlcigpLCBhcmd1bWVudHMtPmJ1ZmZlclNpemUoKSwgTUFDSF9NU0dfUEhZU0lD
QUxfQ09QWSwgZmFsc2UpKTsKICAgICAgICAgbnVtYmVyT2ZPT0xNZW1vcnlEZXNjcmlwdG9ycysr
OwogICAgICAgICBtZXNzYWdlU2l6ZSA9IG1hY2hNZXNzYWdlU2l6ZSgwLCBudW1iZXJPZlBvcnRE
ZXNjcmlwdG9ycywgbnVtYmVyT2ZPT0xNZW1vcnlEZXNjcmlwdG9ycyk7CiAgICAgfQo=
</data>
<flag name="review"
          id="97899"
          type_id="1"
          status="+"
          setter="andersca"
    />
          </attachment>
      

    </bug>

</bugzilla>