<?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>131203</bug_id>
          
          <creation_ts>2014-04-03 18:36:48 -0700</creation_ts>
          <short_desc>Crash in plugin process</short_desc>
          <delta_ts>2014-04-07 23:15:37 -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>Plug-ins</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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Stephanie Lewis">slewis</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>andersca</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>slewis</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>997423</commentid>
    <comment_count>0</comment_count>
      <attachid>228573</attachid>
    <who name="Stephanie Lewis">slewis</who>
    <bug_when>2014-04-03 18:36:48 -0700</bug_when>
    <thetext>Created attachment 228573
patch

&lt;rdar://problem/16479432&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>997425</commentid>
    <comment_count>1</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-04-03 18:37:55 -0700</bug_when>
    <thetext>Attachment 228573 did not pass style-queue:


ERROR: Source/WebKit2/ChangeLog:1:  ChangeLog entry has no bug number  [changelog/bugnumber] [5]
Total errors found: 1 in 2 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>997439</commentid>
    <comment_count>2</comment_count>
      <attachid>228573</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2014-04-03 19:04:43 -0700</bug_when>
    <thetext>Comment on attachment 228573
patch

r=me

You should explain in your ChangeLog that the old code crashed because it the C++ scope would delete its pluginController before the call to pluginDidBecomeHidden.

Would it be better for this function to take a pluginInstanceID argument, instead of a raw (dangerous) PluginControllerProxy pointer?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>998408</commentid>
    <comment_count>3</comment_count>
    <who name="Stephanie Lewis">slewis</who>
    <bug_when>2014-04-07 20:51:44 -0700</bug_when>
    <thetext>committed http://trac.webkit.org/projects/webkit/changeset/166907</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>998449</commentid>
    <comment_count>4</comment_count>
      <attachid>228573</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-04-07 23:15:37 -0700</bug_when>
    <thetext>Comment on attachment 228573
patch

View in context: https://bugs.webkit.org/attachment.cgi?id=228573&amp;action=review

&gt; Source/WebKit2/PluginProcess/WebProcessConnection.cpp:96
&gt; +    unsigned pluginInstanceID = pluginController-&gt;pluginInstanceID();
&gt;      {
&gt; -        ASSERT(m_pluginControllers.contains(pluginController-&gt;pluginInstanceID()));
&gt; +        ASSERT(m_pluginControllers.contains(pluginInstanceID));
&gt;  
&gt; -        std::unique_ptr&lt;PluginControllerProxy&gt; pluginControllerUniquePtr = m_pluginControllers.take(pluginController-&gt;pluginInstanceID());
&gt; +        std::unique_ptr&lt;PluginControllerProxy&gt; pluginControllerUniquePtr = m_pluginControllers.take(pluginInstanceID);
&gt;          ASSERT(pluginControllerUniquePtr.get() == pluginController);
&gt;      }
&gt;  
&gt; -    pluginDidBecomeHidden(pluginController-&gt;pluginInstanceID());
&gt; +    pluginDidBecomeHidden(pluginInstanceID);

Not really sure why the original code uses take. I would write this like this:

    unsigned instanceID = pluginController-&gt;pluginInstanceID();

    ASSERT(m_pluginControllers.get(pluginInstanceID) == pluginController);
    m_pluginControllers.remove(instanceID);

    pluginDidBecomeHidden(pluginInstanceID);</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>228573</attachid>
            <date>2014-04-03 18:36:48 -0700</date>
            <delta_ts>2014-04-07 23:15:37 -0700</delta_ts>
            <desc>patch</desc>
            <filename>0001-Crash-in-com.apple.WebKit.Plugin.Development-at-com..patch</filename>
            <type>text/plain</type>
            <size>2570</size>
            <attacher name="Stephanie Lewis">slewis</attacher>
            
              <data encoding="base64">RnJvbSBhMjFkZTE2MjMyNjlkMzg3NzQ5ODU5NjdiODBjNjhhNWVkNDllY2M1IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBTdGVwaGFuaWUgTGV3aXMgPHNsZXdpc0BhcHBsZS5jb20+CkRh
dGU6IFRodSwgMyBBcHIgMjAxNCAxODozMjoyOSAtMDcwMApTdWJqZWN0OiBbUEFUQ0hdIENyYXNo
IGluIGNvbS5hcHBsZS5XZWJLaXQuUGx1Z2luLkRldmVsb3BtZW50IGF0CiBjb20uYXBwbGUuV2Vi
S2l0MjogV2ViS2l0OjpQbHVnaW5Db250cm9sbGVyUHJveHk6OnBsdWdpbkluc3RhbmNlSUQKIDxy
ZGFyOi8vcHJvYmxlbS8xNjQ3OTQzMj4KClJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgoKKiBQ
bHVnaW5Qcm9jZXNzL1dlYlByb2Nlc3NDb25uZWN0aW9uLmNwcDoKKFdlYktpdDo6V2ViUHJvY2Vz
c0Nvbm5lY3Rpb246OnJlbW92ZVBsdWdpbkNvbnRyb2xsZXJQcm94eSk6Ci0tLQogU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAxMCArKysrKysr
KysrCiBTb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL1dlYlByb2Nlc3NDb25uZWN0aW9uLmNw
cCB8ICA3ICsrKystLS0KIDIgZmlsZXMgY2hhbmdlZCwgMTQgaW5zZXJ0aW9ucygrKSwgMyBkZWxl
dGlvbnMoLSkKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNTRkOWIwMi4uNzQ5Yjk5MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDEzIEBACisyMDE0LTA0LTAzICBTdGVwaGFuaWUgTGV3aXMgIDxzbGV3aXNAYXBwbGUu
Y29tPgorCisgICAgICAgIENyYXNoIGluIGNvbS5hcHBsZS5XZWJLaXQuUGx1Z2luLkRldmVsb3Bt
ZW50IGF0IGNvbS5hcHBsZS5XZWJLaXQyOiBXZWJLaXQ6OlBsdWdpbkNvbnRyb2xsZXJQcm94eTo6
cGx1Z2luSW5zdGFuY2VJRAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTY0Nzk0MzI+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBQbHVnaW5Qcm9j
ZXNzL1dlYlByb2Nlc3NDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vz
c0Nvbm5lY3Rpb246OnJlbW92ZVBsdWdpbkNvbnRyb2xsZXJQcm94eSk6CisKIDIwMTQtMDQtMDIg
IERlYW4gSmFja3NvbiAgPGRpbm9AYXBwbGUuY29tPgogCiAgICAgICAgIFtpT1NdIEV4cG9zZSBn
ZW9sb2NhdGlvbiBwcm92aWRlciBvbiB0aGUgcHJvY2VzcyBwb29sCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL1dlYlByb2Nlc3NDb25uZWN0aW9uLmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCmluZGV4IGZl
ODQxZTAuLmY5MmMxNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3Mv
V2ViUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nl
c3MvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCkBAIC04NSwxNCArODUsMTUgQEAgdm9pZCBXZWJQ
cm9jZXNzQ29ubmVjdGlvbjo6ZGVzdHJveVBsdWdpbkNvbnRyb2xsZXJQcm94eShQbHVnaW5Db250
cm9sbGVyUHJveHkqIHAKIAogdm9pZCBXZWJQcm9jZXNzQ29ubmVjdGlvbjo6cmVtb3ZlUGx1Z2lu
Q29udHJvbGxlclByb3h5KFBsdWdpbkNvbnRyb2xsZXJQcm94eSogcGx1Z2luQ29udHJvbGxlciwg
UGx1Z2luKiBwbHVnaW4pCiB7CisgICAgdW5zaWduZWQgcGx1Z2luSW5zdGFuY2VJRCA9IHBsdWdp
bkNvbnRyb2xsZXItPnBsdWdpbkluc3RhbmNlSUQoKTsKICAgICB7Ci0gICAgICAgIEFTU0VSVCht
X3BsdWdpbkNvbnRyb2xsZXJzLmNvbnRhaW5zKHBsdWdpbkNvbnRyb2xsZXItPnBsdWdpbkluc3Rh
bmNlSUQoKSkpOworICAgICAgICBBU1NFUlQobV9wbHVnaW5Db250cm9sbGVycy5jb250YWlucyhw
bHVnaW5JbnN0YW5jZUlEKSk7CiAKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFBsdWdpbkNvbnRy
b2xsZXJQcm94eT4gcGx1Z2luQ29udHJvbGxlclVuaXF1ZVB0ciA9IG1fcGx1Z2luQ29udHJvbGxl
cnMudGFrZShwbHVnaW5Db250cm9sbGVyLT5wbHVnaW5JbnN0YW5jZUlEKCkpOworICAgICAgICBz
dGQ6OnVuaXF1ZV9wdHI8UGx1Z2luQ29udHJvbGxlclByb3h5PiBwbHVnaW5Db250cm9sbGVyVW5p
cXVlUHRyID0gbV9wbHVnaW5Db250cm9sbGVycy50YWtlKHBsdWdpbkluc3RhbmNlSUQpOwogICAg
ICAgICBBU1NFUlQocGx1Z2luQ29udHJvbGxlclVuaXF1ZVB0ci5nZXQoKSA9PSBwbHVnaW5Db250
cm9sbGVyKTsKICAgICB9CiAKLSAgICBwbHVnaW5EaWRCZWNvbWVIaWRkZW4ocGx1Z2luQ29udHJv
bGxlci0+cGx1Z2luSW5zdGFuY2VJRCgpKTsKKyAgICBwbHVnaW5EaWRCZWNvbWVIaWRkZW4ocGx1
Z2luSW5zdGFuY2VJRCk7CiAKICAgICAvLyBJbnZhbGlkYXRlIGFsbCBvYmplY3RzIHJlbGF0ZWQg
dG8gdGhpcyBwbHVnLWluLgogICAgIGlmIChwbHVnaW4pCi0tIAoxLjguNS4yIChBcHBsZSBHaXQt
NDgpCgo=
</data>
<flag name="review"
          id="252869"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>