<?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>85301</bug_id>
          
          <creation_ts>2012-05-01 12:11:17 -0700</creation_ts>
          <short_desc>Crash calling disconnectFrame on a DOMWindowExtension a second time</short_desc>
          <delta_ts>2012-05-01 13:17:58 -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>Page Loading</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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Jessie Berlin">jberlin</reporter>
          <assigned_to name="Jessie Berlin">jberlin</assigned_to>
          <cc>abarth</cc>
    
    <cc>beidson</cc>
    
    <cc>eric</cc>
    
    <cc>jberlin</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>613580</commentid>
    <comment_count>0</comment_count>
    <who name="Jessie Berlin">jberlin</who>
    <bug_when>2012-05-01 12:11:17 -0700</bug_when>
    <thetext>CRASH: com.apple.WebCore:  WebCore::DOMWindowExtension::disconnectFrame + 31

   1 com.apple.WebCore              0x10eae409f WebCore::DOMWindowExtension::disconnectFrame() + 0x1f
   2 com.apple.WebCore              0x10eae31ea WebCore::DOMWindow::disconnectDOMWindowProperties() + 0xfa
   3 com.apple.WebCore              0x10eae2a82 WebCore::DOMWindow::clearDOMWindowProperties() + 0x12
   4 com.apple.WebCore              0x10eae2687 WebCore::DOMWindow::~DOMWindow() + 0x27
   5 com.apple.WebCore              0x10e49fa21 WebCore::DOMWindow::~DOMWindow() + 0x11
   6 com.apple.WebCore              0x10ec96864 WebCore::JSDOMWindowBase::~JSDOMWindowBase() + 0x34
   7 com.apple.JavaScriptCore       0x10e25615e JSC::MarkedBlock::FreeList JSC::MarkedBlock::sweepHelper&lt;true&gt;(JSC::MarkedBlock::SweepMode) + 0x18e
   8 com.apple.JavaScriptCore       0x10e255f84 JSC::MarkedBlock::sweep(JSC::MarkedBlock::SweepMode) + 0x24
   9 com.apple.JavaScriptCore       0x10e2017cb JSC::Heap::sweep() + 0xcb
  10 com.apple.JavaScriptCore       0x10e201915 JSC::Heap::collect(JSC::Heap::SweepToggle) + 0xf5
  11 com.apple.JavaScriptCore       0x10e20080d JSC::DefaultGCActivityCallbackPlatformData::timerDidFire(__CFRunLoopTimer*, void*) + 0x9d

&lt;rdar://problem/11353945&gt;

DOMWindow calls disconnectFrame on all its DOMWindowProperties, even in cases where it previously called disconnectFrame when going into the page cache.

DOMWindowExtension should bail early if it already has a disconnected frame, since it has already notified any client the first time disconnectFrame was invoked.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>613582</commentid>
    <comment_count>1</comment_count>
      <attachid>139657</attachid>
    <who name="Jessie Berlin">jberlin</who>
    <bug_when>2012-05-01 12:15:48 -0700</bug_when>
    <thetext>Created attachment 139657
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>613586</commentid>
    <comment_count>2</comment_count>
      <attachid>139657</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2012-05-01 12:42:20 -0700</bug_when>
    <thetext>Comment on attachment 139657
Patch

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

Is there a way to create a regression test for this?

&gt; Source/WebCore/page/DOMWindowExtension.cpp:60
&gt; +        ASSERT(!this-&gt;frame());

No need for this-&gt; here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>613589</commentid>
    <comment_count>3</comment_count>
    <who name="Jessie Berlin">jberlin</who>
    <bug_when>2012-05-01 12:49:49 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 139657 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=139657&amp;action=review
&gt; 
&gt; Is there a way to create a regression test for this?

The only way I was able to reproduce this was to keep navigating to pages that were page-cache-worthy until the JSC timer was fired. I am not sure what else would reliably trigger the DOMWindow destruction after it had already gone into the the page cache without first detaching the page.

&gt; 
&gt; &gt; Source/WebCore/page/DOMWindowExtension.cpp:60
&gt; &gt; +        ASSERT(!this-&gt;frame());
&gt; 
&gt; No need for this-&gt; here.

Fixed.

Thanks for the review!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>613607</commentid>
    <comment_count>4</comment_count>
      <attachid>139657</attachid>
    <who name="Jessie Berlin">jberlin</who>
    <bug_when>2012-05-01 13:15:05 -0700</bug_when>
    <thetext>Comment on attachment 139657
Patch

Committed in http://trac.webkit.org/changeset/115746</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>139657</attachid>
            <date>2012-05-01 12:15:48 -0700</date>
            <delta_ts>2012-05-01 13:15:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>fix.patch</filename>
            <type>text/plain</type>
            <size>1784</size>
            <attacher name="Jessie Berlin">jberlin</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBlMThjNDIwLi5jZDkzOGMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTgg
QEAKKzIwMTItMDUtMDEgIEplc3NpZSBCZXJsaW4gIDxqYmVybGluQGFwcGxlLmNvbT4KKworICAg
ICAgICBDcmFzaCBjYWxsaW5nIGRpc2Nvbm5lY3RGcmFtZSBvbiBhIERPTVdpbmRvd0V4dGVuc2lv
biBhIHNlY29uZCB0aW1lLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9ODUzMDEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBET01XaW5kb3dFeHRlbnNpb246OmRpc2Nvbm5lY3RGcmFtZSBhc3N1bWVkIGl0IHdv
dWxkIG9ubHkgYmUgY2FsbGVkIHdoZW4gdGhlcmUgd2FzIGEgZnJhbWUKKyAgICAgICAgdG8gZGlz
Y29ubmVjdC4gSG93ZXZlciwgRE9NV2luZG93J3MgZGVzdHJ1Y3RvciBpbnZva2VzIGRpc2Nvbm5l
Y3RGcmFtZSBvbiBhbGwgaXRzCisgICAgICAgIERPTVdpbmRvd1Byb3BlcnRpZXMsIGV2ZW4gaWYg
aXQgYWxyZWFkeSBkaWQgc28gd2hlbiBpdCBlbnRlcmVkIHRoZSBwYWdlIGNhY2hlLgorCisgICAg
ICAgICogcGFnZS9ET01XaW5kb3dFeHRlbnNpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9N
V2luZG93RXh0ZW5zaW9uOjpkaXNjb25uZWN0RnJhbWUpOgorICAgICAgICBEb24ndCBkbyBhbnl0
aGluZyBpZiB0aGUgZnJhbWUgaGFzIGFscmVhZHkgYmVlbiBkaXNjb25uZWN0ZWQuCisKIDIwMTIt
MDQtMjggIEVtaWwgQSBFa2x1bmQgIDxlYWVAY2hyb21pdW0ub3JnPiBhbmQgTGV2aSBXZWludHJh
dWIgIDxsZXZpd0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgQWRkIEVOQUJMRV9TVUJQSVhFTF9M
QVlPVVQgY29udHJvbGxpbmcgRnJhY3Rpb25hbExheW91dFVuaXQgZGVub21pbmF0b3IKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93RXh0ZW5zaW9uLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93RXh0ZW5zaW9uLmNwcAppbmRleCBiZDU2OGE2Li4yYjIx
Y2Q3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvd0V4dGVuc2lvbi5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3dFeHRlbnNpb24uY3BwCkBAIC01
NCw2ICs1NCwxMyBAQCBET01XaW5kb3dFeHRlbnNpb246On5ET01XaW5kb3dFeHRlbnNpb24oKQog
CiB2b2lkIERPTVdpbmRvd0V4dGVuc2lvbjo6ZGlzY29ubmVjdEZyYW1lKCkKIHsKKyAgICAvLyBU
aGUgRE9NV2luZG93IGRlc3RydWN0b3IgY2FsbHMgZGlzY29ubmVjdEZyYW1lIG9uIGFsbCBpdHMg
RE9NV2luZG93UHJvcGVydGllcywgZXZlbiBpZiBpdAorICAgIC8vIGRpZCB0aGF0IGFscmVhZHkg
d2hlbiBlbnRlcmluZyB0aGUgcGFnZSBjYWNoZS4KKyAgICBpZiAobV9kaXNjb25uZWN0ZWRGcmFt
ZSkgeworICAgICAgICBBU1NFUlQoIXRoaXMtPmZyYW1lKCkpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorCiAgICAgLy8gQ2FsbGluZyBvdXQgdG8gdGhlIGNsaWVudCBtaWdodCByZXN1bHQgaW4g
dGhpcyBET01XaW5kb3dFeHRlbnNpb24gYmVpbmcgZGVzdHJveWVkCiAgICAgLy8gd2hpbGUgdGhl
cmUgaXMgc3RpbGwgd29yayB0byBkby4KICAgICBSZWZQdHI8RE9NV2luZG93RXh0ZW5zaW9uPiBw
cm90ZWN0b3IgPSB0aGlzOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>