<?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>31637</bug_id>
          
          <creation_ts>2009-11-18 12:34:28 -0800</creation_ts>
          <short_desc>Need to ASSERT(isMainThread()) in ThreadShared methods.</short_desc>
          <delta_ts>2009-11-18 17:28:42 -0800</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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Dmitry Titov">dimich</reporter>
          <assigned_to name="Dmitry Titov">dimich</assigned_to>
          <cc>ap</cc>
    
    <cc>darin</cc>
    
    <cc>eric</cc>
    
    <cc>levin</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>164664</commentid>
    <comment_count>0</comment_count>
    <who name="Dmitry Titov">dimich</who>
    <bug_when>2009-11-18 12:34:28 -0800</bug_when>
    <thetext>Recent regression (bug 31615) showed that it&apos;s way too easy to pass references to Document and other TreeShared-derived classes using RefPtr/PassRefPtr between main thread and worker threads, causing refcounting of TreeShared to be used unsafe cross-thread.

Need to add asserts in at least ref(0 and deref() methods of TreeShared since they are very easy to misuse. Consider adding asserts to other methods as mentioned in bug 31615.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>164820</commentid>
    <comment_count>1</comment_count>
      <attachid>43471</attachid>
    <who name="Dmitry Titov">dimich</who>
    <bug_when>2009-11-18 16:47:44 -0800</bug_when>
    <thetext>Created attachment 43471
Proposed patch.

Added ASSERT to constructor, destructor, setParent, parent, ref and deref.

Measured run-webkit-tests on debug build - the difference is not measurable. On my machine, it takes 11 min 20 sec, +/- 10 seconds from run to run, I can not see the difference.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>164821</commentid>
    <comment_count>2</comment_count>
      <attachid>43471</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-11-18 16:48:28 -0800</bug_when>
    <thetext>Comment on attachment 43471
Proposed patch.

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>164822</commentid>
    <comment_count>3</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-11-18 16:48:45 -0800</bug_when>
    <thetext>So this assertion is not hit at all anywhere in the regression tests?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>164835</commentid>
    <comment_count>4</comment_count>
    <who name="Dmitry Titov">dimich</who>
    <bug_when>2009-11-18 17:22:06 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; So this assertion is not hit at all anywhere in the regression tests?

No, not now. It would before rollback of r50919.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>164836</commentid>
    <comment_count>5</comment_count>
    <who name="Dmitry Titov">dimich</who>
    <bug_when>2009-11-18 17:28:42 -0800</bug_when>
    <thetext>Landed: http://trac.webkit.org/changeset/51158</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>43471</attachid>
            <date>2009-11-18 16:47:44 -0800</date>
            <delta_ts>2009-11-18 16:48:28 -0800</delta_ts>
            <desc>Proposed patch.</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>2294</size>
            <attacher name="Dmitry Titov">dimich</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
NmUwN2VjNC4uODM5NWJjMyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAwOS0xMS0xOCAgRG1pdHJ5IFRpdG92
ICA8ZGltaWNoQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBOZWVkIHRvIEFTU0VSVChpc01haW5UaHJlYWQoKSkgaW4gVGhyZWFk
U2hhcmVkIG1ldGhvZHMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0zMTYzNworCisgICAgICAgIEFkZGVkIEFTU0VSVChJc01haW5UaHJlYWQoKSkgdG8g
YWxsIGZvbGxvd2luZyBtZXRob2RzOgorICAgICAgICAqIHBsYXRmb3JtL1RyZWVTaGFyZWQuaDoK
KyAgICAgICAgKFdlYkNvcmU6OlRyZWVTaGFyZWQ6OlRyZWVTaGFyZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6VHJlZVNoYXJlZDo6flRyZWVTaGFyZWQpOgorICAgICAgICAoV2ViQ29yZTo6VHJlZVNo
YXJlZDo6cmVmKToKKyAgICAgICAgKFdlYkNvcmU6OlRyZWVTaGFyZWQ6OmRlcmVmKToKKyAgICAg
ICAgKFdlYkNvcmU6OlRyZWVTaGFyZWQ6OnNldFBhcmVudCk6CisgICAgICAgIChXZWJDb3JlOjpU
cmVlU2hhcmVkOjpwYXJlbnQpOgorCiAyMDA5LTExLTE4ICBab2x0YW4gSG9ydmF0aCAgPHpvbHRh
bkB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9UcmVlU2hhcmVkLmggYi9XZWJDb3JlL3BsYXRmb3JtL1Ry
ZWVTaGFyZWQuaAppbmRleCAwMjcyOGZmLi5hNjBhZDBkIDEwMDY0NAotLS0gYS9XZWJDb3JlL3Bs
YXRmb3JtL1RyZWVTaGFyZWQuaAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL1RyZWVTaGFyZWQuaApA
QCAtMjMsNiArMjMsOSBAQAogCiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KICNpbmNsdWRl
IDx3dGYvTm9uY29weWFibGUuaD4KKyNpZm5kZWYgTkRFQlVHCisjaW5jbHVkZSA8d3RmL1RocmVh
ZGluZy5oPgorI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMzIsNiArMzUsNyBA
QCBwdWJsaWM6CiAgICAgICAgIDogbV9yZWZDb3VudChpbml0aWFsUmVmQ291bnQpCiAgICAgICAg
ICwgbV9wYXJlbnQoMCkKICAgICB7CisgICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAj
aWZuZGVmIE5ERUJVRwogICAgICAgICBtX2RlbGV0aW9uSGFzQmVndW4gPSBmYWxzZTsKICAgICAg
ICAgbV9pblJlbW92ZWRMYXN0UmVmRnVuY3Rpb24gPSBmYWxzZTsKQEAgLTM5LDExICs0MywxMyBA
QCBwdWJsaWM6CiAgICAgfQogICAgIHZpcnR1YWwgflRyZWVTaGFyZWQoKQogICAgIHsKKyAgICAg
ICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICAgICAgQVNTRVJUKG1fZGVsZXRpb25IYXNC
ZWd1bik7CiAgICAgfQogCiAgICAgdm9pZCByZWYoKQogICAgIHsKKyAgICAgICAgQVNTRVJUKGlz
TWFpblRocmVhZCgpKTsKICAgICAgICAgQVNTRVJUKCFtX2RlbGV0aW9uSGFzQmVndW4pOwogICAg
ICAgICBBU1NFUlQoIW1faW5SZW1vdmVkTGFzdFJlZkZ1bmN0aW9uKTsKICAgICAgICAgKyttX3Jl
ZkNvdW50OwpAQCAtNTEsNiArNTcsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGRlcmVmKCkKICAg
ICB7CisgICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgICAgIEFTU0VSVCghbV9k
ZWxldGlvbkhhc0JlZ3VuKTsKICAgICAgICAgQVNTRVJUKCFtX2luUmVtb3ZlZExhc3RSZWZGdW5j
dGlvbik7CiAgICAgICAgIGlmICgtLW1fcmVmQ291bnQgPD0gMCAmJiAhbV9wYXJlbnQpIHsKQEAg
LTczLDggKzgwLDE3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG1fcmVmQ291bnQ7CiAgICAg
fQogCi0gICAgdm9pZCBzZXRQYXJlbnQoVCogcGFyZW50KSB7IG1fcGFyZW50ID0gcGFyZW50OyB9
Ci0gICAgVCogcGFyZW50KCkgY29uc3QgeyByZXR1cm4gbV9wYXJlbnQ7IH0KKyAgICB2b2lkIHNl
dFBhcmVudChUKiBwYXJlbnQpCisgICAgeyAKKyAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgp
KTsKKyAgICAgICAgbV9wYXJlbnQgPSBwYXJlbnQ7IAorICAgIH0KKworICAgIFQqIHBhcmVudCgp
IGNvbnN0CisgICAgeworICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgICAgICBy
ZXR1cm4gbV9wYXJlbnQ7CisgICAgfQogCiAjaWZuZGVmIE5ERUJVRwogICAgIGJvb2wgbV9kZWxl
dGlvbkhhc0JlZ3VuOwo=
</data>
<flag name="review"
          id="25177"
          type_id="1"
          status="+"
          setter="darin"
    />
    <flag name="commit-queue"
          id="25178"
          type_id="3"
          status="-"
          setter="dimich"
    />
          </attachment>
      

    </bug>

</bugzilla>