<?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>37584</bug_id>
          
          <creation_ts>2010-04-14 10:14:55 -0700</creation_ts>
          <short_desc>LEAK: in ThreadableWebSocketChannel::create()</short_desc>
          <delta_ts>2010-04-15 08:26:19 -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 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="Shinichiro Hamaji">hamaji</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>ukai</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>212411</commentid>
    <comment_count>0</comment_count>
    <who name="Shinichiro Hamaji">hamaji</who>
    <bug_when>2010-04-14 10:14:55 -0700</bug_when>
    <thetext>Call stack: [thread 0xb0227000]: | thread_start | _pthread_start | __ZN3WTFL16threadEntryPointEPv | WebCore::WorkerThread::workerThreadStart(void*) | WebCore::WorkerThread::workerThread() | WebCore::WorkerScriptController::evaluate(WebCore::ScriptSourceCode const&amp;) | WebCore::WorkerScriptController::evaluate(We
bCore::ScriptSourceCode const&amp;, WebCore::ScriptValue*) | JSC::evaluate(JSC::ExecState*, JSC::ScopeChain&amp;, JSC::SourceCode const&amp;, JSC::JSValue) | JSC::Interpreter::execute(JSC::ProgramExecutable*, JSC::ExecState*, JSC::ScopeChainNode*, JSC:
:JSObject*, JSC::JSValue*) | JSC::JITCode::execute(JSC::RegisterFile*, JSC::ExecState*, JSC::JSGlobalData*, JSC::JSValue*) | jscGeneratedNativeCode | cti_op_construct_NotJSConstruct | __ZN7WebCoreL18constructWebSocketEPN3JSC9ExecStateEPNS0_
8JSObjectERKNS0_7ArgListE | WebCore::WebSocket::connect(WebCore::KURL const&amp;, int&amp;) | WebCore::WebSocket::connect(WebCore::KURL const&amp;, WebCore::String const&amp;, int&amp;) | WebCore::ThreadableWebSocketChannel::create(WebCore::ScriptExecutionContext*, WebCore::WebSocketChannelClient*, WebCore::KURL const&amp;, WebCore::String const&amp;) | WebCore::String::append(WebCore::String const&amp;) | WebCore::StringImpl::c
reateUninitialized(unsigned int, unsigned short*&amp;) | WTF::fastMalloc(unsigned long) | malloc | malloc_zone_malloc 

Looks like WorkerThreadableWebSocketChannel::Bridge isn&apos;t freed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>212412</commentid>
    <comment_count>1</comment_count>
      <attachid>53343</attachid>
    <who name="Shinichiro Hamaji">hamaji</who>
    <bug_when>2010-04-14 10:16:36 -0700</bug_when>
    <thetext>Created attachment 53343
Patch v1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>212417</commentid>
    <comment_count>2</comment_count>
    <who name="Fumitoshi Ukai">ukai</who>
    <bug_when>2010-04-14 10:24:06 -0700</bug_when>
    <thetext>(In reply to comment #1)
&gt; Created an attachment (id=53343) [details]
&gt; Patch v1

LGTM.
Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>212443</commentid>
    <comment_count>3</comment_count>
      <attachid>53343</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2010-04-14 11:15:00 -0700</bug_when>
    <thetext>Comment on attachment 53343
Patch v1


&gt; diff --git a/WebCore/websockets/WorkerThreadableWebSocketChannel.cpp b/WebCore/websockets/WorkerThreadableWebSocketChannel.cpp
&gt; index 3dda104..d99efaa 100644
&gt; --- a/WebCore/websockets/WorkerThreadableWebSocketChannel.cpp
&gt; +++ b/WebCore/websockets/WorkerThreadableWebSocketChannel.cpp
&gt; @@ -52,7 +52,7 @@ namespace WebCore {
&gt;  WorkerThreadableWebSocketChannel::WorkerThreadableWebSocketChannel(WorkerContext* context, WebSocketChannelClient* client, const String&amp; taskMode, const KURL&amp; url, const String&amp; protocol)
&gt;      : m_workerContext(context)
&gt;      , m_workerClientWrapper(ThreadableWebSocketChannelClientWrapper::create(client))
&gt; -    , m_bridge(new Bridge(m_workerClientWrapper, m_workerContext, taskMode, url, protocol))
&gt; +    , m_bridge(adoptRef(new Bridge(m_workerClientWrapper, m_workerContext, taskMode, url, protocol)))

The standard way to do this is to make the constructor private and make a static create method which does the adoptRef and returns a PassRefPtr.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>212463</commentid>
    <comment_count>4</comment_count>
      <attachid>53348</attachid>
    <who name="Shinichiro Hamaji">hamaji</who>
    <bug_when>2010-04-14 11:33:17 -0700</bug_when>
    <thetext>Created attachment 53348
Patch v2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>212655</commentid>
    <comment_count>5</comment_count>
    <who name="Fumitoshi Ukai">ukai</who>
    <bug_when>2010-04-14 16:42:35 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; Created an attachment (id=53348) [details]
&gt; Patch v2

Looks good!
I believe no other class in websockets does the same mistake.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>212768</commentid>
    <comment_count>6</comment_count>
      <attachid>53348</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2010-04-14 23:53:46 -0700</bug_when>
    <thetext>Comment on attachment 53348
Patch v2

Your Changelog doesn&apos;t reflect your change now. (It seems to be missing the recent changes.) so please do a minor update on that and submit this.

Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>212852</commentid>
    <comment_count>7</comment_count>
    <who name="Shinichiro Hamaji">hamaji</who>
    <bug_when>2010-04-15 07:52:28 -0700</bug_when>
    <thetext>Committed r57646: &lt;http://trac.webkit.org/changeset/57646&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>212868</commentid>
    <comment_count>8</comment_count>
    <who name="Shinichiro Hamaji">hamaji</who>
    <bug_when>2010-04-15 08:26:19 -0700</bug_when>
    <thetext>Oops. I fixed the ChangeLog entry before I landed. Thanks for your review!</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>53343</attachid>
            <date>2010-04-14 10:16:36 -0700</date>
            <delta_ts>2010-04-14 11:33:12 -0700</delta_ts>
            <desc>Patch v1</desc>
            <filename>bug-37584-20100414101634.patch</filename>
            <type>text/plain</type>
            <size>1478</size>
            <attacher name="Shinichiro Hamaji">hamaji</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
YTE4MTkzZS4uZDlmYjJlOSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMC0wNC0xNCAgU2hpbmljaGlybyBI
YW1hamkgIDxoYW1hamlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIExFQUs6IGluIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVs
OjpjcmVhdGUoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9Mzc1ODQKKworICAgICAgICBObyBuZXcgdGVzdHMgYmVjYXVzZSB0aGlzIGNoYW5nZSBqdXN0
IGZpeGVzIGEgbGVhay4KKworICAgICAgICAqIHdlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdl
YlNvY2tldENoYW5uZWwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkYWJsZVdl
YlNvY2tldENoYW5uZWw6OldvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsKToKKwogMjAx
MC0wNC0xNCAgQW50b24gTXVoaW4gIDxhbnRvbm1AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIE5v
dCByZXZpZXcsIGJ1aWxkIGZpeC4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvd2Vic29ja2V0cy9Xb3Jr
ZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5jcHAgYi9XZWJDb3JlL3dlYnNvY2tldHMvV29y
a2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuY3BwCmluZGV4IDNkZGExMDQuLmQ5OWVmYWEg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0
Q2hhbm5lbC5jcHAKKysrIGIvV2ViQ29yZS93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJT
b2NrZXRDaGFubmVsLmNwcApAQCAtNTIsNyArNTIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBX
b3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6V29ya2VyVGhyZWFkYWJsZVdlYlNvY2tl
dENoYW5uZWwoV29ya2VyQ29udGV4dCogY29udGV4dCwgV2ViU29ja2V0Q2hhbm5lbENsaWVudCog
Y2xpZW50LCBjb25zdCBTdHJpbmcmIHRhc2tNb2RlLCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0
cmluZyYgcHJvdG9jb2wpCiAgICAgOiBtX3dvcmtlckNvbnRleHQoY29udGV4dCkKICAgICAsIG1f
d29ya2VyQ2xpZW50V3JhcHBlcihUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBw
ZXI6OmNyZWF0ZShjbGllbnQpKQotICAgICwgbV9icmlkZ2UobmV3IEJyaWRnZShtX3dvcmtlckNs
aWVudFdyYXBwZXIsIG1fd29ya2VyQ29udGV4dCwgdGFza01vZGUsIHVybCwgcHJvdG9jb2wpKQor
ICAgICwgbV9icmlkZ2UoYWRvcHRSZWYobmV3IEJyaWRnZShtX3dvcmtlckNsaWVudFdyYXBwZXIs
IG1fd29ya2VyQ29udGV4dCwgdGFza01vZGUsIHVybCwgcHJvdG9jb2wpKSkKIHsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>53348</attachid>
            <date>2010-04-14 11:33:17 -0700</date>
            <delta_ts>2010-04-14 23:53:45 -0700</delta_ts>
            <desc>Patch v2</desc>
            <filename>bug-37584-20100414113315.patch</filename>
            <type>text/plain</type>
            <size>2947</size>
            <attacher name="Shinichiro Hamaji">hamaji</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
YTE4MTkzZS4uZDlmYjJlOSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMC0wNC0xNCAgU2hpbmljaGlybyBI
YW1hamkgIDxoYW1hamlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIExFQUs6IGluIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVs
OjpjcmVhdGUoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9Mzc1ODQKKworICAgICAgICBObyBuZXcgdGVzdHMgYmVjYXVzZSB0aGlzIGNoYW5nZSBqdXN0
IGZpeGVzIGEgbGVhay4KKworICAgICAgICAqIHdlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdl
YlNvY2tldENoYW5uZWwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkYWJsZVdl
YlNvY2tldENoYW5uZWw6OldvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsKToKKwogMjAx
MC0wNC0xNCAgQW50b24gTXVoaW4gIDxhbnRvbm1AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIE5v
dCByZXZpZXcsIGJ1aWxkIGZpeC4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvd2Vic29ja2V0cy9Xb3Jr
ZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5jcHAgYi9XZWJDb3JlL3dlYnNvY2tldHMvV29y
a2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuY3BwCmluZGV4IDNkZGExMDQuLjFlZTVmMTgg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0
Q2hhbm5lbC5jcHAKKysrIGIvV2ViQ29yZS93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJT
b2NrZXRDaGFubmVsLmNwcApAQCAtNTIsNyArNTIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBX
b3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6V29ya2VyVGhyZWFkYWJsZVdlYlNvY2tl
dENoYW5uZWwoV29ya2VyQ29udGV4dCogY29udGV4dCwgV2ViU29ja2V0Q2hhbm5lbENsaWVudCog
Y2xpZW50LCBjb25zdCBTdHJpbmcmIHRhc2tNb2RlLCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0
cmluZyYgcHJvdG9jb2wpCiAgICAgOiBtX3dvcmtlckNvbnRleHQoY29udGV4dCkKICAgICAsIG1f
d29ya2VyQ2xpZW50V3JhcHBlcihUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBw
ZXI6OmNyZWF0ZShjbGllbnQpKQotICAgICwgbV9icmlkZ2UobmV3IEJyaWRnZShtX3dvcmtlckNs
aWVudFdyYXBwZXIsIG1fd29ya2VyQ29udGV4dCwgdGFza01vZGUsIHVybCwgcHJvdG9jb2wpKQor
ICAgICwgbV9icmlkZ2UoQnJpZGdlOjpjcmVhdGUobV93b3JrZXJDbGllbnRXcmFwcGVyLCBtX3dv
cmtlckNvbnRleHQsIHRhc2tNb2RlLCB1cmwsIHByb3RvY29sKSkKIHsKIH0KIApkaWZmIC0tZ2l0
IGEvV2ViQ29yZS93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmgg
Yi9XZWJDb3JlL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuaApp
bmRleCBhNmExNjgwLi43NmQwYjhjIDEwMDY0NAotLS0gYS9XZWJDb3JlL3dlYnNvY2tldHMvV29y
a2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuaAorKysgYi9XZWJDb3JlL3dlYnNvY2tldHMv
V29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuaApAQCAtMTA1LDcgKzEwNSwxMCBAQCBw
cml2YXRlOgogICAgIC8vIEJyaWRnZSBmb3IgUGVlci4gIFJ1bm5pbmcgb24gdGhlIHdvcmtlciB0
aHJlYWQuCiAgICAgY2xhc3MgQnJpZGdlIDogcHVibGljIFJlZkNvdW50ZWQ8QnJpZGdlPiB7CiAg
ICAgcHVibGljOgotICAgICAgICBCcmlkZ2UoUGFzc1JlZlB0cjxUaHJlYWRhYmxlV2ViU29ja2V0
Q2hhbm5lbENsaWVudFdyYXBwZXI+LCBQYXNzUmVmUHRyPFdvcmtlckNvbnRleHQ+LCBjb25zdCBT
dHJpbmcmIHRhc2tNb2RlLCBjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCk7Cisg
ICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEJyaWRnZT4gY3JlYXRlKFBhc3NSZWZQdHI8VGhyZWFk
YWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyPiB3b3JrZXJDbGllbnRXcmFwcGVyLCBQ
YXNzUmVmUHRyPFdvcmtlckNvbnRleHQ+IHdvcmtlckNvbnRleHQsIGNvbnN0IFN0cmluZyYgdGFz
a01vZGUsIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCkKKyAgICAgICAg
eworICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBCcmlkZ2Uod29ya2VyQ2xpZW50V3Jh
cHBlciwgd29ya2VyQ29udGV4dCwgdGFza01vZGUsIHVybCwgcHJvdG9jb2wpKTsKKyAgICAgICAg
fQogICAgICAgICB+QnJpZGdlKCk7CiAgICAgICAgIHZvaWQgY29ubmVjdCgpOwogICAgICAgICBi
b29sIHNlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKQEAgLTExNyw2ICsxMjAsOCBAQCBwcml2
YXRlOgogICAgICAgICB1c2luZyBSZWZDb3VudGVkPEJyaWRnZT46OmRlcmVmOwogCiAgICAgcHJp
dmF0ZToKKyAgICAgICAgQnJpZGdlKFBhc3NSZWZQdHI8VGhyZWFkYWJsZVdlYlNvY2tldENoYW5u
ZWxDbGllbnRXcmFwcGVyPiwgUGFzc1JlZlB0cjxXb3JrZXJDb250ZXh0PiwgY29uc3QgU3RyaW5n
JiB0YXNrTW9kZSwgY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYgcHJvdG9jb2wpOworCiAgICAg
ICAgIHN0YXRpYyB2b2lkIHNldFdlYlNvY2tldENoYW5uZWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCosIEJyaWRnZSogdGhpc1B0ciwgUGVlciosIFJlZlB0cjxUaHJlYWRhYmxlV2ViU29ja2V0Q2hh
bm5lbENsaWVudFdyYXBwZXI+KTsKIAogICAgICAgICAvLyBFeGVjdXRlZCBvbiB0aGUgbWFpbiB0
aHJlYWQgdG8gY3JlYXRlIGEgUGVlciBmb3IgdGhpcyBicmlkZ2UuCg==
</data>
<flag name="review"
          id="37058"
          type_id="1"
          status="+"
          setter="levin"
    />
          </attachment>
      

    </bug>

</bugzilla>