<?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>37120</bug_id>
          
          <creation_ts>2010-04-05 15:40:39 -0700</creation_ts>
          <short_desc>ASSERT close()ing the same StorageAreaImpl twice when using multiple PageGroups</short_desc>
          <delta_ts>2010-04-05 15:57:24 -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>All</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="Brady Eidson">beidson</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>208746</commentid>
    <comment_count>0</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2010-04-05 15:40:39 -0700</bug_when>
    <thetext>ASSERT close()ing the same StorageAreaImpl twice when using multiple PageGroups

If you use multiple PageGroups and point them both to the same path for LocalStorage, you can get an ASSERT closing the same storage area twice:
    ASSERT(!m_isShutdown);
#0	0x102938f3e in WebCore::StorageNamespaceImpl::close at StorageNamespaceImpl.cpp:122
#1	0x102740fc5 in WebCore::PageGroup::closeLocalStorage at PageGroup.cpp:106
#2	0x101adf881 in +[WebView _applicationWillTerminate] at WebView.mm:2482

I&apos;ve traced through what happens when you *do* try to close it twice, and it appears there&apos;s no ill effects.  But it actually ends up trying to do synchronous I/O just to support the second close, which is a waste.

The ASSERT is invalid - we thought this case shouldn&apos;t happen, but it clearly can.  It should just be an early return instead.

In radar as &lt;rdar://problem/7828420&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>208750</commentid>
    <comment_count>1</comment_count>
      <attachid>52583</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2010-04-05 15:44:44 -0700</bug_when>
    <thetext>Created attachment 52583
Early return instead of ASSERT</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>208756</commentid>
    <comment_count>2</comment_count>
      <attachid>52583</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2010-04-05 15:52:01 -0700</bug_when>
    <thetext>Comment on attachment 52583
Early return instead of ASSERT

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>208760</commentid>
    <comment_count>3</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2010-04-05 15:57:24 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/57099</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>52583</attachid>
            <date>2010-04-05 15:44:44 -0700</date>
            <delta_ts>2010-04-05 15:52:01 -0700</delta_ts>
            <desc>Early return instead of ASSERT</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>1293</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1NzA5OCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTUgQEAKKzIwMTAtMDQtMDUgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFT
U0VSVCBjbG9zZSgpaW5nIHRoZSBzYW1lIFN0b3JhZ2VBcmVhSW1wbCB0d2ljZSB3aGVuIHVzaW5n
IG11bHRpcGxlIFBhZ2VHcm91cHMKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzc4Mjg0MjA+IGFu
ZCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzcxMjAKKworICAgICAg
ICBObyBuZXcgdGVzdHMuIChObyBiZWhhdmlvciBjaGFuZ2UpCisKKyAgICAgICAgKiBzdG9yYWdl
L1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0b3JhZ2VOYW1l
c3BhY2VJbXBsOjpjbG9zZSk6IENoYW5nZSB0aGlzIGludmFsaWQgQVNTRVJUIHRvIGFuIGVhcmx5
IHJldHVybi4KKwogMjAxMC0wNC0wNSAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBn
bWFpbC5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjU3MDMwLgpJbmRl
eDogV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuY3BwCShyZXZpc2lvbiA1NzA4
OCkKKysrIFdlYkNvcmUvc3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTExOSw3ICsxMTksOSBAQCBQYXNzUmVmUHRyPFN0b3JhZ2VBcmVhPiBTdG9yYWdl
TmFtZXNwYWNlCiB2b2lkIFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpjbG9zZSgpCiB7CiAgICAgQVNT
RVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICBBU1NFUlQoIW1faXNTaHV0ZG93bik7CisKKyAgICBp
ZiAobV9pc1NodXRkb3duKQorICAgICAgICByZXR1cm47CiAKICAgICAvLyBJZiB3ZSdyZSBzZXNz
aW9uIHN0b3JhZ2UsIHdlIHNob3VsZG4ndCBuZWVkIHRvIGRvIGFueSB3b3JrIGhlcmUuCiAgICAg
aWYgKG1fc3RvcmFnZVR5cGUgPT0gU2Vzc2lvblN0b3JhZ2UpIHsK
</data>
<flag name="review"
          id="36097"
          type_id="1"
          status="+"
          setter="oliver"
    />
    <flag name="commit-queue"
          id="36098"
          type_id="3"
          status="-"
          setter="beidson"
    />
          </attachment>
      

    </bug>

</bugzilla>