<?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>83345</bug_id>
          
          <creation_ts>2012-04-05 18:42:42 -0700</creation_ts>
          <short_desc>Leak in WebSocketChannel with workers/worker-reload.html</short_desc>
          <delta_ts>2012-04-05 22:16:27 -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="Yuta Kitamura">yutak</reporter>
          <assigned_to name="Yuta Kitamura">yutak</assigned_to>
          <cc>levin</cc>
    
    <cc>levin+threading</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>597117</commentid>
    <comment_count>0</comment_count>
    <who name="Yuta Kitamura">yutak</who>
    <bug_when>2012-04-05 18:42:42 -0700</bug_when>
    <thetext>Original report: http://code.google.com/p/chromium/issues/detail?id=122233

Reported by project member thestig@chromium.org, Today (4 hours ago)
r130973, http://build.chromium.org/p/chromium.memory.fyi/builders/Webkit%20Linux%20%28valgrind%20layout%29/builds/17942/

Leak_DefinitelyLost
1,316 (704 direct, 612 indirect) bytes in 2 blocks are definitely lost in loss record 4,975 of 5,181
  malloc (m_replacemalloc/vg_replace_malloc.c:1072)
  WTF::fastMalloc(unsigned long) (third_party/WebKit/Source/WTF/wtf/FastMalloc.cpp:268)
  WebCore::WebSocketChannel::operator new(unsigned long) (third_party/WebKit/Source/WebCore/Modules/websockets/WebSocketChannel.h:63)
  WebCore::WebSocketChannel::create(WebCore::Document*, WebCore::WebSocketChannelClient*) (third_party/WebKit/Source/WebCore/Modules/websockets/WebSocketChannel.h:65)
  WebCore::WorkerThreadableWebSocketChannel::Peer::Peer(WTF::PassRefPtr&lt;WebCore::ThreadableWebSocketChannelClientWrapper&gt;, WebCore::WorkerLoaderProxy&amp;, WebCore::ScriptExecutionContext*, WTF::String const&amp;) (third_party/WebKit/Source/WebCore/Modules/websockets/WorkerThreadableWebSocketChannel.cpp:157)
  WebCore::WorkerThreadableWebSocketChannel::Peer::create(WTF::PassRefPtr&lt;WebCore::ThreadableWebSocketChannelClientWrapper&gt;, WebCore::WorkerLoaderProxy&amp;, WebCore::ScriptExecutionContext*, WTF::String const&amp;) (third_party/WebKit/Source/WebCore/Modules/websockets/WorkerThreadableWebSocketChannel.h:86)
  WebCore::WorkerThreadableWebSocketChannel::Bridge::mainThreadInitialize(WebCore::ScriptExecutionContext*, WebCore::WorkerLoaderProxy*, WTF::PassRefPtr&lt;WebCore::ThreadableWebSocketChannelClientWrapper&gt;, WTF::String const&amp;) (third_party/WebKit/Source/WebCore/Modules/websockets/WorkerThreadableWebSocketChannel.cpp:402)
  WebCore::CrossThreadTask3&lt;WebCore::WorkerLoaderProxy*, WebCore::WorkerLoaderProxy*, WTF::PassRefPtr&lt;WebCore::ThreadableWebSocketChannelClientWrapper&gt;, WTF::PassRefPtr&lt;WebCore::ThreadableWebSocketChannelClientWrapper&gt;, WTF::String, WTF::String const&amp;&gt;::performTask(WebCore::ScriptExecutionContext*) (third_party/WebKit/Source/WebCore/dom/CrossThreadTask.h:146)
  WebCore::Document::didReceiveTask(void*) (third_party/WebKit/Source/WebCore/dom/Document.cpp:5026)
The report came from the `#URL:http://127.0.0.1:8000/websocket/tests/hybi/workers/worker-reload.html` test.

Leak_DefinitelyLost
1,974 (120 direct, 1,854 indirect) bytes in 3 blocks are definitely lost in loss record 5,009 of 5,181
  malloc (m_replacemalloc/vg_replace_malloc.c:1072)
  WTF::fastMalloc(unsigned long) (third_party/WebKit/Source/WTF/wtf/FastMalloc.cpp:268)
  WebCore::WorkerThreadableWebSocketChannel::Peer::operator new(unsigned long) (third_party/WebKit/Source/WebCore/Modules/websockets/WorkerThreadableWebSocketChannel.h:82)
  WebCore::WorkerThreadableWebSocketChannel::Peer::create(WTF::PassRefPtr&lt;WebCore::ThreadableWebSocketChannelClientWrapper&gt;, WebCore::WorkerLoaderProxy&amp;, WebCore::ScriptExecutionContext*, WTF::String const&amp;) (third_party/WebKit/Source/WebCore/Modules/websockets/WorkerThreadableWebSocketChannel.h:86)
  WebCore::WorkerThreadableWebSocketChannel::Bridge::mainThreadInitialize(WebCore::ScriptExecutionContext*, WebCore::WorkerLoaderProxy*, WTF::PassRefPtr&lt;WebCore::ThreadableWebSocketChannelClientWrapper&gt;, WTF::String const&amp;) (third_party/WebKit/Source/WebCore/Modules/websockets/WorkerThreadableWebSocketChannel.cpp:402)
  WebCore::CrossThreadTask3&lt;WebCore::WorkerLoaderProxy*, WebCore::WorkerLoaderProxy*, WTF::PassRefPtr&lt;WebCore::ThreadableWebSocketChannelClientWrapper&gt;, WTF::PassRefPtr&lt;WebCore::ThreadableWebSocketChannelClientWrapper&gt;, WTF::String, WTF::String const&amp;&gt;::performTask(WebCore::ScriptExecutionContext*) (third_party/WebKit/Source/WebCore/dom/CrossThreadTask.h:146)
  WebCore::Document::didReceiveTask(void*) (third_party/WebKit/Source/WebCore/dom/Document.cpp:5026)
The report came from the `#URL:http://127.0.0.1:8000/websocket/tests/hybi/workers/worker-reload.html` test.

Leak_DefinitelyLost
658 (136 direct, 522 indirect) bytes in 1 blocks are definitely lost in loss record 4,752 of 5,181
  malloc (m_replacemalloc/vg_replace_malloc.c:1072)
  WTF::fastMalloc(unsigned long) (third_party/WebKit/Source/WTF/wtf/FastMalloc.cpp:268)
  WTF::ThreadSafeRefCountedBase::operator new(unsigned long) (third_party/WebKit/Source/WTF/wtf/ThreadSafeRefCounted.h:72)
  WebCore::ThreadableWebSocketChannelClientWrapper::create(WebCore::ScriptExecutionContext*, WebCore::WebSocketChannelClient*) (third_party/WebKit/Source/WebCore/Modules/websockets/ThreadableWebSocketChannelClientWrapper.cpp:58)
  WebCore::WorkerThreadableWebSocketChannel::WorkerThreadableWebSocketChannel(WebCore::WorkerContext*, WebCore::WebSocketChannelClient*, WTF::String const&amp;) (third_party/WebKit/Source/WebCore/Modules/websockets/WorkerThreadableWebSocketChannel.cpp:58)
  WebCore::WorkerThreadableWebSocketChannel::create(WebCore::WorkerContext*, WebCore::WebSocketChannelClient*, WTF::String const&amp;) (third_party/WebKit/Source/WebCore/Modules/websockets/WorkerThreadableWebSocketChannel.h:60)
  WebCore::ThreadableWebSocketChannel::create(WebCore::ScriptExecutionContext*, WebCore::WebSocketChannelClient*) (third_party/WebKit/Source/WebCore/Modules/websockets/ThreadableWebSocketChannel.cpp:65)
  WebCore::WebSocket::connect(WTF::String const&amp;, WTF::Vector&lt;WTF::String, 0ul&gt; const&amp;, int&amp;) (third_party/WebKit/Source/WebCore/Modules/websockets/WebSocket.cpp:232)
  WebCore::WebSocket::connect(WTF::String const&amp;, int&amp;) (third_party/WebKit/Source/WebCore/Modules/websockets/WebSocket.cpp:183)
  WebCore::V8WebSocket::constructorCallback(v8::Arguments const&amp;) (third_party/WebKit/Source/WebCore/bindings/v8/custom/V8WebSocketCustom.cpp:85)
  v8::internal::MaybeObject* v8::internal::HandleApiCallHelper&lt;true&gt;(v8::internal::(anonymous namespace)::BuiltinArguments&lt;(v8::internal::BuiltinExtraArguments)1&gt;, v8::internal::Isolate*) (v8/src/builtins.cc:1115)
  v8::internal::Builtin_HandleApiCallConstruct(v8::internal::(anonymous namespace)::BuiltinArguments&lt;(v8::internal::BuiltinExtraArguments)1&gt;, v8::internal::Isolate*) (v8/src/builtins.cc:1137)
  0x39F12850618D ()
  0x39F128524856 ()
  0x39F12852BF2D ()
  0x39F128524966 ()
  0x39F1285113D6 ()
  v8::internal::Invoke(bool, v8::internal::Handle&lt;v8::internal::JSFunction&gt;, v8::internal::Handle&lt;v8::internal::Object&gt;, int, v8::internal::Handle&lt;v8::internal::Object&gt;*, bool*) (v8/src/execution.cc:118)
  v8::internal::Execution::Call(v8::internal::Handle&lt;v8::internal::Object&gt;, v8::internal::Handle&lt;v8::internal::Object&gt;, int, v8::internal::Handle&lt;v8::internal::Object&gt;*, bool*, bool) (v8/src/execution.cc:173)
  v8::Script::Run() (v8/src/api.cc:1599)
  WebCore::WorkerContextExecutionProxy::runScript(v8::Handle&lt;v8::Script&gt;) (third_party/WebKit/Source/WebCore/bindings/v8/WorkerContextExecutionProxy.cpp:262)
  WebCore::WorkerContextExecutionProxy::evaluate(WTF::String const&amp;, WTF::String const&amp;, WTF::TextPosition const&amp;, WebCore::WorkerContextExecutionState*) (third_party/WebKit/Source/WebCore/bindings/v8/WorkerContextExecutionProxy.cpp:213)
  WebCore::WorkerScriptController::evaluate(WebCore::ScriptSourceCode const&amp;, WebCore::ScriptValue*) (third_party/WebKit/Source/WebCore/bindings/v8/WorkerScriptController.cpp:85)
  WebCore::WorkerScriptController::evaluate(WebCore::ScriptSourceCode const&amp;) (third_party/WebKit/Source/WebCore/bindings/v8/WorkerScriptController.cpp:76)
  WebCore::WorkerThread::workerThread() (third_party/WebKit/Source/WebCore/workers/WorkerThread.cpp:152)
  WebCore::WorkerThread::workerThreadStart(void*) (third_party/WebKit/Source/WebCore/workers/WorkerThread.cpp:129)
  WTF::threadEntryPoint(void*) (third_party/WebKit/Source/WTF/wtf/Threading.cpp:69)
  WTF::wtfThreadEntryPoint(void*) (third_party/WebKit/Source/WTF/wtf/ThreadingPthreads.cpp:162)
The report came from the `#URL:http://127.0.0.1:8000/websocket/tests/hybi/workers/worker-reload.html` test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>597119</commentid>
    <comment_count>1</comment_count>
    <who name="Yuta Kitamura">yutak</who>
    <bug_when>2012-04-05 18:43:49 -0700</bug_when>
    <thetext>And my comment:

Comment 3 by yutak@chromium.org, Today (21 minutes ago)
This is related to http://trac.webkit.org/changeset/113138

A speculative fix is on the way; I think I just need to make mainThreadDestroy() a cleanup task so that it won&apos;t get lost during main thread&apos;s cleanup period.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>597126</commentid>
    <comment_count>2</comment_count>
      <attachid>135966</attachid>
    <who name="Yuta Kitamura">yutak</who>
    <bug_when>2012-04-05 19:07:03 -0700</bug_when>
    <thetext>Created attachment 135966
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>597155</commentid>
    <comment_count>3</comment_count>
      <attachid>135966</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2012-04-05 19:56:43 -0700</bug_when>
    <thetext>Comment on attachment 135966
Patch

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

&gt; Source/WebCore/Modules/websockets/WorkerThreadableWebSocketChannel.cpp:579
&gt; +    virtual ~MainThreadDestroyTask() { }

Why is this needed?

&gt; Source/WebCore/Modules/websockets/WorkerThreadableWebSocketChannel.cpp:586
&gt; +    virtual bool isCleanupTask() const OVERRIDE { return true; }

Even better, make WorkerThreadableWebSocketChannel::Peer*, OwnPtr&lt;WorkerThreadableWebSocketChannel::Peer&gt; instead and don&apos;t delete m_peer explicitly just let the destructor do it.

You could even get rid of this class and just do 

OwnPtr&lt;Peer&gt; peer = m_peer;
m_peer = 0;
m_loaderProxy.postTaskToLoader(MainThreadDestroyTask::create(peer.release()));

in void WorkerThreadableWebSocketChannel::Bridge::disconnect() and make

You may need to make WorkerThreadableWebSocketChannel::mainThreadDestroy take a PassOwnPtr.

and put in a comment that this method is there just to allow peer to get deleted and even if it doesn&apos;t run, the destructor for the callbacktask will delete it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>597193</commentid>
    <comment_count>4</comment_count>
      <attachid>135980</attachid>
    <who name="Yuta Kitamura">yutak</who>
    <bug_when>2012-04-05 21:32:30 -0700</bug_when>
    <thetext>Created attachment 135980
Patch v2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>597196</commentid>
    <comment_count>5</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2012-04-05 21:42:25 -0700</bug_when>
    <thetext>Bonus point for getting rid of AllowCrossThreadAccess in one place. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>597200</commentid>
    <comment_count>6</comment_count>
      <attachid>135980</attachid>
    <who name="Yuta Kitamura">yutak</who>
    <bug_when>2012-04-05 21:57:38 -0700</bug_when>
    <thetext>Comment on attachment 135980
Patch v2

Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>597207</commentid>
    <comment_count>7</comment_count>
      <attachid>135980</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-05 22:16:23 -0700</bug_when>
    <thetext>Comment on attachment 135980
Patch v2

Clearing flags on attachment: 135980

Committed r113414: &lt;http://trac.webkit.org/changeset/113414&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>597208</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-05 22:16:27 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>135966</attachid>
            <date>2012-04-05 19:07:03 -0700</date>
            <delta_ts>2012-04-05 21:32:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-83345-20120406110701.patch</filename>
            <type>text/plain</type>
            <size>4417</size>
            <attacher name="Yuta Kitamura">yutak</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEzMzU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTkxMjcxYTg0ZDJmNzky
MWRmYjk2MTcxNjBkMTc5NTA5M2UwZTdjMS4uMWRiMjhjNGYzYTg4MWU5YmY4ZGJlNmQ2MmQ0OGE5
NDVkZjEwNjE2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDEyLTA0LTA1ICBZdXRh
IEtpdGFtdXJhICA8eXV0YWtAY2hyb21pdW0ub3JnPgorCisgICAgICAgIExlYWsgaW4gV2ViU29j
a2V0Q2hhbm5lbCB3aXRoIHdvcmtlcnMvd29ya2VyLXJlbG9hZC5odG1sCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MzM0NQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEEgc3BlY3VsYXRpdmUgZml4IG9mIG1l
bW9yeSBsZWFrcyBjYXVzZWQgYnkgd29ya2VyLXJlbG9hZC5odG1sLgorCisgICAgICAgIE5vIG5l
dyB0ZXN0cywgYXMgdGhpcyBjaGFuZ2UgaW1wb3NlcyBubyBmdW5jdGlvbmFsIGNoYW5nZS4KKwor
ICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hh
bm5lbC5jcHA6CisgICAgICAgIChNYWluVGhyZWFkRGVzdHJveVRhc2spOgorICAgICAgICBDb252
ZXJ0IG1haW5UaHJlYWREZXN0cm95KCkgZnVuY3Rpb24gdG8gYSBUYXNrIGNsYXNzIGluIG9yZGVy
IHRvCisgICAgICAgIG1ha2UgaXQgYSAiY2xlYW51cCB0YXNrIi4gVGhpcyB0YXNrIGRlbGV0ZXMg
dGhlIHBlZXIgb2JqZWN0LCBhbmQKKyAgICAgICAgdGh1cyBzaG91bGQgbm90IGJlIGlnbm9yZWQg
ZHVyaW5nIG1haW4gdGhyZWFkJ3MgY2xlYW51cCBwZXJpb2QuCisgICAgICAgIChXZWJDb3JlOjpN
YWluVGhyZWFkRGVzdHJveVRhc2s6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNYWluVGhy
ZWFkRGVzdHJveVRhc2s6On5NYWluVGhyZWFkRGVzdHJveVRhc2spOgorICAgICAgICAoV2ViQ29y
ZTo6TWFpblRocmVhZERlc3Ryb3lUYXNrOjpNYWluVGhyZWFkRGVzdHJveVRhc2spOgorICAgICAg
ICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OkJyaWRnZTo6ZGlz
Y29ubmVjdCk6CisgICAgICAgICogTW9kdWxlcy93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVX
ZWJTb2NrZXRDaGFubmVsLmg6CisgICAgICAgIChXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hh
bm5lbCk6CisKIDIwMTItMDQtMDUgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21h
aWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxMTMyNDEuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJs
ZVdlYlNvY2tldENoYW5uZWwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRz
L1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcAppbmRleCBhZTllMmZmZGYzY2Vj
NDVlMGRkNDgwZTdlYWI0ZmE1MDQ2NzMyZWJhLi5kZjM0MzIwOTEzZjAwODM3ZDVhM2E4YzgyZTU5
YWYzNWY4NjE2YTg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tl
dHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5j
cHAKQEAgLTU2OCwxNCArNTY4LDMxIEBAIHZvaWQgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENo
YW5uZWw6OkJyaWRnZTo6ZmFpbChjb25zdCBTdHJpbmcmIHJlYXNvbikKICAgICBtX2xvYWRlclBy
b3h5LnBvc3RUYXNrVG9Mb2FkZXIoY3JlYXRlQ2FsbGJhY2tUYXNrKCZXb3JrZXJUaHJlYWRhYmxl
V2ViU29ja2V0Q2hhbm5lbDo6bWFpblRocmVhZEZhaWwsIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3Mo
bV9wZWVyKSwgcmVhc29uKSk7CiB9CiAKLXZvaWQgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENo
YW5uZWw6Om1haW5UaHJlYWREZXN0cm95KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQs
IFBlZXIqIHBlZXIpCi17Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICBBU1NFUlRf
VU5VU0VEKGNvbnRleHQsIGNvbnRleHQtPmlzRG9jdW1lbnQoKSk7Ci0gICAgQVNTRVJUKHBlZXIp
OworY2xhc3MgTWFpblRocmVhZERlc3Ryb3lUYXNrIDogcHVibGljIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQ6OlRhc2sgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzT3duUHRyPFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQ6OlRhc2s+IGNyZWF0ZShXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5l
bDo6UGVlciogcGVlcikKKyAgICB7CisgICAgICAgIEFTU0VSVChwZWVyKTsKKyAgICAgICAgcmV0
dXJuIGFkb3B0UHRyKG5ldyBNYWluVGhyZWFkRGVzdHJveVRhc2socGVlcikpOworICAgIH0KIAot
ICAgIGRlbGV0ZSBwZWVyOwotfQorICAgIHZpcnR1YWwgfk1haW5UaHJlYWREZXN0cm95VGFzaygp
IHsgfQorICAgIHZpcnR1YWwgdm9pZCBwZXJmb3JtVGFzayhTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0KSBPVkVSUklERQorICAgIHsKKyAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgp
KTsKKyAgICAgICAgQVNTRVJUX1VOVVNFRChjb250ZXh0LCBjb250ZXh0LT5pc0RvY3VtZW50KCkp
OworICAgICAgICBkZWxldGUgbV9wZWVyOworICAgIH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNDbGVh
bnVwVGFzaygpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIHRydWU7IH0KKworcHJpdmF0ZToKKyAg
ICBleHBsaWNpdCBNYWluVGhyZWFkRGVzdHJveVRhc2soV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tl
dENoYW5uZWw6OlBlZXIqIHBlZXIpCisgICAgICAgIDogbV9wZWVyKHBlZXIpCisgICAgeworICAg
IH0KKworICAgIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpQZWVyKiBtX3BlZXI7
Cit9OwogCiB2b2lkIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpCcmlkZ2U6OmRp
c2Nvbm5lY3QoKQogewpAQCAtNTgzLDcgKzYwMCw3IEBAIHZvaWQgV29ya2VyVGhyZWFkYWJsZVdl
YlNvY2tldENoYW5uZWw6OkJyaWRnZTo6ZGlzY29ubmVjdCgpCiAgICAgaWYgKG1fcGVlcikgewog
ICAgICAgICBQZWVyKiBwZWVyID0gbV9wZWVyOwogICAgICAgICBtX3BlZXIgPSAwOwotICAgICAg
ICBtX2xvYWRlclByb3h5LnBvc3RUYXNrVG9Mb2FkZXIoY3JlYXRlQ2FsbGJhY2tUYXNrKCZtYWlu
VGhyZWFkRGVzdHJveSwgQWxsb3dDcm9zc1RocmVhZEFjY2VzcyhwZWVyKSkpOworICAgICAgICBt
X2xvYWRlclByb3h5LnBvc3RUYXNrVG9Mb2FkZXIoTWFpblRocmVhZERlc3Ryb3lUYXNrOjpjcmVh
dGUocGVlcikpOwogICAgIH0KICAgICBtX3dvcmtlckNvbnRleHQgPSAwOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJT
b2NrZXRDaGFubmVsLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV29ya2Vy
VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuaAppbmRleCA5NTNlMzU0ZGE1MjBmY2QzMDM3YjNj
N2I5NWNiMDAzNTExNDU2ODhiLi4wNWNmYmI5YzUyMDZlNWRlZjUxZWMwODIxOTgzYjI4Mzk4NzE3
N2NjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV29ya2Vy
VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuaApAQCAtMTc3LDcg
KzE3Nyw2IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIHZvaWQgbWFpblRocmVhZEJ1ZmZlcmVkQW1v
dW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQZWVyKik7CiAgICAgc3RhdGljIHZvaWQgbWFp
blRocmVhZENsb3NlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQZWVyKiwgaW50IGNvZGUsIGNv
bnN0IFN0cmluZyYgcmVhc29uKTsKICAgICBzdGF0aWMgdm9pZCBtYWluVGhyZWFkRmFpbChTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiwgUGVlciosIGNvbnN0IFN0cmluZyYgcmVhc29uKTsKLSAgICBz
dGF0aWMgdm9pZCBtYWluVGhyZWFkRGVzdHJveShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGVl
ciopOwogICAgIHN0YXRpYyB2b2lkIG1haW5UaHJlYWRTdXNwZW5kKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqLCBQZWVyKik7CiAgICAgc3RhdGljIHZvaWQgbWFpblRocmVhZFJlc3VtZShTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiwgUGVlciopOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>135980</attachid>
            <date>2012-04-05 21:32:30 -0700</date>
            <delta_ts>2012-04-05 22:16:23 -0700</delta_ts>
            <desc>Patch v2</desc>
            <filename>bug-83345-20120406133228.patch</filename>
            <type>text/plain</type>
            <size>3942</size>
            <attacher name="Yuta Kitamura">yutak</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEzMzU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTkxMjcxYTg0ZDJmNzky
MWRmYjk2MTcxNjBkMTc5NTA5M2UwZTdjMS4uYzg3OThiZGQ5OWJmZDVkN2U3Mjk5NTU3MjU5MmZl
ZGUwOThjM2EyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDEyLTA0LTA1ICBZdXRh
IEtpdGFtdXJhICA8eXV0YWtAY2hyb21pdW0ub3JnPgorCisgICAgICAgIExlYWsgaW4gV2ViU29j
a2V0Q2hhbm5lbCB3aXRoIHdvcmtlcnMvd29ya2VyLXJlbG9hZC5odG1sCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MzM0NQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEEgc3BlY3VsYXRpdmUgZml4IG9mIG1l
bW9yeSBsZWFrcyBjYXVzZWQgYnkgd29ya2VyLXJlbG9hZC5odG1sLgorCisgICAgICAgIE5vIG5l
dyB0ZXN0cywgYXMgdGhpcyBjaGFuZ2UgaW1wb3NlcyBubyBmdW5jdGlvbmFsIGNoYW5nZS4KKwor
ICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hh
bm5lbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hh
bm5lbDo6bWFpblRocmVhZERlc3Ryb3kpOgorICAgICAgICBSZWNlaXZlIHRoZSBwZWVyIGFzIFBh
c3NPd25QdHI8PiBzbyB0aGUgZGVzdHJ1Y3RvciBvZiB0aGUgdGFzayBvYmplY3QgY2FuCisgICAg
ICAgIGRlbGV0ZSB0aGUgcGVlciBldmVuIGlmIHRoZSB0YXNrIGRpZG4ndCBydW4gYmVmb3JlIG1h
aW4gdGhyZWFkJ3MgY2xlYW51cCBwZXJpb2QuCisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJl
YWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6QnJpZGdlOjpkaXNjb25uZWN0KToKKyAgICAgICAgKiBN
b2R1bGVzL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuaDoKKyAg
ICAgICAgKFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsKToKKwogMjAxMi0wNC0wNSAg
U2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+CiAKICAgICAgICAgVW5y
ZXZpZXdlZCwgcm9sbGluZyBvdXQgcjExMzI0MS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNv
Y2tldENoYW5uZWwuY3BwCmluZGV4IGFlOWUyZmZkZjNjZWM0NWUwZGQ0ODBlN2VhYjRmYTUwNDY3
MzJlYmEuLmRjNTQ3NjQ3MDMzNTQ2YzRiMGE2MjRhMGMzZTg4NGQ1OTc3YWExMWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2Vi
U29ja2V0Q2hhbm5lbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRz
L1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcApAQCAtNTY4LDIyICs1NjgsMjMg
QEAgdm9pZCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6QnJpZGdlOjpmYWlsKGNv
bnN0IFN0cmluZyYgcmVhc29uKQogICAgIG1fbG9hZGVyUHJveHkucG9zdFRhc2tUb0xvYWRlcihj
cmVhdGVDYWxsYmFja1Rhc2soJldvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjptYWlu
VGhyZWFkRmFpbCwgQWxsb3dDcm9zc1RocmVhZEFjY2VzcyhtX3BlZXIpLCByZWFzb24pKTsKIH0K
IAotdm9pZCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6bWFpblRocmVhZERlc3Ry
b3koU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGVlciogcGVlcikKK3ZvaWQgV29y
a2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6Om1haW5UaHJlYWREZXN0cm95KFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NPd25QdHI8UGVlcj4gcGVlcikKIHsKICAgICBB
U1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIEFTU0VSVF9VTlVTRUQoY29udGV4dCwgY29udGV4
dC0+aXNEb2N1bWVudCgpKTsKLSAgICBBU1NFUlQocGVlcik7CisgICAgQVNTRVJUX1VOVVNFRChw
ZWVyLCBwZWVyKTsKIAotICAgIGRlbGV0ZSBwZWVyOworICAgIC8vIFBlZXIgb2JqZWN0IHdpbGwg
YmUgZGVsZXRlZCBldmVuIGlmIHRoZSB0YXNrIGRvZXMgbm90IHJ1biBpbiB0aGUgbWFpbiB0aHJl
YWQncyBjbGVhbnVwIHBlcmlvZCwgYmVjYXVzZQorICAgIC8vIHRoZSBkZXN0cnVjdG9yIGZvciB0
aGUgdGFzayBvYmplY3QgKGNyZWF0ZWQgYnkgY3JlYXRlQ2FsbGJhY2tUYXNrKCkpIHdpbGwgYXV0
b21hdGljYWxseSBkZWxldGUgdGhlIHBlZXIuCiB9CiAKIHZvaWQgV29ya2VyVGhyZWFkYWJsZVdl
YlNvY2tldENoYW5uZWw6OkJyaWRnZTo6ZGlzY29ubmVjdCgpCiB7CiAgICAgY2xlYXJDbGllbnRX
cmFwcGVyKCk7CiAgICAgaWYgKG1fcGVlcikgewotICAgICAgICBQZWVyKiBwZWVyID0gbV9wZWVy
OworICAgICAgICBPd25QdHI8UGVlcj4gcGVlciA9IGFkb3B0UHRyKG1fcGVlcik7CiAgICAgICAg
IG1fcGVlciA9IDA7Ci0gICAgICAgIG1fbG9hZGVyUHJveHkucG9zdFRhc2tUb0xvYWRlcihjcmVh
dGVDYWxsYmFja1Rhc2soJm1haW5UaHJlYWREZXN0cm95LCBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNz
KHBlZXIpKSk7CisgICAgICAgIG1fbG9hZGVyUHJveHkucG9zdFRhc2tUb0xvYWRlcihjcmVhdGVD
YWxsYmFja1Rhc2soJldvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjptYWluVGhyZWFk
RGVzdHJveSwgcGVlci5yZWxlYXNlKCkpKTsKICAgICB9CiAgICAgbV93b3JrZXJDb250ZXh0ID0g
MDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9Xb3Jr
ZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmgKaW5kZXggOTUzZTM1
NGRhNTIwZmNkMzAzN2IzYzdiOTVjYjAwMzUxMTQ1Njg4Yi4uNzUyOTQ3YTdlMzRiNjIzZTU5N2Ey
ZDViYzY3Zjc5M2RjMGJlYjM5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFu
bmVsLmgKQEAgLTE3Nyw3ICsxNzcsNyBAQCBwcml2YXRlOgogICAgIHN0YXRpYyB2b2lkIG1haW5U
aHJlYWRCdWZmZXJlZEFtb3VudChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGVlciopOwogICAg
IHN0YXRpYyB2b2lkIG1haW5UaHJlYWRDbG9zZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGVl
ciosIGludCBjb2RlLCBjb25zdCBTdHJpbmcmIHJlYXNvbik7CiAgICAgc3RhdGljIHZvaWQgbWFp
blRocmVhZEZhaWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBlZXIqLCBjb25zdCBTdHJpbmcm
IHJlYXNvbik7Ci0gICAgc3RhdGljIHZvaWQgbWFpblRocmVhZERlc3Ryb3koU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCosIFBlZXIqKTsKKyAgICBzdGF0aWMgdm9pZCBtYWluVGhyZWFkRGVzdHJveShT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc093blB0cjxQZWVyPik7CiAgICAgc3RhdGljIHZv
aWQgbWFpblRocmVhZFN1c3BlbmQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBlZXIqKTsKICAg
ICBzdGF0aWMgdm9pZCBtYWluVGhyZWFkUmVzdW1lKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQ
ZWVyKik7CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>