<?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>25973</bug_id>
          
          <creation_ts>2009-05-22 18:14:09 -0700</creation_ts>
          <short_desc>Avoid calling WTF::CurrentThread() from thread-local destructors in Chromium on OSX</short_desc>
          <delta_ts>2009-06-01 12:58:03 -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>Mac</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>1</everconfirmed>
          <reporter name="Dmitry Titov">dimich</reporter>
          <assigned_to name="Dmitry Titov">dimich</assigned_to>
          <cc>ap</cc>
    
    <cc>dglazkov</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>122753</commentid>
    <comment_count>0</comment_count>
    <who name="Dmitry Titov">dimich</who>
    <bug_when>2009-05-22 18:14:09 -0700</bug_when>
    <thetext>Due to bug 25348, which is still waiting for a solution, the workers in Chromium on OSX (pthreads) trip ASSERT in JavaScripCore/wtf/ThreadingPthreads.cpp, in function establishIdentifierForPthreadHandle() because Chromium variant of isMainThread uses CurrentThread(0 which inserts a thread id into threading map, and if called from thread-specific destructor, this happens after the thread is detached.

Long story short, on Chromium we should stop calling IsMainThread(), and since the only place it is called now is ~ThreadGlobalData() inside ASSERT, I&apos;m disabling the ASSERT.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>122755</commentid>
    <comment_count>1</comment_count>
      <attachid>30601</attachid>
    <who name="Dmitry Titov">dimich</who>
    <bug_when>2009-05-22 18:19:03 -0700</bug_when>
    <thetext>Created attachment 30601
Proposed patch

Note the non-Chromium OSX pthread builds are fine since isMainThread is not calling CurrentThread on those.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>122767</commentid>
    <comment_count>2</comment_count>
      <attachid>30601</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-05-22 19:46:55 -0700</bug_when>
    <thetext>Comment on attachment 30601
Proposed patch

Can this be tested via a layout test?

Why is it correct for chromium darwin to call CurrnetThread()?

Also some of your description from the bug belongs in teh changlog.

And a comment around your ifdef explaining what it&apos;s there for would help.

r- for the lack of test (or explanation why no test possible), and above issues.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>123208</commentid>
    <comment_count>3</comment_count>
      <attachid>30686</attachid>
    <who name="Dmitry Titov">dimich</who>
    <bug_when>2009-05-26 16:37:52 -0700</bug_when>
    <thetext>Created attachment 30686
Updated patch.

A better patch and a bit better attempt to explain the change:

Pthreads invoke thread-specific destructors after WTF::detachThread() is called and ThreadIdentifier
for the thread removed from the WTF thread map. Calling CurrentThread() in such destructor causes
the ThreadIdentifier to be re-created and inserted into the map again. Since Pthreads on OSX reuse
the pthread_t between threads, the next created thread will have the same pthread_t and cause an assert in establishIdentifierForPthreadHandle() since the id is already in the map.

The change removes the call to isMainThread() which internally calls CurrentThread() in OSX Chromium port, by storing the result of isMainThread() in a member variable of thread-specific data during construction. Since destructor of thread-specific data is always called on its &apos;own&apos; thread, the change preserves the previous behavior but fixes the aforementioned problem.

The behavior is covered by existing test LayoutTests/fast/workers/worker-terminate.html, which currently fails on OSX Chromium and will stop failing after this change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>123595</commentid>
    <comment_count>4</comment_count>
    <who name="Michael Nordman">michaeln</who>
    <bug_when>2009-05-29 13:03:28 -0700</bug_when>
    <thetext>&gt; Note the non-Chromium OSX pthread builds are fine since isMainThread is not
&gt; calling CurrentThread on those.

Why are chromium OSX builds different in this regard?

* maybe rename m_mainThread to m_isMainThread for clarity

* should some kind of debug runtime check be introduced into CurrentThread()
  (or perhaps something more specific like establishIdentifierForPthreadHandle)
  to complain about re-establishing a threadid at TLS dtor time?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>123608</commentid>
    <comment_count>5</comment_count>
    <who name="Dmitry Titov">dimich</who>
    <bug_when>2009-05-29 13:57:06 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; &gt; Note the non-Chromium OSX pthread builds are fine since isMainThread is not
&gt; &gt; calling CurrentThread on those.
&gt; 
&gt; Why are chromium OSX builds different in this regard?

Because WTF::isMainThread() (in ThreadingPthreads.cpp) is different for Chromium (it has #ifdef CHROMIUM inside): Chromium treats the thread that first called InitializeThreading as the main one (because in a renderer process, the WebKit is running not on the main thread) rather then just use pthread_main_np() - so the Chromium codepath calls CurrentThread() inside.

&gt; * maybe rename m_mainThread to m_isMainThread for clarity

cool idea, will do.

&gt; * should some kind of debug runtime check be introduced into CurrentThread()
&gt;   (or perhaps something more specific like establishIdentifierForPthreadHandle)
&gt;   to complain about re-establishing a threadid at TLS dtor time?

I thought about it for a while, working on bug 25348. I am not sure there is a way to construct such check. Essentially, inside CurrentThread() we would need to figure out that the caller stack has a tls dtor on it. Given that such dtor is just a registered function, I&apos;m not sure how to figure that out. We could wrap most of threading WTF API into some class and then provide a virtual that would be a &apos;tls dtor&apos; so we could know when we are &apos;in tls dtor&apos; but this is more work and likely should be done (if at all) as a fix for bug 25348. Or we could have something like &apos;dying threads list&apos; with pthread_t stored in it but the problem is we don&apos;t know when to remove a thread from such a list.
So, I&apos;m totally open for an idea how to make such check :-)

Meanwhile, in worker OSX Chromium case, the existing ASSERT  in establishIdentifierForPthreadHandle() fires when a new thread is created but the pthread_t is established by the previous thread (OSX pthreads reuse pthread_t), so we need this fix to enable workers on OSX Chromium.
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>123626</commentid>
    <comment_count>6</comment_count>
    <who name="Michael Nordman">michaeln</who>
    <bug_when>2009-05-29 15:21:00 -0700</bug_when>
    <thetext>This looks like a good proximate fix to the problem your bumping into. Much less ripple than revamping what ThreadIdentifiers are.
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>123638</commentid>
    <comment_count>7</comment_count>
      <attachid>30794</attachid>
    <who name="Dmitry Titov">dimich</who>
    <bug_when>2009-05-29 16:03:22 -0700</bug_when>
    <thetext>Created attachment 30794
Updated according to Michael&apos;s comments

I&apos;ve also added #ifndef NDEBUG around a boolean that is only used in the ASSERT.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>123698</commentid>
    <comment_count>8</comment_count>
      <attachid>30794</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-05-30 14:10:57 -0700</bug_when>
    <thetext>Comment on attachment 30794
Updated according to Michael&apos;s comments

Seems fine.

I think you want a comment in ~ThreadGlobalData explaining why you can&apos;t use isMainThread() at this point, since people working on platforms other than Chromium might try to &quot;clean this up&quot; and re-break it if there&apos;s no comment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>123874</commentid>
    <comment_count>9</comment_count>
    <who name="Dmitry Titov">dimich</who>
    <bug_when>2009-06-01 12:58:03 -0700</bug_when>
    <thetext>Landed: http://trac.webkit.org/changeset/44327 and http://trac.webkit.org/changeset/44328</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>30601</attachid>
            <date>2009-05-22 18:19:03 -0700</date>
            <delta_ts>2009-05-26 16:37:52 -0700</delta_ts>
            <desc>Proposed patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>1287</size>
            <attacher name="Dmitry Titov">dimich</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MDJlNGFmYS4uYTc4NzhhMSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAwOS0wNS0yMiAgRG1pdHJ5IFRpdG92
ICA8ZGltaWNoQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjU5NzMKKyAgICAgICAgQXZvaWQgY2FsbGluZyBDdXJyZW50VGhyZWFkKCkgaW4gdGhyZWFkLXNw
ZWNpZmljIGNvbnN0cnVjdG9ycyBvbiBwdGhyZWFkIHBsYXRmb3Jtcy4KKworICAgICAgICAqIHBs
YXRmb3JtL1RocmVhZEdsb2JhbERhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkR2xv
YmFsRGF0YTo6flRocmVhZEdsb2JhbERhdGEpOgorICAgICAgICBjb21tZW50IG91dCBhbiBBU1NF
UlQgdG8gYXZvaWQgY2FsbGluZyBJc01haW5UaHJlYWQoKSAod2hpY2ggY2FsbHMgQ3VycmVudFRo
cmVhZCgpKSBpbiBPU1ggQ2hyb21pdW0uCisKIDIwMDktMDUtMTkgIENocmlzIEZsZWl6YWNoICA8
Y2ZsZWl6YWNoQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBCZXRoIERha2luLgpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9UaHJlYWRHbG9iYWxEYXRhLmNwcCBiL1dlYkNv
cmUvcGxhdGZvcm0vVGhyZWFkR2xvYmFsRGF0YS5jcHAKaW5kZXggOTAzYWY2Ni4uMGZlMjkyMiAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9UaHJlYWRHbG9iYWxEYXRhLmNwcAorKysgYi9X
ZWJDb3JlL3BsYXRmb3JtL1RocmVhZEdsb2JhbERhdGEuY3BwCkBAIC05NCw3ICs5NCwxMCBAQCBU
aHJlYWRHbG9iYWxEYXRhOjp+VGhyZWFkR2xvYmFsRGF0YSgpCiAgICAgZGVsZXRlIG1fYXRvbWlj
U3RyaW5nVGFibGU7CiAgICAgZGVsZXRlIG1fdGhyZWFkVGltZXJzOwogCisjaWYgIVBMQVRGT1JN
KERBUldJTikgfHwgIVBMQVRGT1JNKENIUk9NSVVNKQogICAgIEFTU0VSVChpc01haW5UaHJlYWQo
KSB8fCBtX2VtcHR5U3RyaW5nLT5oYXNPbmVSZWYoKSk7IC8vIFdlIGludGVudGlvbmFsbHkgZG9u
J3QgY2xlYW4gdXAgc3RhdGljIGRhdGEgb24gYXBwbGljYXRpb24gcXVpdCwgc28gdGhlcmUgd2ls
bCBiZSBtYW55IHN0cmluZ3MgcmVtYWluaW5nIG9uIHRoZSBtYWluIHRocmVhZC4KKyNlbmRpZgor
CiAgICAgZGVsZXRlIG1fZW1wdHlTdHJpbmc7CiB9CiAK
</data>
<flag name="review"
          id="15478"
          type_id="1"
          status="-"
          setter="eric"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>30686</attachid>
            <date>2009-05-26 16:37:52 -0700</date>
            <delta_ts>2009-05-29 16:03:22 -0700</delta_ts>
            <desc>Updated patch.</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>3172</size>
            <attacher name="Dmitry Titov">dimich</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ZTcwNDVlZC4uYWM0MDM4NSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsNSArMSwyNiBAQAogMjAwOS0wNS0yNiAgRG1pdHJ5IFRpdG92
ICA8ZGltaWNoQGNocm9taXVtLm9yZz4KIAorICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjU5NzMKKyAgICAgICAgQXZvaWQgY2FsbGluZyBDdXJyZW50VGhyZWFkKCkgaW4gdGhyZWFkLXNw
ZWNpZmljIGRlc3RydWN0b3JzIGluIE9TWCBDaHJvbWl1bS4KKyAgICAgICAgUHRocmVhZHMgaW52
b2tlIHRocmVhZC1zcGVjaWZpYyBkZXN0cnVjdG9ycyBhZnRlciBXVEY6OmRldGFjaFRocmVhZCgp
IGlzIGNhbGxlZCBhbmQgVGhyZWFkSWRlbnRpZmllcgorICAgICAgICBmb3IgdGhlIHRocmVhZCBy
ZW1vdmVkIGZyb20gdGhlIFdURiB0aHJlYWQgbWFwLiBDYWxsaW5nIEN1cnJlbnRUaHJlYWQoKSBp
biBzdWNoIGRlc3RydWN0b3IgY2F1c2VzCisgICAgICAgIHRoZSBUaHJlYWRJZGVudGlmaWVyIHRv
IGJlIHJlLWNyZWF0ZWQgYW5kIGluc2VydGVkIGludG8gdGhlIG1hcCBhZ2Fpbi4gU2luY2UgUHRo
cmVhZHMgb24gT1NYIHJldXNlCisgICAgICAgIHRoZSBwdGhyZWFkX3QgYmV0d2VlbiB0aHJlYWRz
LCB0aGUgbmV4dCBjcmVhdGVkIHRocmVhZCB3aWxsIGhhdmUgdGhlIHNhbWUgcHRocmVhZF90IGFu
ZCBjYXVzZSBhbiBhc3NlcnQKKyAgICAgICAgaW4gZXN0YWJsaXNoSWRlbnRpZmllckZvclB0aHJl
YWRIYW5kbGUoKSBzaW5jZSB0aGUgaWQgaXMgYWxyZWFkeSBpbiB0aGUgbWFwLgorCisgICAgICAg
IFRoZSBiZWhhdmlvciBpcyBjb3ZlcmVkIGJ5IGV4aXN0aW5nIHRlc3QgTGF5b3V0VGVzdHMvZmFz
dC93b3JrZXJzL3dvcmtlci10ZXJtaW5hdGUuaHRtbCwgd2hpY2ggY3VycmVudGx5IGZhaWxzCisg
ICAgICAgIG9uIE9TWCBDaHJvbWl1bSBhbmQgd2lsbCBzdG9wIGZhaWxpbmcgYWZ0ZXIgdGhpcyBj
aGFuZ2UuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9UaHJlYWRHbG9iYWxEYXRhLmg6CisgICAgICAg
ICogcGxhdGZvcm0vVGhyZWFkR2xvYmFsRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUaHJl
YWRHbG9iYWxEYXRhOjp+VGhyZWFkR2xvYmFsRGF0YSk6CisgICAgICAgIFN0b3JlIHRoZSByZXN1
bHQgb2YgImlzTWFpblRocmVhZCgpIiBpbiBhIG1lbWJlciB2YXJpYWJsZSBkdXJpbmcgY29uc3Ry
dWN0aW9uIG9mIHRocmVhZC1zcGVjaWZpYyBkYXRhCisgICAgICAgIHRvIGF2b2lkIGNhbGxpbmcg
SXNNYWluVGhyZWFkKCkgaW4gZGVzdHJ1Y3Rvciwgc2luY2UgdGhlIGxhdHRlciBjYWxscyBDdXJy
ZW50VGhyZWFkKCkgaW4gT1NYIENocm9taXVtLgorCisyMDA5LTA1LTI2ICBEbWl0cnkgVGl0b3Yg
IDxkaW1pY2hAY2hyb21pdW0ub3JnPgorCiAgICAgICAgIFJldmlld2VkIGJ5IERpbWl0cmkgR2xh
emtvdi4KIAogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjU5NzQKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vVGhyZWFkR2xvYmFsRGF0YS5jcHAg
Yi9XZWJDb3JlL3BsYXRmb3JtL1RocmVhZEdsb2JhbERhdGEuY3BwCmluZGV4IGEzYWExNTguLjBj
YWExZmMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vVGhyZWFkR2xvYmFsRGF0YS5jcHAK
KysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9UaHJlYWRHbG9iYWxEYXRhLmNwcApAQCAtNzIsNiArNzIs
NyBAQCBUaHJlYWRHbG9iYWxEYXRhOjpUaHJlYWRHbG9iYWxEYXRhKCkKICAgICAsIG1fYXRvbWlj
U3RyaW5nVGFibGUobmV3IEhhc2hTZXQ8U3RyaW5nSW1wbCo+KQogICAgICwgbV9ldmVudE5hbWVz
KG5ldyBFdmVudE5hbWVzKQogICAgICwgbV90aHJlYWRUaW1lcnMobmV3IFRocmVhZFRpbWVycykK
KyAgICAsIG1fbWFpblRocmVhZChpc01haW5UaHJlYWQoKSkKICNpZiBVU0UoSUNVX1VOSUNPREUp
IHx8IFVTRShHTElCX0lDVV9VTklDT0RFX0hZQlJJRCkKICAgICAsIG1fY2FjaGVkQ29udmVydGVy
SUNVKG5ldyBJQ1VDb252ZXJ0ZXJXcmFwcGVyKQogI2VuZGlmCkBAIC05NCw3ICs5NSw4IEBAIFRo
cmVhZEdsb2JhbERhdGE6On5UaHJlYWRHbG9iYWxEYXRhKCkKICAgICBkZWxldGUgbV9hdG9taWNT
dHJpbmdUYWJsZTsKICAgICBkZWxldGUgbV90aHJlYWRUaW1lcnM7CiAKLSAgICBBU1NFUlQoaXNN
YWluVGhyZWFkKCkgfHwgbV9lbXB0eVN0cmluZy0+aGFzT25lUmVmKCkpOyAvLyBXZSBpbnRlbnRp
b25hbGx5IGRvbid0IGNsZWFuIHVwIHN0YXRpYyBkYXRhIG9uIGFwcGxpY2F0aW9uIHF1aXQsIHNv
IHRoZXJlIHdpbGwgYmUgbWFueSBzdHJpbmdzIHJlbWFpbmluZyBvbiB0aGUgbWFpbiB0aHJlYWQu
CisgICAgQVNTRVJUKG1fbWFpblRocmVhZCB8fCBtX2VtcHR5U3RyaW5nLT5oYXNPbmVSZWYoKSk7
IC8vIFdlIGludGVudGlvbmFsbHkgZG9uJ3QgY2xlYW4gdXAgc3RhdGljIGRhdGEgb24gYXBwbGlj
YXRpb24gcXVpdCwgc28gdGhlcmUgd2lsbCBiZSBtYW55IHN0cmluZ3MgcmVtYWluaW5nIG9uIHRo
ZSBtYWluIHRocmVhZC4KKwogICAgIGRlbGV0ZSBtX2VtcHR5U3RyaW5nOwogfQogCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL3BsYXRmb3JtL1RocmVhZEdsb2JhbERhdGEuaCBiL1dlYkNvcmUvcGxhdGZv
cm0vVGhyZWFkR2xvYmFsRGF0YS5oCmluZGV4IDc1YzFiNGIuLjAyNGQ2ZWYgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvcGxhdGZvcm0vVGhyZWFkR2xvYmFsRGF0YS5oCisrKyBiL1dlYkNvcmUvcGxhdGZv
cm0vVGhyZWFkR2xvYmFsRGF0YS5oCkBAIC02MSw2ICs2MSw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICAgICAgICAgSGFzaFNldDxTdHJpbmdJbXBsKj4qIG1fYXRvbWljU3RyaW5nVGFibGU7CiAg
ICAgICAgIEV2ZW50TmFtZXMqIG1fZXZlbnROYW1lczsKICAgICAgICAgVGhyZWFkVGltZXJzKiBt
X3RocmVhZFRpbWVyczsKKyAgICAgICAgYm9vbCBtX21haW5UaHJlYWQ7CiAKICNpZiBVU0UoSUNV
X1VOSUNPREUpIHx8IFVTRShHTElCX0lDVV9VTklDT0RFX0hZQlJJRCkKICAgICAgICAgSUNVQ29u
dmVydGVyV3JhcHBlciogbV9jYWNoZWRDb252ZXJ0ZXJJQ1U7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>30794</attachid>
            <date>2009-05-29 16:03:22 -0700</date>
            <delta_ts>2009-05-30 14:10:57 -0700</delta_ts>
            <desc>Updated according to Michael&apos;s comments</desc>
            <filename>patch_v2.txt</filename>
            <type>text/plain</type>
            <size>3150</size>
            <attacher name="Dmitry Titov">dimich</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
YTM4NGRmMi4uMTE1ZDY3OCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNCBAQAorMjAwOS0wNS0yOSAgRG1pdHJ5IFRpdG92
ICA8ZGltaWNoQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjU5NzMKKyAgICAgICAgQXZvaWQgY2FsbGluZyBDdXJyZW50VGhyZWFkKCkgaW4gdGhyZWFkLXNw
ZWNpZmljIGRlc3RydWN0b3JzIGluIE9TWCBDaHJvbWl1bS4KKyAgICAgICAgUHRocmVhZHMgaW52
b2tlIHRocmVhZC1zcGVjaWZpYyBkZXN0cnVjdG9ycyBhZnRlciBXVEY6OmRldGFjaFRocmVhZCgp
IGlzIGNhbGxlZCBhbmQgVGhyZWFkSWRlbnRpZmllcgorICAgICAgICBmb3IgdGhlIHRocmVhZCBy
ZW1vdmVkIGZyb20gdGhlIFdURiB0aHJlYWQgbWFwLiBDYWxsaW5nIEN1cnJlbnRUaHJlYWQoKSBp
biBzdWNoIGRlc3RydWN0b3IgY2F1c2VzCisgICAgICAgIHRoZSBUaHJlYWRJZGVudGlmaWVyIHRv
IGJlIHJlLWNyZWF0ZWQgYW5kIGluc2VydGVkIGludG8gdGhlIG1hcCBhZ2Fpbi4gU2luY2UgUHRo
cmVhZHMgb24gT1NYIHJldXNlCisgICAgICAgIHRoZSBwdGhyZWFkX3QgYmV0d2VlbiB0aHJlYWRz
LCB0aGUgbmV4dCBjcmVhdGVkIHRocmVhZCB3aWxsIGhhdmUgdGhlIHNhbWUgcHRocmVhZF90IGFu
ZCBjYXVzZSBhbiBhc3NlcnQKKyAgICAgICAgaW4gZXN0YWJsaXNoSWRlbnRpZmllckZvclB0aHJl
YWRIYW5kbGUoKSBzaW5jZSB0aGUgaWQgaXMgYWxyZWFkeSBpbiB0aGUgbWFwLgorCisgICAgICAg
IFRoZSBiZWhhdmlvciBpcyBjb3ZlcmVkIGJ5IGV4aXN0aW5nIHRlc3QgTGF5b3V0VGVzdHMvZmFz
dC93b3JrZXJzL3dvcmtlci10ZXJtaW5hdGUuaHRtbCwgd2hpY2ggY3VycmVudGx5IGZhaWxzCisg
ICAgICAgIG9uIE9TWCBDaHJvbWl1bSBhbmQgd2lsbCBzdG9wIGZhaWxpbmcgYWZ0ZXIgdGhpcyBj
aGFuZ2UuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9UaHJlYWRHbG9iYWxEYXRhLmg6CisgICAgICAg
ICogcGxhdGZvcm0vVGhyZWFkR2xvYmFsRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUaHJl
YWRHbG9iYWxEYXRhOjp+VGhyZWFkR2xvYmFsRGF0YSk6CisgICAgICAgIFN0b3JlIHRoZSByZXN1
bHQgb2YgImlzTWFpblRocmVhZCgpIiBpbiBhIG1lbWJlciB2YXJpYWJsZSBkdXJpbmcgY29uc3Ry
dWN0aW9uIG9mIHRocmVhZC1zcGVjaWZpYyBkYXRhCisgICAgICAgIHRvIGF2b2lkIGNhbGxpbmcg
SXNNYWluVGhyZWFkKCkgaW4gZGVzdHJ1Y3Rvciwgc2luY2UgdGhlIGxhdHRlciBjYWxscyBDdXJy
ZW50VGhyZWFkKCkgaW4gT1NYIENocm9taXVtLgorCiAyMDA5LTA1LTI5ICBEYXJpbiBBZGxlciAg
PGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAgICBGaXggYnVpbGQ7IHRoZSBuZXcgQ2Fpcm8gY29k
ZSBjb21waWxlZCBvbiBXaW5kb3dzIG9ubHkuCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3Jt
L1RocmVhZEdsb2JhbERhdGEuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9UaHJlYWRHbG9iYWxEYXRh
LmNwcAppbmRleCBhM2FhMTU4Li4xMzUxZGRhIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3Jt
L1RocmVhZEdsb2JhbERhdGEuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vVGhyZWFkR2xvYmFs
RGF0YS5jcHAKQEAgLTcyLDYgKzcyLDkgQEAgVGhyZWFkR2xvYmFsRGF0YTo6VGhyZWFkR2xvYmFs
RGF0YSgpCiAgICAgLCBtX2F0b21pY1N0cmluZ1RhYmxlKG5ldyBIYXNoU2V0PFN0cmluZ0ltcGwq
PikKICAgICAsIG1fZXZlbnROYW1lcyhuZXcgRXZlbnROYW1lcykKICAgICAsIG1fdGhyZWFkVGlt
ZXJzKG5ldyBUaHJlYWRUaW1lcnMpCisjaWZuZGVmIE5ERUJVRworICAgICwgbV9pc01haW5UaHJl
YWQoaXNNYWluVGhyZWFkKCkpCisjZW5kaWYKICNpZiBVU0UoSUNVX1VOSUNPREUpIHx8IFVTRShH
TElCX0lDVV9VTklDT0RFX0hZQlJJRCkKICAgICAsIG1fY2FjaGVkQ29udmVydGVySUNVKG5ldyBJ
Q1VDb252ZXJ0ZXJXcmFwcGVyKQogI2VuZGlmCkBAIC05NCw3ICs5Nyw4IEBAIFRocmVhZEdsb2Jh
bERhdGE6On5UaHJlYWRHbG9iYWxEYXRhKCkKICAgICBkZWxldGUgbV9hdG9taWNTdHJpbmdUYWJs
ZTsKICAgICBkZWxldGUgbV90aHJlYWRUaW1lcnM7CiAKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFk
KCkgfHwgbV9lbXB0eVN0cmluZy0+aGFzT25lUmVmKCkpOyAvLyBXZSBpbnRlbnRpb25hbGx5IGRv
bid0IGNsZWFuIHVwIHN0YXRpYyBkYXRhIG9uIGFwcGxpY2F0aW9uIHF1aXQsIHNvIHRoZXJlIHdp
bGwgYmUgbWFueSBzdHJpbmdzIHJlbWFpbmluZyBvbiB0aGUgbWFpbiB0aHJlYWQuCisgICAgQVNT
RVJUKG1faXNNYWluVGhyZWFkIHx8IG1fZW1wdHlTdHJpbmctPmhhc09uZVJlZigpKTsgLy8gV2Ug
aW50ZW50aW9uYWxseSBkb24ndCBjbGVhbiB1cCBzdGF0aWMgZGF0YSBvbiBhcHBsaWNhdGlvbiBx
dWl0LCBzbyB0aGVyZSB3aWxsIGJlIG1hbnkgc3RyaW5ncyByZW1haW5pbmcgb24gdGhlIG1haW4g
dGhyZWFkLgorCiAgICAgZGVsZXRlIG1fZW1wdHlTdHJpbmc7CiB9CiAKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvcGxhdGZvcm0vVGhyZWFkR2xvYmFsRGF0YS5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9UaHJl
YWRHbG9iYWxEYXRhLmgKaW5kZXggNzVjMWI0Yi4uZTBhYTA5MiAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9wbGF0Zm9ybS9UaHJlYWRHbG9iYWxEYXRhLmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9UaHJl
YWRHbG9iYWxEYXRhLmgKQEAgLTYyLDYgKzYyLDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICAgICAgRXZlbnROYW1lcyogbV9ldmVudE5hbWVzOwogICAgICAgICBUaHJlYWRUaW1lcnMqIG1f
dGhyZWFkVGltZXJzOwogCisjaWZuZGVmIE5ERUJVRworICAgICAgICBib29sIG1faXNNYWluVGhy
ZWFkOworI2VuZGlmCisKICNpZiBVU0UoSUNVX1VOSUNPREUpIHx8IFVTRShHTElCX0lDVV9VTklD
T0RFX0hZQlJJRCkKICAgICAgICAgSUNVQ29udmVydGVyV3JhcHBlciogbV9jYWNoZWRDb252ZXJ0
ZXJJQ1U7CiAjZW5kaWYK
</data>
<flag name="review"
          id="15625"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>