<?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>56138</bug_id>
          
          <creation_ts>2011-03-10 13:08:21 -0800</creation_ts>
          <short_desc>Data race between ~WorkerFileSystemCallbacksBridge and runTasksOnWorkerThread</short_desc>
          <delta_ts>2011-03-25 16:01:10 -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>Other</rep_platform>
          <op_sys>OS X 10.5</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>0</everconfirmed>
          <reporter name="Adam Klein">adamk</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>kinuko</cc>
    
    <cc>levin</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>365469</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Klein">adamk</who>
    <bug_when>2011-03-10 13:08:21 -0800</bug_when>
    <thetext>Retain a reference to the WorkerFileSystemCallbacksBridge in runTaskOnWorkerThread to avoid a race condition</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>365472</commentid>
    <comment_count>1</comment_count>
      <attachid>85382</attachid>
    <who name="Adam Klein">adamk</who>
    <bug_when>2011-03-10 13:10:08 -0800</bug_when>
    <thetext>Created attachment 85382
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>365478</commentid>
    <comment_count>2</comment_count>
      <attachid>85382</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2011-03-10 13:20:41 -0800</bug_when>
    <thetext>Comment on attachment 85382
Patch

I don&apos;t understand how this changes a thing.  The previous passed in variable bridge would have help the ref count.

Also prpBridge looks like hungarian naming which is simply not used in WebKit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>365482</commentid>
    <comment_count>3</comment_count>
    <who name="Adam Klein">adamk</who>
    <bug_when>2011-03-10 13:22:41 -0800</bug_when>
    <thetext>Working with Kinuko offline to get to the root of the issue, you&apos;re right that this doesn&apos;t solve the problem.

As for the naming, though, this style is recommended by http://www.webkit.org/coding/RefPtr.html and used frequently in WebKit (as a quick codesearch shows).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>365485</commentid>
    <comment_count>4</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2011-03-10 13:24:22 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; As for the naming, though, this style is recommended by http://www.webkit.org/coding/RefPtr.html and used frequently in WebKit (as a quick codesearch shows).

Good point!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>365490</commentid>
    <comment_count>5</comment_count>
    <who name="Adam Klein">adamk</who>
    <bug_when>2011-03-10 13:33:20 -0800</bug_when>
    <thetext>Retitling to better capture the actual problem. Here&apos;s the TSAN trace:

WARNING: Possible data race during read of size 4 at 0xB16D3C4: {{{
   T0 (L{}):
    #0  WebCore::WorkerContext::Observer::~Observer() third_party/WebKit/Source/WebCore/workers/WorkerContext.cpp:393
    #1  WebKit::WorkerFileSystemCallbacksBridge::~WorkerFileSystemCallbacksBridge() third_party/WebKit/Source/WebKit/chromium/src/WorkerFileSystemCallbacksBridge.cpp:311
    #2  WTF::ThreadSafeShared&lt;WebKit::WorkerFileSystemCallbacksBridge&gt;::deref() third_party/WebKit/Source/JavaScriptCore/wtf/ThreadSafeShared.h:135
    #3  WebKit::MainThreadFileSystemCallbacks::~MainThreadFileSystemCallbacks() third_party/WebKit/Source/JavaScriptCore/wtf/PassRefPtr.h:59
    #4  WebKit::MainThreadFileSystemCallbacks::didReadMetadata(WebKit::WebFileInfo const&amp;) third_party/WebKit/Source/WebKit/chromium/src/WorkerFileSystemCallbacksBridge.cpp:119
    #5  WebFileSystemCallbackDispatcher::DidReadMetadata(base::PlatformFileInfo const&amp;) content/common/file_system/webfilesystem_callback_dispatcher.cc:44
    #6  FileSystemDispatcher::OnDidReadMetadata(int, base::PlatformFileInfo const&amp;) content/common/file_system/file_system_dispatcher.cc:242
    ...
  Concurrent write(s) happened at (OR AFTER) these points:
   T2 (L{}):
    #0  WebCore::WorkerContext::Observer::stopObserving() third_party/WebKit/Source/WebCore/workers/WorkerContext.cpp:405
    #1  WebKit::WorkerFileSystemCallbacksBridge::runTaskOnWorkerThread(WebCore::ScriptExecutionContext*, WTF::PassRefPtr&lt;WebKit::WorkerFileSystemCallbacksBridge&gt;, WTF::PassOwnPtr&lt;WebCore::ScriptExecutionContext::Task&gt;) third_party/WebKit/Source/WebKit/chromium/src/WorkerFileSystemCallbacksBridge.cpp:368
    #2  WebCore::CrossThreadTask2&lt;WTF::PassRefPtr&lt;WebKit::WorkerFileSystemCallbacksBridge&gt;, WTF::PassRefPtr&lt;WebKit::WorkerFileSystemCallbacksBridge&gt;, WTF::PassOwnPtr&lt;WebCore::ScriptExecutionContext::Task&gt;, WTF::PassOwnPtr&lt;WebCore::ScriptExecutionContext::Task&gt; &gt;::performTask(WebCore::ScriptExecutionContext*) third_party/WebKit/Source/WebCore/dom/CrossThreadTask.h:112
    #3  WebCore::WorkerRunLoop::Task::performTask(WebCore::ScriptExecutionContext*) third_party/WebKit/Source/WebCore/workers/WorkerRunLoop.cpp:199
    #4  WebCore::WorkerRunLoop::runInMode(WebCore::WorkerContext*, WebCore::ModePredicate const&amp;) third_party/WebKit/Source/WebCore/workers/WorkerRunLoop.cpp:163
    #5  WebCore::WorkerRunLoop::run(WebCore::WorkerContext*) third_party/WebKit/Source/WebCore/workers/WorkerRunLoop.cpp:134
    #6  WebCore::WorkerThread::runEventLoop() third_party/WebKit/Source/WebCore/workers/WorkerThread.cpp:163
    #7  WebCore::DedicatedWorkerThread::runEventLoop() third_party/WebKit/Source/WebCore/workers/DedicatedWorkerThread.cpp:66
    #8  WebCore::WorkerThread::workerThread() third_party/WebKit/Source/WebCore/workers/WorkerThread.cpp:141
    #9  WebCore::WorkerThread::workerThreadStart(void*) third_party/WebKit/Source/WebCore/workers/WorkerThread.cpp:118
  Location 0xB16D3C4 is 4 bytes inside a block starting at 0xB16D3C0 of size 52 allocated by T2 from heap:
    #0  malloc /tmp/valgrind-src/tsan/tsan/ts_valgrind_intercepts.c:410
    #1  WTF::fastMalloc(unsigned int) third_party/WebKit/Source/JavaScriptCore/wtf/FastMalloc.cpp:250
    #2  WTF::ThreadSafeSharedBase::operator new(unsigned int) third_party/WebKit/Source/JavaScriptCore/wtf/ThreadSafeShared.h:70
    #3  WebKit::WorkerFileSystemCallbacksBridge::create(WebKit::WebWorkerBase*, WebCore::ScriptExecutionContext*, WebKit::WebFileSystemCallbacks*) third_party/WebKit/Source/WebKit/chromium/src/WorkerFileSystemCallbacksBridge.h:83
    #4  WebCore::WorkerAsyncFileSystemChromium::createWorkerFileSystemCallbacksBridge(WTF::PassOwnPtr&lt;WebCore::AsyncFileSystemCallbacks&gt;) third_party/WebKit/Source/WebKit/chromium/src/WorkerAsyncFileSystemChromium.cpp:219
    #5  WebCore::WorkerAsyncFileSystemChromium::readMetadata(WTF::String const&amp;, WTF::PassOwnPtr&lt;WebCore::AsyncFileSystemCallbacks&gt;) third_party/WebKit/Source/WebKit/chromium/src/WorkerAsyncFileSystemChromium.cpp:112
    #6  WebCore::DOMFileSystemBase::getMetadata(WebCore::EntryBase const*, WTF::PassRefPtr&lt;WebCore::MetadataCallback&gt;, WTF::PassRefPtr&lt;WebCore::ErrorCallback&gt;) third_party/WebKit/Source/WebCore/fileapi/DOMFileSystemBase.cpp:104
    #7  WebCore::Entry::getMetadata(WTF::PassRefPtr&lt;WebCore::MetadataCallback&gt;, WTF::PassRefPtr&lt;WebCore::ErrorCallback&gt;) third_party/WebKit/Source/WebCore/fileapi/Entry.cpp:57
    #8  WebCore::EntryInternal::getMetadataCallback(v8::Arguments const&amp;) out/Release/obj/gen/webcore/bindings/V8Entry.cpp:107
    #9  v8::internal::MaybeObject* v8::internal::HandleApiCallHelper&lt;false&gt;(v8::internal::(anonymous namespace)::BuiltinArguments&lt;(v8::internal::BuiltinExtraArguments)1&gt;) v8/src/builtins.cc:1069
   Race verifier data: 0x9AB7AF9,0x9AB763B
}}}

See http://crbug.com/75589 for details.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>373363</commentid>
    <comment_count>6</comment_count>
      <attachid>86901</attachid>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2011-03-25 00:10:55 -0700</bug_when>
    <thetext>Created attachment 86901
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>373692</commentid>
    <comment_count>7</comment_count>
      <attachid>86901</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2011-03-25 13:05:48 -0700</bug_when>
    <thetext>Comment on attachment 86901
Patch

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

Just a few things but they may change the code a bit so I&apos;d like to see it one more time.

&gt; Source/WebKit/chromium/src/WorkerFileSystemCallbacksBridge.cpp:89
&gt;      static MainThreadFileSystemCallbacks* createLeakedPtr(PassRefPtr&lt;WorkerFileSystemCallbacksBridge&gt; bridge, const String&amp; mode)

This should no longer be a PassRefPtr (which implies that it keeps the ref count in some way and that is clearly not the case anymore).

&gt; Source/WebKit/chromium/src/WorkerFileSystemCallbacksBridge.cpp:385
&gt;      { // Let go of the mutex before possibly deleting this due to m_selfRef.clear().

This comment and the brace are now out of date.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>373752</commentid>
    <comment_count>8</comment_count>
      <attachid>86987</attachid>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2011-03-25 15:23:34 -0700</bug_when>
    <thetext>Created attachment 86987
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>373766</commentid>
    <comment_count>9</comment_count>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2011-03-25 16:01:10 -0700</bug_when>
    <thetext>Committed r81999: &lt;http://trac.webkit.org/changeset/81999&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>85382</attachid>
            <date>2011-03-10 13:10:08 -0800</date>
            <delta_ts>2011-03-25 00:10:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-56138-20110310131007.patch</filename>
            <type>text/plain</type>
            <size>2279</size>
            <attacher name="Adam Klein">adamk</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODA3MzkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXgg
OGUwMjBhZjYzZGQ2ZDUzNTE5Nzg4MTZmYTE1MWJmNjUyYzI2MTIyOS4uMTBmMjc0ZmFlNDMwYmQ4
YTBhN2JkZWM2ODYwZjFlMjg0MGVhMDQwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwyMCBAQAorMjAxMS0wMy0xMCAgQWRhbSBLbGVpbiAgPGFkYW1rQGNocm9taXVtLm9y
Zz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZXRh
aW4gYSByZWZlcmVuY2UgdG8gdGhlIFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2UgaW4g
cnVuVGFza09uV29ya2VyVGhyZWFkIHRvIGF2b2lkIGEgcmFjZSBjb25kaXRpb24KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU2MTM4CisKKyAgICAgICAg
VGhpcyB3YXMgZm91bmQgYnkgdGhlIENocm9taXVtIHRocmVhZCBzYW5pdGl6ZXI6IGh0dHA6Ly9j
cmJ1Zy5jb20vNzU1ODkKKworICAgICAgICBObyBsYXlvdXQgdGVzdHMsIGFzIGl0J3Mgbm90IGVh
c3kgdG8gdHJpZ2dlciB0aGlzLCBidXQgaXQgd2lsbCBiZQorICAgICAgICB0ZXN0ZWQgYnkgdGhl
IENocm9taXVtIGJ1aWxkIGJvdHMuCisKKyAgICAgICAgKiBzcmMvV29ya2VyRmlsZVN5c3RlbUNh
bGxiYWNrc0JyaWRnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldvcmtlckZpbGVTeXN0ZW1DYWxs
YmFja3NCcmlkZ2U6OnJ1blRhc2tPbldvcmtlclRocmVhZCk6CisgICAgICAgIEFkZGVkIGEgUmVm
UHRyPFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U+IHRvIGhvbGQgdGhlCisgICAgICAg
IFBhc3NSZWZQdHIgcGFzc2VkIGluLgorCiAyMDExLTAzLTEwICBTaGVyaWZmIEJvdCAgPHdlYmtp
dC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91
dCByODA3MDEuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Xb3JrZXJG
aWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2UuY3BwCmluZGV4IDBmYmE0MjU1NDU1MGZj
NmFlNTE4MTNhMzdkZTlmMTc3MjljYzE0NTguLmQ2YzY5NTcxYjk0MmFlNGU4MTFhMjlhMDMxYzYz
NGNjNTg3MmEwNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dvcmtl
ckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2UuY3BwCkBAIC0zNTgsOCArMzU4
LDkgQEAgdm9pZCBXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlOjpydW5UYXNrT25NYWlu
VGhyZWFkKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGkKICAgICB0YXNrVG9SdW4tPnBlcmZvcm1UYXNr
KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOwogfQogCi12b2lkIFdvcmtlckZpbGVTeXN0ZW1DYWxs
YmFja3NCcmlkZ2U6OnJ1blRhc2tPbldvcmtlclRocmVhZChXZWJDb3JlOjpTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBQYXNzUmVmUHRyPFdvcmtlckZpbGVT
eXN0ZW1DYWxsYmFja3NCcmlkZ2U+IGJyaWRnZSwgUGFzc093blB0cjxXZWJDb3JlOjpTY3JpcHRF
eGVjdXRpb25Db250ZXh0OjpUYXNrPiB0YXNrVG9SdW4pCit2b2lkIFdvcmtlckZpbGVTeXN0ZW1D
YWxsYmFja3NCcmlkZ2U6OnJ1blRhc2tPbldvcmtlclRocmVhZChXZWJDb3JlOjpTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBQYXNzUmVmUHRyPFdvcmtlckZp
bGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U+IHBycEJyaWRnZSwgUGFzc093blB0cjxXZWJDb3JlOjpT
Y3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPiB0YXNrVG9SdW4pCiB7CisgICAgUmVmUHRyPFdv
cmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U+IGJyaWRnZSA9IHBycEJyaWRnZTsKICAgICBp
ZiAoIWJyaWRnZS0+bV9jYWxsYmFja3NPbldvcmtlclRocmVhZCkKICAgICAgICAgcmV0dXJuOwog
ICAgIEFTU0VSVChicmlkZ2UtPm1fd29ya2VyQ29udGV4dC0+aXNDb250ZXh0VGhyZWFkKCkpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>86901</attachid>
            <date>2011-03-25 00:10:55 -0700</date>
            <delta_ts>2011-03-25 15:23:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-56138-20110325001054.patch</filename>
            <type>text/plain</type>
            <size>4180</size>
            <attacher name="Kinuko Yasuda">kinuko</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODE4NzcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXgg
OGM3Y2Y5N2RjOWFiNDhiMDI2ODAyNTgwNTk1NDI2ZDQ0NzRkMjQ3NC4uMGJjMWRhYzE2ODExODc5
YjJjZjNkYTVmMThmYWRiMjRmNmEzYjJjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxOSBAQAorMjAxMS0wMy0yNSAgS2ludWtvIFlhc3VkYSAgPGtpbnVrb0BjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
RGF0YSByYWNlIGJldHdlZW4gfldvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2UgYW5kIHJ1
blRhc2tzT25Xb3JrZXJUaHJlYWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTU2MTM4CisgICAgICAgIFN0b3BwZWQgcGFzc2luZyB0aGUgV29ya2VyRmls
ZVN5c3RlbUNhbGxiYWNrc0JyaWRnZSdzIHJlZmVyZW5jZSB0bworICAgICAgICBNYWluVGhyZWFk
RmlsZVN5c3RlbUNhbGxiYWNrcyBzbyB0aGF0IGluIG1vc3QgY2FzZXMgKGluIG5vcm1hbCBjYXNl
cykKKyAgICAgICAgaXRzIHJlZmVyZW5jZSBpcyBvbmx5IG1haW50YWluZWQgYnkgV29ya2VyVGhy
ZWFkLgorCisgICAgICAgICogc3JjL1dvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2UuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpNYWluVGhyZWFkRmlsZVN5c3RlbUNhbGxiYWNrczo6Y3JlYXRl
TGVha2VkUHRyKToKKyAgICAgICAgKFdlYktpdDo6TWFpblRocmVhZEZpbGVTeXN0ZW1DYWxsYmFj
a3M6Ok1haW5UaHJlYWRGaWxlU3lzdGVtQ2FsbGJhY2tzKToKKyAgICAgICAgKFdlYktpdDo6V29y
a2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZTo6bWF5UG9zdFRhc2tUb1dvcmtlcik6CisgICAg
ICAgICogc3JjL1dvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2UuaDoKKwogMjAxMS0wMy0y
NCAgRG9taW5pYyBNYXp6b25pICA8ZG1henpvbmlAZ29vZ2xlLmNvbT4KIAogICAgICAgICBSZXZp
ZXdlZCBieSBEaW1pdHJpIEdsYXprb3YuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9Xb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlLmNwcCBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2UuY3BwCmluZGV4
IDQxNWVkMWE0MjgxMDMzMDM2NzE3OGZjNzcyYjAwMzIyZDdjNzA1NDAuLmU3MzhiZTNkZTE5ZmU5
MWJmOWQzZGFiNmJhMjI1ZDAyZGUyZDAzYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2UuY3Bw
CkBAIC04OCw3ICs4OCw3IEBAIHB1YmxpYzoKICAgICAvLyBDYWxsYmFja3MgYXJlIHNlbGYtZGVz
dHJ1Y3RlZCBhbmQgd2UgYWx3YXlzIHJldHVybiBsZWFrZWQgcG9pbnRlciBoZXJlLgogICAgIHN0
YXRpYyBNYWluVGhyZWFkRmlsZVN5c3RlbUNhbGxiYWNrcyogY3JlYXRlTGVha2VkUHRyKFBhc3NS
ZWZQdHI8V29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZT4gYnJpZGdlLCBjb25zdCBTdHJp
bmcmIG1vZGUpCiAgICAgewotICAgICAgICBPd25QdHI8TWFpblRocmVhZEZpbGVTeXN0ZW1DYWxs
YmFja3M+IGNhbGxiYWNrcyA9IGFkb3B0UHRyKG5ldyBNYWluVGhyZWFkRmlsZVN5c3RlbUNhbGxi
YWNrcyhicmlkZ2UsIG1vZGUpKTsKKyAgICAgICAgT3duUHRyPE1haW5UaHJlYWRGaWxlU3lzdGVt
Q2FsbGJhY2tzPiBjYWxsYmFja3MgPSBhZG9wdFB0cihuZXcgTWFpblRocmVhZEZpbGVTeXN0ZW1D
YWxsYmFja3MoYnJpZGdlLmdldCgpLCBtb2RlKSk7CiAgICAgICAgIHJldHVybiBjYWxsYmFja3Mu
bGVha1B0cigpOwogICAgIH0KIApAQCAtMTI3LDE1ICsxMjcsMTYgQEAgcHVibGljOgogICAgIH0K
IAogcHJpdmF0ZToKLSAgICBNYWluVGhyZWFkRmlsZVN5c3RlbUNhbGxiYWNrcyhQYXNzUmVmUHRy
PFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U+IGJyaWRnZSwgY29uc3QgU3RyaW5nJiBt
b2RlKQorICAgIE1haW5UaHJlYWRGaWxlU3lzdGVtQ2FsbGJhY2tzKFdvcmtlckZpbGVTeXN0ZW1D
YWxsYmFja3NCcmlkZ2UqIGJyaWRnZSwgY29uc3QgU3RyaW5nJiBtb2RlKQogICAgICAgICA6IG1f
YnJpZGdlKGJyaWRnZSkKICAgICAgICAgLCBtX21vZGUobW9kZSkKICAgICB7Ci0gICAgICAgIEFT
U0VSVChtX2JyaWRnZS5nZXQoKSk7CisgICAgICAgIEFTU0VSVChtX2JyaWRnZSk7CiAgICAgfQog
CiAgICAgZnJpZW5kIGNsYXNzIFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U7Ci0gICAg
UmVmUHRyPFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U+IG1fYnJpZGdlOworICAgIC8v
IFRoZSBicmlkZ2UgcG9pbnRlciBpcyBrZXB0IGJ5IHRoZSBicmlkZ2UgaXRzZWxmIG9uIHRoZSBX
b3JrZXJUaHJlYWQuCisgICAgV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZSogbV9icmlk
Z2U7CiAgICAgY29uc3QgU3RyaW5nIG1fbW9kZTsKIH07CiAKQEAgLTM4NCw5ICszODUsOCBAQCB2
b2lkIFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U6Om1heVBvc3RUYXNrVG9Xb3JrZXIo
UGFzc093blB0cjxTY3JpcHRFeGVjdQogICAgIHsgLy8gTGV0IGdvIG9mIHRoZSBtdXRleCBiZWZv
cmUgcG9zc2libHkgZGVsZXRpbmcgdGhpcyBkdWUgdG8gbV9zZWxmUmVmLmNsZWFyKCkuCiAgICAg
ICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX211dGV4KTsKICAgICAgICAgaWYgKG1fd29ya2VyKQot
ICAgICAgICAgICAgbV93b3JrZXItPnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyQ29udGV4dChjcmVh
dGVDYWxsYmFja1Rhc2soJnJ1blRhc2tPbldvcmtlclRocmVhZCwgbV9zZWxmUmVmLCB0YXNrKSwg
bW9kZSk7CisgICAgICAgICAgICBtX3dvcmtlci0+cG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJDb250
ZXh0KGNyZWF0ZUNhbGxiYWNrVGFzaygmcnVuVGFza09uV29ya2VyVGhyZWFkLCBtX3NlbGZSZWYu
cmVsZWFzZSgpLCB0YXNrKSwgbW9kZSk7CiAgICAgfQotICAgIG1fc2VsZlJlZi5jbGVhcigpOwog
fQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9Xb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlLmggYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9Xb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlLmgKaW5kZXgg
MjFiZGZjNzRmZTZjZTQwNzliZTc2MTQ4NDU2ZmI4ZTE5NDY3YWQyZi4uOWE4NjlkYzY4ZGVlMGZk
NDQ4M2Y0NTdmMjcyMGYwZjY3YzZkOWYxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2UuaApAQCAt
MTM4LDcgKzEzOCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaXNwYXRjaFRhc2tUb01haW5UaHJl
YWQoUGFzc093blB0cjxXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPik7CiAg
ICAgdm9pZCBtYXlQb3N0VGFza1RvV29ya2VyKFBhc3NPd25QdHI8V2ViQ29yZTo6U2NyaXB0RXhl
Y3V0aW9uQ29udGV4dDo6VGFzaz4sIGNvbnN0IFN0cmluZyYgbW9kZSk7CiAKLSAgICAvLyBtX3Nl
bGZSZWYga2VlcHMgYSByZWZlcmVuY2UgdG8gaXRzZWxmIHVudGlsIGEgdGFzayBpcyBjcmVhdGVk
IGZvciB0aGUgd29ya2VyIHRocmVhZCAoYXQgd2hpY2ggcG9pbnQgdGhlIHRhc2sgaG9sZHMgdGhl
IHJlZmVyZW5jZSkuCisgICAgLy8gbV9zZWxmUmVmIGtlZXBzIGEgcmVmZXJlbmNlIHRvIGl0c2Vs
ZiB3aGlsZSB0aGVyZSdzIGEgcGVuZGluZyBjYWxsYmFjayBvbiB0aGUgbWFpbiB0aHJlYWQuCiAg
ICAgUmVmUHRyPFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U+IG1fc2VsZlJlZjsKIAog
ICAgIE11dGV4IG1fbXV0ZXg7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>86987</attachid>
            <date>2011-03-25 15:23:34 -0700</date>
            <delta_ts>2011-03-25 15:33:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-56138-20110325152333.patch</filename>
            <type>text/plain</type>
            <size>4466</size>
            <attacher name="Kinuko Yasuda">kinuko</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODE4NzcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXgg
OGM3Y2Y5N2RjOWFiNDhiMDI2ODAyNTgwNTk1NDI2ZDQ0NzRkMjQ3NC4uMGJjMWRhYzE2ODExODc5
YjJjZjNkYTVmMThmYWRiMjRmNmEzYjJjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxOSBAQAorMjAxMS0wMy0yNSAgS2ludWtvIFlhc3VkYSAgPGtpbnVrb0BjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
RGF0YSByYWNlIGJldHdlZW4gfldvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2UgYW5kIHJ1
blRhc2tzT25Xb3JrZXJUaHJlYWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTU2MTM4CisgICAgICAgIFN0b3BwZWQgcGFzc2luZyB0aGUgV29ya2VyRmls
ZVN5c3RlbUNhbGxiYWNrc0JyaWRnZSdzIHJlZmVyZW5jZSB0bworICAgICAgICBNYWluVGhyZWFk
RmlsZVN5c3RlbUNhbGxiYWNrcyBzbyB0aGF0IGluIG1vc3QgY2FzZXMgKGluIG5vcm1hbCBjYXNl
cykKKyAgICAgICAgaXRzIHJlZmVyZW5jZSBpcyBvbmx5IG1haW50YWluZWQgYnkgV29ya2VyVGhy
ZWFkLgorCisgICAgICAgICogc3JjL1dvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2UuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpNYWluVGhyZWFkRmlsZVN5c3RlbUNhbGxiYWNrczo6Y3JlYXRl
TGVha2VkUHRyKToKKyAgICAgICAgKFdlYktpdDo6TWFpblRocmVhZEZpbGVTeXN0ZW1DYWxsYmFj
a3M6Ok1haW5UaHJlYWRGaWxlU3lzdGVtQ2FsbGJhY2tzKToKKyAgICAgICAgKFdlYktpdDo6V29y
a2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZTo6bWF5UG9zdFRhc2tUb1dvcmtlcik6CisgICAg
ICAgICogc3JjL1dvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2UuaDoKKwogMjAxMS0wMy0y
NCAgRG9taW5pYyBNYXp6b25pICA8ZG1henpvbmlAZ29vZ2xlLmNvbT4KIAogICAgICAgICBSZXZp
ZXdlZCBieSBEaW1pdHJpIEdsYXprb3YuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9Xb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlLmNwcCBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2UuY3BwCmluZGV4
IDQxNWVkMWE0MjgxMDMzMDM2NzE3OGZjNzcyYjAwMzIyZDdjNzA1NDAuLmQwNTMyMmZmOWFlNWM0
NzZlOTc1NGMyNTI0MDA3NzllNjNlMWM1NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2UuY3Bw
CkBAIC04Niw3ICs4Niw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgTWFpblRocmVhZEZp
bGVTeXN0ZW1DYWxsYmFja3MgOiBwdWJsaWMgV2ViRmlsZVN5c3RlbUNhbGxiYWNrcyB7CiBwdWJs
aWM6CiAgICAgLy8gQ2FsbGJhY2tzIGFyZSBzZWxmLWRlc3RydWN0ZWQgYW5kIHdlIGFsd2F5cyBy
ZXR1cm4gbGVha2VkIHBvaW50ZXIgaGVyZS4KLSAgICBzdGF0aWMgTWFpblRocmVhZEZpbGVTeXN0
ZW1DYWxsYmFja3MqIGNyZWF0ZUxlYWtlZFB0cihQYXNzUmVmUHRyPFdvcmtlckZpbGVTeXN0ZW1D
YWxsYmFja3NCcmlkZ2U+IGJyaWRnZSwgY29uc3QgU3RyaW5nJiBtb2RlKQorICAgIHN0YXRpYyBN
YWluVGhyZWFkRmlsZVN5c3RlbUNhbGxiYWNrcyogY3JlYXRlTGVha2VkUHRyKFdvcmtlckZpbGVT
eXN0ZW1DYWxsYmFja3NCcmlkZ2UqIGJyaWRnZSwgY29uc3QgU3RyaW5nJiBtb2RlKQogICAgIHsK
ICAgICAgICAgT3duUHRyPE1haW5UaHJlYWRGaWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFja3Mg
PSBhZG9wdFB0cihuZXcgTWFpblRocmVhZEZpbGVTeXN0ZW1DYWxsYmFja3MoYnJpZGdlLCBtb2Rl
KSk7CiAgICAgICAgIHJldHVybiBjYWxsYmFja3MubGVha1B0cigpOwpAQCAtMTI3LDE1ICsxMjcs
MTYgQEAgcHVibGljOgogICAgIH0KIAogcHJpdmF0ZToKLSAgICBNYWluVGhyZWFkRmlsZVN5c3Rl
bUNhbGxiYWNrcyhQYXNzUmVmUHRyPFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U+IGJy
aWRnZSwgY29uc3QgU3RyaW5nJiBtb2RlKQorICAgIE1haW5UaHJlYWRGaWxlU3lzdGVtQ2FsbGJh
Y2tzKFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2UqIGJyaWRnZSwgY29uc3QgU3RyaW5n
JiBtb2RlKQogICAgICAgICA6IG1fYnJpZGdlKGJyaWRnZSkKICAgICAgICAgLCBtX21vZGUobW9k
ZSkKICAgICB7Ci0gICAgICAgIEFTU0VSVChtX2JyaWRnZS5nZXQoKSk7CisgICAgICAgIEFTU0VS
VChtX2JyaWRnZSk7CiAgICAgfQogCiAgICAgZnJpZW5kIGNsYXNzIFdvcmtlckZpbGVTeXN0ZW1D
YWxsYmFja3NCcmlkZ2U7Ci0gICAgUmVmUHRyPFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlk
Z2U+IG1fYnJpZGdlOworICAgIC8vIFRoZSBicmlkZ2UgcG9pbnRlciBpcyBrZXB0IGJ5IHRoZSBi
cmlkZ2UgaXRzZWxmIG9uIHRoZSBXb3JrZXJUaHJlYWQuCisgICAgV29ya2VyRmlsZVN5c3RlbUNh
bGxiYWNrc0JyaWRnZSogbV9icmlkZ2U7CiAgICAgY29uc3QgU3RyaW5nIG1fbW9kZTsKIH07CiAK
QEAgLTM4MSwxMiArMzgyLDkgQEAgdm9pZCBXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdl
OjpkaXNwYXRjaFRhc2tUb01haW5UaHJlYWQoUGFzc093blB0cjxXZWJDb3IKIHZvaWQgV29ya2Vy
RmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZTo6bWF5UG9zdFRhc2tUb1dvcmtlcihQYXNzT3duUHRy
PFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+IHRhc2ssIGNvbnN0IFN0cmluZyYgbW9kZSkK
IHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgIHsgLy8gTGV0IGdvIG9mIHRoZSBt
dXRleCBiZWZvcmUgcG9zc2libHkgZGVsZXRpbmcgdGhpcyBkdWUgdG8gbV9zZWxmUmVmLmNsZWFy
KCkuCi0gICAgICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX211dGV4KTsKLSAgICAgICAgaWYgKG1f
d29ya2VyKQotICAgICAgICAgICAgbV93b3JrZXItPnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyQ29u
dGV4dChjcmVhdGVDYWxsYmFja1Rhc2soJnJ1blRhc2tPbldvcmtlclRocmVhZCwgbV9zZWxmUmVm
LCB0YXNrKSwgbW9kZSk7Ci0gICAgfQotICAgIG1fc2VsZlJlZi5jbGVhcigpOworICAgIE11dGV4
TG9ja2VyIGxvY2tlcihtX211dGV4KTsKKyAgICBpZiAobV93b3JrZXIpCisgICAgICAgIG1fd29y
a2VyLT5wb3N0VGFza0Zvck1vZGVUb1dvcmtlckNvbnRleHQoY3JlYXRlQ2FsbGJhY2tUYXNrKCZy
dW5UYXNrT25Xb3JrZXJUaHJlYWQsIG1fc2VsZlJlZi5yZWxlYXNlKCksIHRhc2spLCBtb2RlKTsK
IH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZS5oIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZS5oCmluZGV4
IDIxYmRmYzc0ZmU2Y2U0MDc5YmU3NjE0ODQ1NmZiOGUxOTQ2N2FkMmYuLjlhODY5ZGM2OGRlZTBm
ZDQ0ODNmNDU3ZjI3MjBmMGY2N2M2ZDlmMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2UuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9Xb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlLmgKQEAg
LTEzOCw3ICsxMzgsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlzcGF0Y2hUYXNrVG9NYWluVGhy
ZWFkKFBhc3NPd25QdHI8V2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4pOwog
ICAgIHZvaWQgbWF5UG9zdFRhc2tUb1dvcmtlcihQYXNzT3duUHRyPFdlYkNvcmU6OlNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQ6OlRhc2s+LCBjb25zdCBTdHJpbmcmIG1vZGUpOwogCi0gICAgLy8gbV9z
ZWxmUmVmIGtlZXBzIGEgcmVmZXJlbmNlIHRvIGl0c2VsZiB1bnRpbCBhIHRhc2sgaXMgY3JlYXRl
ZCBmb3IgdGhlIHdvcmtlciB0aHJlYWQgKGF0IHdoaWNoIHBvaW50IHRoZSB0YXNrIGhvbGRzIHRo
ZSByZWZlcmVuY2UpLgorICAgIC8vIG1fc2VsZlJlZiBrZWVwcyBhIHJlZmVyZW5jZSB0byBpdHNl
bGYgd2hpbGUgdGhlcmUncyBhIHBlbmRpbmcgY2FsbGJhY2sgb24gdGhlIG1haW4gdGhyZWFkLgog
ICAgIFJlZlB0cjxXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlPiBtX3NlbGZSZWY7CiAK
ICAgICBNdXRleCBtX211dGV4Owo=
</data>
<flag name="review"
          id="79364"
          type_id="1"
          status="+"
          setter="levin"
    />
          </attachment>
      

    </bug>

</bugzilla>