Re: [webkit-dev] About WebKit memory cache

2012-03-26 Thread Nate Chapin
On Fri, Mar 23, 2012 at 7:48 PM, gaorock por...@hotmail.com wrote:

  Hi all

 Sometimes I met crashes about memory cache, and I traced them and found a
 bit doubt:

 Should we use
 typedef HashMapString, RefPtrCachedResource CachedResourceMap;
 instead of
 typedef HashMapString, CachedResource* CachedResourceMap;?


CachedResource doesn't support reference counting in the usual model.  It
uses a somewhat confusing set of rules to decide when to delete itself. See
canDelete() in CachedResource.h. Figuring out a way to make CachedResource
use our normal reference counting model is on my list of things to do
someday. :-)



 The following is the call stack, hope it's useful for you:

   WebKit.dll!WebCore::ResourceRequestBase::updateResourceRequest()
  Line447 + 0x37 byte C++
   WebKit.dll!WebCore::ResourceRequestBase::url()  Line123 C++
   WebKit.dll!WebCore::CachedResource::url()  Line106 + 0x19 byte C++
  WebKit.dll!WebCore::CachedResourceLoader::requestResource(WebCore::CachedResource::Type
 type=ImageResource, WebCore::ResourceRequest  request={...}, const
 WTF::String  charset={...}, const WebCore::ResourceLoaderOptions 
 options={...}, WebCore::ResourceLoadPriority priority=-1, bool
 forPreload=false)  Line444 + 0x11 byte C++
   
 WebKit.dll!WebCore::CachedResourceLoader::requestImage(WebCore::ResourceRequest
  request={...})  Line160 + 0x21 byte C++
   WebKit.dll!WebCore::CSSImageValue::cachedImage(WebCore::CachedResourceLoader
 * loader=0x00e6e6d8, const WTF::String  url={...})  Line90 + 0xf byte C++
   WebKit.dll!WebCore::CSSImageValue::cachedImage(WebCore::CachedResourceLoader
 * loader=0x00e6e6d8)  Line79 + 0x19 byte C++
   
 WebKit.dll!WebCore::CSSStyleSelector::loadPendingImage(WebCore::StylePendingImage
 * pendingImage=0x0ada6f30)  Line5306 + 0xc byte C++
   WebKit.dll!WebCore::CSSStyleSelector::loadPendingImages()  Line5331 +
 0x15 byte C++
   WebKit.dll!WebCore::CSSStyleSelector::applyMatchedDeclarations(const
 WebCore::CSSStyleSelector::MatchResult  matchResult={...})  Line2408 C++
   WebKit.dll!WebCore::CSSStyleSelector::styleForElement(WebCore::Element
 * element=0x0ad08088, WebCore::RenderStyle * defaultParent=0x, bool
 allowSharing=true, bool resolveForRootDefault=false)  Line1310 C++
   WebKit.dll!WebCore::Element::styleForRenderer()  Line1035 + 0x24 byte
 C++
   WebKit.dll!WebCore::Element::recalcStyle(WebCore::Node::StyleChange
 change=NoChange)  Line1059 + 0xc byte C++
   WebKit.dll!WebCore::Element::recalcStyle(WebCore::Node::StyleChange
 change=NoChange)  Line1138 C++
   WebKit.dll!WebCore::Element::recalcStyle(WebCore::Node::StyleChange
 change=NoChange)  Line1138 C++
   WebKit.dll!WebCore::Element::recalcStyle(WebCore::Node::StyleChange
 change=NoChange)  Line1138 C++
   WebKit.dll!WebCore::Element::recalcStyle(WebCore::Node::StyleChange
 change=NoChange)  Line1138 C++
   WebKit.dll!WebCore::Element::recalcStyle(WebCore::Node::StyleChange
 change=NoChange)  Line1138 C++
   WebKit.dll!WebCore::Element::recalcStyle(WebCore::Node::StyleChange
 change=NoChange)  Line1138 C++
   WebKit.dll!WebCore::Element::recalcStyle(WebCore::Node::StyleChange
 change=NoChange)  Line1138 C++
   WebKit.dll!WebCore::Element::recalcStyle(WebCore::Node::StyleChange
 change=NoChange)  Line1138 C++
   WebKit.dll!WebCore::Document::recalcStyle(WebCore::Node::StyleChange
 change=NoChange)  Line1574 C++
   WebKit.dll!WebCore::Document::updateStyleIfNeeded()  Line1634 C++
   WebKit.dll!WebCore::Document::updateLayout()  Line1658 + 0x12 byte C++

 In the function of WebCore::ResourceRequestBase::updateResourceRequest(),
 the point this is NOT null, but all of its members are null, so actually
 it had been freed before. So I think the refCount may be helpful to solve
 this problem.

 This is my first time to write to WebKit-dev, it will be appreciated if
 someone could give me some instructions or whether I should file a bug for
 it?


Yes, please file a bug on bugs.webkit.org, and feel free to point me in its
direction.



 Thanks in advance!

 Best Regards
 Rock

 ___
 webkit-dev mailing list
 webkit-dev@lists.webkit.org
 http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev


___
webkit-dev mailing list
webkit-dev@lists.webkit.org
http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev


Re: [webkit-dev] About WebKit memory cache

2012-03-26 Thread gaorock

Hi jap...@chromium.org
Thanks for your reply :)The bug#82287 has been filed.
Best RegardsRock

Date: Mon, 26 Mar 2012 08:44:36 -0700
Subject: Re: [webkit-dev] About WebKit memory cache
From: jap...@chromium.org
To: por...@hotmail.com
CC: webkit-dev@lists.webkit.org

On Fri, Mar 23, 2012 at 7:48 PM, gaorock por...@hotmail.com wrote:





Hi all
Sometimes I met crashes about memory cache, and I traced them and found a bit 
doubt:
Should we use typedef HashMapString, RefPtrCachedResource CachedResourceMap;
instead of typedef HashMapString, CachedResource* CachedResourceMap;?
CachedResource doesn't support reference counting in the usual model.  It uses 
a somewhat confusing set of rules to decide when to delete itself. See 
canDelete() in CachedResource.h. Figuring out a way to make CachedResource use 
our normal reference counting model is on my list of things to do someday. :-)
 
The following is the call stack, hope it's useful for you:

WebKit.dll!WebCore::ResourceRequestBase::updateResourceRequest()  
Line447 + 0x37 byte   C++ WebKit.dll!WebCore::ResourceRequestBase::url()  
Line123 C++
WebKit.dll!WebCore::CachedResource::url()  Line106 + 0x19 byte  C++
WebKit.dll!WebCore::CachedResourceLoader::requestResource(WebCore::CachedResource::Type
 type=ImageResource, WebCore::ResourceRequest  request={...}, const 
WTF::String  charset={...}, const WebCore::ResourceLoaderOptions  
options={...}, WebCore::ResourceLoadPriority priority=-1, bool 
forPreload=false)  Line444 + 0x11 byte   C++

WebKit.dll!WebCore::CachedResourceLoader::requestImage(WebCore::ResourceRequest 
 request={...})  Line160 + 0x21 byte   C++

WebKit.dll!WebCore::CSSImageValue::cachedImage(WebCore::CachedResourceLoader * 
loader=0x00e6e6d8, const WTF::String  url={...})  Line90 + 0xf byte C++

WebKit.dll!WebCore::CSSImageValue::cachedImage(WebCore::CachedResourceLoader * 
loader=0x00e6e6d8)  Line79 + 0x19 byte   C++

WebKit.dll!WebCore::CSSStyleSelector::loadPendingImage(WebCore::StylePendingImage
 * pendingImage=0x0ada6f30)  Line5306 + 0xc byte   C++
WebKit.dll!WebCore::CSSStyleSelector::loadPendingImages()  Line5331 + 
0x15 byte C++ 
WebKit.dll!WebCore::CSSStyleSelector::applyMatchedDeclarations(const 
WebCore::CSSStyleSelector::MatchResult  matchResult={...})  Line2408  C++
WebKit.dll!WebCore::CSSStyleSelector::styleForElement(WebCore::Element 
* element=0x0ad08088, WebCore::RenderStyle * defaultParent=0x, bool 
allowSharing=true, bool resolveForRootDefault=false)  Line1310   C++
WebKit.dll!WebCore::Element::styleForRenderer()  Line1035 + 0x24 byte   
C++ WebKit.dll!WebCore::Element::recalcStyle(WebCore::Node::StyleChange 
change=NoChange)  Line1059 + 0xc byte   C++
WebKit.dll!WebCore::Element::recalcStyle(WebCore::Node::StyleChange 
change=NoChange)  Line1138  C++ 
WebKit.dll!WebCore::Element::recalcStyle(WebCore::Node::StyleChange 
change=NoChange)  Line1138  C++
WebKit.dll!WebCore::Element::recalcStyle(WebCore::Node::StyleChange 
change=NoChange)  Line1138  C++ 
WebKit.dll!WebCore::Element::recalcStyle(WebCore::Node::StyleChange 
change=NoChange)  Line1138  C++
WebKit.dll!WebCore::Element::recalcStyle(WebCore::Node::StyleChange 
change=NoChange)  Line1138  C++ 
WebKit.dll!WebCore::Element::recalcStyle(WebCore::Node::StyleChange 
change=NoChange)  Line1138  C++
WebKit.dll!WebCore::Element::recalcStyle(WebCore::Node::StyleChange 
change=NoChange)  Line1138  C++ 
WebKit.dll!WebCore::Element::recalcStyle(WebCore::Node::StyleChange 
change=NoChange)  Line1138  C++
WebKit.dll!WebCore::Document::recalcStyle(WebCore::Node::StyleChange 
change=NoChange)  Line1574 C++ 
WebKit.dll!WebCore::Document::updateStyleIfNeeded()  Line1634   C++
WebKit.dll!WebCore::Document::updateLayout()  Line1658 + 0x12 byte  
C++
In the function of WebCore::ResourceRequestBase::updateResourceRequest(), the 
point this is NOT null, but all of its members are null, so actually it had 
been freed before. So I think the refCount may be helpful to solve this problem.

This is my first time to write to WebKit-dev, it will be appreciated if someone 
could give me some instructions or whether I should file a bug for it?

Yes, please file a bug on bugs.webkit.org, and feel free to point me in its 
direction. 

Thanks in advance!
Best RegardsRock  

___

webkit-dev mailing list

webkit-dev@lists.webkit.org

http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev



  
___
webkit-dev mailing list
webkit-dev@lists.webkit.org
http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev