<?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>144474</bug_id>
          
          <creation_ts>2015-04-30 15:21:54 -0700</creation_ts>
          <short_desc>DOM bindings should not be using a reference type to point to a temporary object</short_desc>
          <delta_ts>2015-05-01 12:15:33 -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>New Bugs</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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Oliver Hunt">oliver</reporter>
          <assigned_to name="Oliver Hunt">oliver</assigned_to>
          <cc>ap</cc>
    
    <cc>bdakin</cc>
    
    <cc>darin</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1090597</commentid>
    <comment_count>0</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2015-04-30 15:21:54 -0700</bug_when>
    <thetext>DOM bindings should not be using a reference type to point to a temporary object</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1090601</commentid>
    <comment_count>1</comment_count>
      <attachid>252096</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2015-04-30 15:27:16 -0700</bug_when>
    <thetext>Created attachment 252096
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1090605</commentid>
    <comment_count>2</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2015-04-30 15:41:44 -0700</bug_when>
    <thetext>Committed r183648: &lt;http://trac.webkit.org/changeset/183648&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1090663</commentid>
    <comment_count>3</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2015-04-30 17:06:50 -0700</bug_when>
    <thetext>This broke bindings tests (need new results landed).

I&apos;m not sure if analysis in this patch is accurate, references sometimes do extend the lifetime of an object, even though that&apos;s counter-intuitive.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1090771</commentid>
    <comment_count>4</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-05-01 07:23:31 -0700</bug_when>
    <thetext>I don’t think this patch is correct; I would like more information about the problem here, and how the problem was solved. Alexey’s point is one possible source of misunderstanding that I am suspecting.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1090772</commentid>
    <comment_count>5</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-05-01 07:24:28 -0700</bug_when>
    <thetext>I’m particularly concerned about the change to %nativeType. I believe the change to the local variable pointing to existing_name is unnecessary but harmless.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1090779</commentid>
    <comment_count>6</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2015-05-01 07:56:52 -0700</bug_when>
    <thetext>native type is used to define the type used for a local, the bug here occurs when we assign a temporary to a local reference.

It does result in incorrect behavior and this trivially provable by making refptr clear the pointer reference in its destructor. The outcome is a huge number of tests failing courtesy of references to dead refptrs</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1090847</commentid>
    <comment_count>7</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2015-05-01 12:15:33 -0700</bug_when>
    <thetext>Here is the change that this patch made in generated code: &lt;https://build.webkit.org/builders/Apple%20Yosemite%20Release%20WK2%20%28Tests%29/builds/4924/steps/bindings-generation-tests/logs/stdio&gt;.

The reference used to be initialized from a ternary operator, which complicates things. Oliver told me that he is working on a minimal C++ test demonstrating that a reference doesn&apos;t extend object lifetime in this case (either correctly, or due to a clang bug).</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>252096</attachid>
            <date>2015-04-30 15:27:16 -0700</date>
            <delta_ts>2015-04-30 15:29:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-144474-20150430152605.patch</filename>
            <type>text/plain</type>
            <size>3008</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgzNjQ1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTUxNTk1NDYyMTk0ODA3
ZmI0ZTA0ZjQyYmJmNzcxNDc5YmZlYTZiNy4uNTk5ZjkyYzY2NzQwZTY2NTkzYjdlMmM2YTdkNDlk
OGYwZTQ5MjI0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDE1LTA0LTMwICBPbGl2
ZXIgSHVudCAgPG9saXZlckBhcHBsZS5jb20+CisKKyAgICAgICAgRE9NIGJpbmRpbmdzIHNob3Vs
ZCBub3QgYmUgdXNpbmcgYSByZWZlcmVuY2UgdHlwZSB0byBwb2ludCB0byBhIHRlbXBvcmFyeSBv
YmplY3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0
NDQ3NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRo
ZSBET00gYmluZGluZ3Mgd2lsbCBjdXJyZW50bHkgdHJ5IGFuZCB1c2UgYSBsb2NhbCByZWZlcmVu
Y2UgdG8gcG9pbnQKKyAgICAgICAgdG8gYSB0ZW1wb3Jhcnkgb2JqZWN0LiBUaGlzIGN1cnJlbnRs
eSB3b3JrcyBhcyBhIGJ5IHByb2R1Y3Qgb2YgdGhlIGNvbXBpbGVyJ3MKKyAgICAgICAgc3RhY2sg
bGF5b3V0LiBUaGlzIHBhdGNoIHJlbW92ZXMgdGhlIGRlcGVuZGVuY3kgb24gdW5kZWZpbmVkIGJl
aGF2aW91cgorICAgICAgICBieSBlbnN1cmluZyB0aGF0IHdlIHVzZSBhIHZhbHVlIHJhdGhlciB0
aGFuIHJlZmVyZW5jZSB0eXBlLgorCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2Vu
ZXJhdG9ySlMucG06CisgICAgICAgIChHZW5lcmF0ZVBhcmFtZXRlcnNDaGVjayk6CisgICAgICAg
IChHZXROYXRpdmVUeXBlRm9yQ2FsbGJhY2tzKToKKwogMjAxNS0wNC0zMCAgQmV0aCBEYWtpbiAg
PGJkYWtpbkBhcHBsZS5jb20+CiAKICAgICAgICAgU2hvdWxkIGNob29zZSBVSVNjcm9sbFZpZXcg
aW5kaWNhdG9yU3R5bGUgYmFzZWQgb24gdGhlIGRvY3VtZW50IGJhY2tncm91bmQgY29sb3IKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpT
LnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0K
aW5kZXggMTZhZjg4OTFlYjk1NjM5ZWQyZjk0M2ZhNzk2Yjk4Y2VhNmQ5NDk2Ny4uM2JkODRkMWVm
ZDBhNGQyODBjNjE4N2YyNDg5NjVmMDZiM2RjN2VkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KQEAgLTMzMDMsNyArMzMwMyw3
IEBAIHN1YiBHZW5lcmF0ZVBhcmFtZXRlcnNDaGVjawogICAgICAgICAgICAgICAgIHB1c2goQCRv
dXRwdXRBcnJheSwgIiAgICBBdG9taWNTdHJpbmdJbXBsKiBleGlzdGluZ18kbmFtZSA9IGV4ZWMt
PmFyZ3VtZW50KCRhcmdzSW5kZXgpLmlzRW1wdHkoKSA/IG51bGxwdHIgOiBleGVjLT5hcmd1bWVu
dCgkYXJnc0luZGV4KS50b1N0cmluZyhleGVjKS0+dG9FeGlzdGluZ0F0b21pY1N0cmluZyhleGVj
KTtcbiIpOwogICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBpZiAoIWV4
aXN0aW5nXyRuYW1lKVxuIik7CiAgICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAi
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVsbCgpKTtcbiIpOwotICAgICAgICAg
ICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBjb25zdCBBdG9taWNTdHJpbmcmICRuYW1l
KGV4aXN0aW5nXyRuYW1lKTtcbiIpOworICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJh
eSwgIiAgICBjb25zdCBBdG9taWNTdHJpbmcgJG5hbWUoZXhpc3RpbmdfJG5hbWUpO1xuIik7CiAg
ICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwg
IiAgICAiIC4gR2V0TmF0aXZlVHlwZUZyb21TaWduYXR1cmUoJHBhcmFtZXRlcikgLiAiICRuYW1l
KCIgLiBKU1ZhbHVlVG9OYXRpdmUoJHBhcmFtZXRlciwgJG9wdGlvbmFsICYmICRkZWZhdWx0QXR0
cmlidXRlICYmICRkZWZhdWx0QXR0cmlidXRlIGVxICJOdWxsU3RyaW5nIiA/ICJhcmd1bWVudE9y
TnVsbChleGVjLCAkYXJnc0luZGV4KSIgOiAiZXhlYy0+YXJndW1lbnQoJGFyZ3NJbmRleCkiLCAk
ZnVuY3Rpb24tPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNvbmRpdGlvbmFsIn0p
IC4gIik7XG4iKTsKICAgICAgICAgICAgIH0KQEAgLTM2NDQsNyArMzY0NCw3IEBAIHN1YiBHZXRO
YXRpdmVUeXBlRnJvbVNpZ25hdHVyZQogCiBteSAlbmF0aXZlVHlwZSA9ICgKICAgICAiQ29tcGFy
ZUhvdyIgPT4gIlJhbmdlOjpDb21wYXJlSG93IiwKLSAgICAiRE9NU3RyaW5nIiA9PiAiY29uc3Qg
U3RyaW5nJiIsCisgICAgIkRPTVN0cmluZyIgPT4gImNvbnN0IFN0cmluZyIsCiAgICAgIk5vZGVG
aWx0ZXIiID0+ICJSZWZQdHI8Tm9kZUZpbHRlcj4iLAogICAgICJTZXJpYWxpemVkU2NyaXB0VmFs
dWUiID0+ICJSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiIsCiAgICAgIkRhdGUiID0+ICJk
b3VibGUiLApAQCAtMzcwNCw2ICszNzA0LDcgQEAgc3ViIEdldE5hdGl2ZVR5cGVGb3JDYWxsYmFj
a3MKICAgICBteSAkdHlwZSA9IHNoaWZ0OwogICAgIHJldHVybiAiUGFzc1JlZlB0cjxTZXJpYWxp
emVkU2NyaXB0VmFsdWU+IiBpZiAkdHlwZSBlcSAiU2VyaWFsaXplZFNjcmlwdFZhbHVlIjsKICAg
ICByZXR1cm4gIlBhc3NSZWZQdHI8RE9NU3RyaW5nTGlzdD4iIGlmICR0eXBlIGVxICJET01TdHJp
bmdMaXN0IjsKKyAgICByZXR1cm4gImNvbnN0IFN0cmluZyYiIGlmICR0eXBlIGVxICJET01TdHJp
bmciOwogCiAgICAgcmV0dXJuIEdldE5hdGl2ZVR5cGUoJHR5cGUpOwogfQo=
</data>
<flag name="review"
          id="276927"
          type_id="1"
          status="+"
          setter="bdakin"
    />
          </attachment>
      

    </bug>

</bugzilla>