<?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>44971</bug_id>
          
          <creation_ts>2010-08-31 12:02:05 -0700</creation_ts>
          <short_desc>Fix ThreadableBlobRegistry methods not to rely on WorkerContext</short_desc>
          <delta_ts>2010-08-31 13:58:54 -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 JavaScript</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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Jian Li">jianli</reporter>
          <assigned_to name="Jian Li">jianli</assigned_to>
          <cc>dimich</cc>
    
    <cc>fishd</cc>
    
    <cc>kinuko</cc>
    
    <cc>levin</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>272259</commentid>
    <comment_count>0</comment_count>
    <who name="Jian Li">jianli</who>
    <bug_when>2010-08-31 12:02:05 -0700</bug_when>
    <thetext>Fix ThreadableBlobRegistry methods not to rely on WorkerContext. This is because WorkerContext could be destructed when we&apos;re performing cleanup in ScriptExecutionContext destructor.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>272267</commentid>
    <comment_count>1</comment_count>
      <attachid>66082</attachid>
    <who name="Jian Li">jianli</who>
    <bug_when>2010-08-31 12:10:59 -0700</bug_when>
    <thetext>Created attachment 66082
Proposed Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>272332</commentid>
    <comment_count>2</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2010-08-31 13:46:30 -0700</bug_when>
    <thetext>Mid-air collision -- :)

Here&apos;s my comments. Please feel free to address and submit. (In other words, r=me also.)

&gt; diff --git a/WebCore/ChangeLog b/WebCore/ChangeLog
&gt; +2010-08-31  Jian Li  &lt;jianli@chromium.org&gt;
&gt; +
&gt; +        Reviewed by NOBODY (OOPS!).
&gt; +
&gt; +        Fix ThreadableBlobRegistry methods not to rely on WorkerContext.
&gt; +        https://bugs.webkit.org/show_bug.cgi?id=44971
&gt; +
&gt; +        This could happen when we&apos;re performing some blob related cleanup

&quot;This&quot;
What could happen?

&gt; +        in ScriptExecutionContext destructor when WorkerContext dies. The fix
&gt; +        is to use isMainThread and callOnMainThread.
&gt; +

&gt; diff --git a/WebCore/fileapi/ThreadableBlobRegistry.cpp b/WebCore/fileapi/ThreadableBlobRegistry.cpp

&gt; +static void registerBlobURLTask(void* context)
&gt;  {
&gt; -    blobRegistry().registerBlobURL(url, blobData);
&gt; +    OwnPtr&lt;BlobRegistryContext&gt; blobRegistryContext = adoptPtr(static_cast&lt;BlobRegistryContext*&gt;(context));
&gt; +    blobRegistry().registerBlobURL(blobRegistryContext-&gt;url, blobRegistryContext-&gt;blobData.release());
&gt;  }
&gt;  
&gt; -void ThreadableBlobRegistry::registerBlobURL(ScriptExecutionContext* scriptExecutionContext, const KURL&amp; url, PassOwnPtr&lt;BlobData&gt; blobData)
&gt; +void ThreadableBlobRegistry::registerBlobURL(ScriptExecutionContext*, const KURL&amp; url, PassOwnPtr&lt;BlobData&gt; blobData)
&gt;  {
&gt; -    if (scriptExecutionContext-&gt;isWorkerContext())
&gt; -        postTaskToMainThread(scriptExecutionContext, createCallbackTask(&amp;registerBlobURLTask, url, blobData));
&gt; +    if (isMainThread())
&gt; +        blobRegistry().registerBlobURL(url, blobData);
&gt;      else
&gt; -        registerBlobURLTask(scriptExecutionContext, url, blobData);
&gt; +        callOnMainThread(&amp;registerBlobURLTask, new BlobRegistryContext(url, blobData));

Please use a create method and a leakPtr (see &quot;[webkit-dev] Naked new considered harmful&quot;).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>272345</commentid>
    <comment_count>3</comment_count>
    <who name="Jian Li">jianli</who>
    <bug_when>2010-08-31 13:58:54 -0700</bug_when>
    <thetext>Committed as http://trac.webkit.org/changeset/66528.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>66082</attachid>
            <date>2010-08-31 12:10:59 -0700</date>
            <delta_ts>2010-08-31 13:41:52 -0700</delta_ts>
            <desc>Proposed Patch</desc>
            <filename>44971</filename>
            <type>text/plain</type>
            <size>5611</size>
            <attacher name="Jian Li">jianli</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
M2JkNDlkYi4uMDNkMzUxZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBAQAorMjAxMC0wOC0zMSAgSmlhbiBMaSAgPGpp
YW5saUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgRml4IFRocmVhZGFibGVCbG9iUmVnaXN0cnkgbWV0aG9kcyBub3QgdG8gcmVs
eSBvbiBXb3JrZXJDb250ZXh0LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NDQ5NzEKKworICAgICAgICBUaGlzIGNvdWxkIGhhcHBlbiB3aGVuIHdlJ3Jl
IHBlcmZvcm1pbmcgc29tZSBibG9iIHJlbGF0ZWQgY2xlYW51cAorICAgICAgICBpbiBTY3JpcHRF
eGVjdXRpb25Db250ZXh0IGRlc3RydWN0b3Igd2hlbiBXb3JrZXJDb250ZXh0IGRpZXMuIFRoZSBm
aXgKKyAgICAgICAgaXMgdG8gdXNlIGlzTWFpblRocmVhZCBhbmQgY2FsbE9uTWFpblRocmVhZC4K
KworICAgICAgICAqIGZpbGVhcGkvVGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpCbG9iUmVnaXN0cnlDb250ZXh0OjpCbG9iUmVnaXN0cnlDb250ZXh0KToKKyAg
ICAgICAgKFdlYkNvcmU6OnJlZ2lzdGVyQmxvYlVSTFRhc2spOgorICAgICAgICAoV2ViQ29yZTo6
VGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJMKToKKyAgICAgICAgKFdlYkNv
cmU6OnJlZ2lzdGVyQmxvYlVSTEZyb21UYXNrKToKKyAgICAgICAgKFdlYkNvcmU6OnVucmVnaXN0
ZXJCbG9iVVJMVGFzayk6CisgICAgICAgIChXZWJDb3JlOjpUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5
Ojp1bnJlZ2lzdGVyQmxvYlVSTCk6CisKIDIwMTAtMDgtMzAgIElseWEgVGlraG9ub3Zza3kgIDxs
b2lzbG9AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEpvc2VwaCBQZWNvcmFy
by4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvZmlsZWFwaS9UaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5LmNw
cCBiL1dlYkNvcmUvZmlsZWFwaS9UaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5LmNwcAppbmRleCA4ZDcy
MDc2Li44OGFiODI0IDEwMDY0NAotLS0gYS9XZWJDb3JlL2ZpbGVhcGkvVGhyZWFkYWJsZUJsb2JS
ZWdpc3RyeS5jcHAKKysrIGIvV2ViQ29yZS9maWxlYXBpL1RocmVhZGFibGVCbG9iUmVnaXN0cnku
Y3BwCkBAIC0zNCw2NSArMzQsNzYgQEAKIAogI2luY2x1ZGUgIkJsb2JEYXRhLmgiCiAjaW5jbHVk
ZSAiQmxvYlJlZ2lzdHJ5LmgiCi0jaW5jbHVkZSAiQ3Jvc3NUaHJlYWRUYXNrLmgiCi0jaW5jbHVk
ZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0Lmgi
Ci0jaW5jbHVkZSAiV29ya2VyQ29udGV4dC5oIgotI2luY2x1ZGUgIldvcmtlckxvYWRlclByb3h5
LmgiCi0jaW5jbHVkZSAiV29ya2VyVGhyZWFkLmgiCisjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0jaWYgRU5BQkxFKEJMT0IpCitzdHJ1Y3QgQmxv
YlJlZ2lzdHJ5Q29udGV4dCB7CisgICAgQmxvYlJlZ2lzdHJ5Q29udGV4dChjb25zdCBLVVJMJiB1
cmwsIFBhc3NPd25QdHI8QmxvYkRhdGE+IGJsb2JEYXRhKQorICAgICAgICA6IHVybCh1cmwuY29w
eSgpKQorICAgICAgICAsIGJsb2JEYXRhKGJsb2JEYXRhKQorICAgIHsKKyAgICB9CisKKyAgICBC
bG9iUmVnaXN0cnlDb250ZXh0KGNvbnN0IEtVUkwmIHVybCwgY29uc3QgS1VSTCYgc3JjVVJMKQor
ICAgICAgICA6IHVybCh1cmwuY29weSgpKQorICAgICAgICAsIHNyY1VSTChzcmNVUkwuY29weSgp
KQorICAgIHsKKyAgICB9CisKKyAgICBCbG9iUmVnaXN0cnlDb250ZXh0KGNvbnN0IEtVUkwmIHVy
bCkKKyAgICAgICAgOiB1cmwodXJsLmNvcHkoKSkKKyAgICB7CisgICAgfQorCisgICAgS1VSTCB1
cmw7CisgICAgS1VSTCBzcmNVUkw7CisgICAgT3duUHRyPEJsb2JEYXRhPiBibG9iRGF0YTsKK307
CiAKLXN0YXRpYyB2b2lkIHBvc3RUYXNrVG9NYWluVGhyZWFkKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIFBhc3NPd25QdHI8U2NyaXB0RXhlY3V0aW9uQ29u
dGV4dDo6VGFzaz4gdGFzaykKLXsKLSNpZiBFTkFCTEUoV09SS0VSUykKLSAgICBBU1NFUlQoc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dC0+aXNXb3JrZXJDb250ZXh0KCkpOwotICAgIFdvcmtlckxvYWRl
clByb3h5JiBwcm94eSA9IHN0YXRpY19jYXN0PFdvcmtlckNvbnRleHQqPihzY3JpcHRFeGVjdXRp
b25Db250ZXh0KS0+dGhyZWFkKCktPndvcmtlckxvYWRlclByb3h5KCk7Ci0gICAgcHJveHkucG9z
dFRhc2tUb0xvYWRlcih0YXNrKTsKLSNlbHNlCi0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSNlbmRp
ZgotfQorI2lmIEVOQUJMRShCTE9CKQogCi1zdGF0aWMgdm9pZCByZWdpc3RlckJsb2JVUkxUYXNr
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBLVVJMJiB1cmwsIFBhc3NPd25QdHI8Qmxv
YkRhdGE+IGJsb2JEYXRhKQorc3RhdGljIHZvaWQgcmVnaXN0ZXJCbG9iVVJMVGFzayh2b2lkKiBj
b250ZXh0KQogewotICAgIGJsb2JSZWdpc3RyeSgpLnJlZ2lzdGVyQmxvYlVSTCh1cmwsIGJsb2JE
YXRhKTsKKyAgICBPd25QdHI8QmxvYlJlZ2lzdHJ5Q29udGV4dD4gYmxvYlJlZ2lzdHJ5Q29udGV4
dCA9IGFkb3B0UHRyKHN0YXRpY19jYXN0PEJsb2JSZWdpc3RyeUNvbnRleHQqPihjb250ZXh0KSk7
CisgICAgYmxvYlJlZ2lzdHJ5KCkucmVnaXN0ZXJCbG9iVVJMKGJsb2JSZWdpc3RyeUNvbnRleHQt
PnVybCwgYmxvYlJlZ2lzdHJ5Q29udGV4dC0+YmxvYkRhdGEucmVsZWFzZSgpKTsKIH0KIAotdm9p
ZCBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUkwoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgY29uc3QgS1VSTCYgdXJsLCBQYXNzT3du
UHRyPEJsb2JEYXRhPiBibG9iRGF0YSkKK3ZvaWQgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6cmVn
aXN0ZXJCbG9iVVJMKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBLVVJMJiB1cmwsIFBh
c3NPd25QdHI8QmxvYkRhdGE+IGJsb2JEYXRhKQogewotICAgIGlmIChzY3JpcHRFeGVjdXRpb25D
b250ZXh0LT5pc1dvcmtlckNvbnRleHQoKSkKLSAgICAgICAgcG9zdFRhc2tUb01haW5UaHJlYWQo
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgY3JlYXRlQ2FsbGJhY2tUYXNrKCZyZWdpc3RlckJsb2JV
UkxUYXNrLCB1cmwsIGJsb2JEYXRhKSk7CisgICAgaWYgKGlzTWFpblRocmVhZCgpKQorICAgICAg
ICBibG9iUmVnaXN0cnkoKS5yZWdpc3RlckJsb2JVUkwodXJsLCBibG9iRGF0YSk7CiAgICAgZWxz
ZQotICAgICAgICByZWdpc3RlckJsb2JVUkxUYXNrKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIHVy
bCwgYmxvYkRhdGEpOworICAgICAgICBjYWxsT25NYWluVGhyZWFkKCZyZWdpc3RlckJsb2JVUkxU
YXNrLCBuZXcgQmxvYlJlZ2lzdHJ5Q29udGV4dCh1cmwsIGJsb2JEYXRhKSk7CiB9CiAKLXN0YXRp
YyB2b2lkIHJlZ2lzdGVyQmxvYlVSTEZyb21UYXNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBj
b25zdCBLVVJMJiB1cmwsIGNvbnN0IEtVUkwmIHNyY1VSTCkKK3N0YXRpYyB2b2lkIHJlZ2lzdGVy
QmxvYlVSTEZyb21UYXNrKHZvaWQqIGNvbnRleHQpCiB7Ci0gICAgYmxvYlJlZ2lzdHJ5KCkucmVn
aXN0ZXJCbG9iVVJMKHVybCwgc3JjVVJMKTsKKyAgICBPd25QdHI8QmxvYlJlZ2lzdHJ5Q29udGV4
dD4gYmxvYlJlZ2lzdHJ5Q29udGV4dCA9IGFkb3B0UHRyKHN0YXRpY19jYXN0PEJsb2JSZWdpc3Ry
eUNvbnRleHQqPihjb250ZXh0KSk7CisgICAgYmxvYlJlZ2lzdHJ5KCkucmVnaXN0ZXJCbG9iVVJM
KGJsb2JSZWdpc3RyeUNvbnRleHQtPnVybCwgYmxvYlJlZ2lzdHJ5Q29udGV4dC0+c3JjVVJMKTsK
IH0KIAotdm9pZCBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUkwoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgY29uc3QgS1VSTCYgdXJs
LCBjb25zdCBLVVJMJiBzcmNVUkwpCit2b2lkIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lz
dGVyQmxvYlVSTChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgS1VSTCYgdXJsLCBjb25z
dCBLVVJMJiBzcmNVUkwpCiB7Ci0gICAgaWYgKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmlzV29y
a2VyQ29udGV4dCgpKQotICAgICAgICBwb3N0VGFza1RvTWFpblRocmVhZChzY3JpcHRFeGVjdXRp
b25Db250ZXh0LCBjcmVhdGVDYWxsYmFja1Rhc2soJnJlZ2lzdGVyQmxvYlVSTEZyb21UYXNrLCB1
cmwsIHNyY1VSTCkpOworICAgIGlmIChpc01haW5UaHJlYWQoKSkKKyAgICAgICAgYmxvYlJlZ2lz
dHJ5KCkucmVnaXN0ZXJCbG9iVVJMKHVybCwgc3JjVVJMKTsKICAgICBlbHNlCi0gICAgICAgIHJl
Z2lzdGVyQmxvYlVSTEZyb21UYXNrKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIHVybCwgc3JjVVJM
KTsKKyAgICAgICAgY2FsbE9uTWFpblRocmVhZCgmcmVnaXN0ZXJCbG9iVVJMRnJvbVRhc2ssIG5l
dyBCbG9iUmVnaXN0cnlDb250ZXh0KHVybCwgc3JjVVJMKSk7CiB9CiAKLXN0YXRpYyB2b2lkIHVu
cmVnaXN0ZXJCbG9iVVJMVGFzayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgS1VSTCYg
dXJsKQorc3RhdGljIHZvaWQgdW5yZWdpc3RlckJsb2JVUkxUYXNrKHZvaWQqIGNvbnRleHQpCiB7
Ci0gICAgYmxvYlJlZ2lzdHJ5KCkudW5yZWdpc3RlckJsb2JVUkwodXJsKTsKKyAgICBPd25QdHI8
QmxvYlJlZ2lzdHJ5Q29udGV4dD4gYmxvYlJlZ2lzdHJ5Q29udGV4dCA9IGFkb3B0UHRyKHN0YXRp
Y19jYXN0PEJsb2JSZWdpc3RyeUNvbnRleHQqPihjb250ZXh0KSk7CisgICAgYmxvYlJlZ2lzdHJ5
KCkudW5yZWdpc3RlckJsb2JVUkwoYmxvYlJlZ2lzdHJ5Q29udGV4dC0+dXJsKTsKIH0KIAotdm9p
ZCBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5Ojp1bnJlZ2lzdGVyQmxvYlVSTChTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBjb25zdCBLVVJMJiB1cmwpCit2b2lk
IFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnVucmVnaXN0ZXJCbG9iVVJMKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqLCBjb25zdCBLVVJMJiB1cmwpCiB7Ci0gICAgaWYgKHNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQtPmlzV29ya2VyQ29udGV4dCgpKQotICAgICAgICBwb3N0VGFza1RvTWFpblRocmVhZChz
Y3JpcHRFeGVjdXRpb25Db250ZXh0LCBjcmVhdGVDYWxsYmFja1Rhc2soJnVucmVnaXN0ZXJCbG9i
VVJMVGFzaywgdXJsKSk7CisgICAgaWYgKGlzTWFpblRocmVhZCgpKQorICAgICAgICBibG9iUmVn
aXN0cnkoKS51bnJlZ2lzdGVyQmxvYlVSTCh1cmwpOwogICAgIGVsc2UKLSAgICAgICAgdW5yZWdp
c3RlckJsb2JVUkxUYXNrKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIHVybCk7CisgICAgICAgIGNh
bGxPbk1haW5UaHJlYWQoJnVucmVnaXN0ZXJCbG9iVVJMVGFzaywgbmV3IEJsb2JSZWdpc3RyeUNv
bnRleHQodXJsKSk7CiB9CiAKICNlbHNlCg==
</data>
<flag name="review"
          id="54998"
          type_id="1"
          status="+"
          setter="fishd"
    />
    <flag name="commit-queue"
          id="54999"
          type_id="3"
          status="-"
          setter="jianli"
    />
          </attachment>
      

    </bug>

</bugzilla>