<?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>40103</bug_id>
          
          <creation_ts>2010-06-02 21:49:35 -0700</creation_ts>
          <short_desc>ThreadingPthread create thread with default stack size which might not be enough</short_desc>
          <delta_ts>2012-07-20 15:04:21 -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>Web Template Framework</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>WONTFIX</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="Lyon Chen">lyon.chen</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>ap</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yong.li.webkit</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>233603</commentid>
    <comment_count>0</comment_count>
    <who name="Lyon Chen">lyon.chen</who>
    <bug_when>2010-06-02 21:49:35 -0700</bug_when>
    <thetext>In createThreadInternal() of ThreadingPthread.cpp, pthread_create() is called without pthread_attr_t, which means it uses default stack size for thread created. This might not be enough. So we need to check whether the default stack size is smaller than a predefined minimal stack size, and use the predefined minimal stack size instead when necessary.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>233605</commentid>
    <comment_count>1</comment_count>
      <attachid>57734</attachid>
    <who name="Lyon Chen">lyon.chen</who>
    <bug_when>2010-06-02 21:58:03 -0700</bug_when>
    <thetext>Created attachment 57734
patch for 40103.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>233607</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-06-02 22:02:29 -0700</bug_when>
    <thetext>Attachment 57734 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;, &apos;--no-squash&apos;]&quot; exit_code: 1
JavaScriptCore/ChangeLog:8:  Line contains tab character.  [whitespace/tab] [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>233609</commentid>
    <comment_count>3</comment_count>
      <attachid>57735</attachid>
    <who name="Lyon Chen">liachen</who>
    <bug_when>2010-06-02 22:18:01 -0700</bug_when>
    <thetext>Created attachment 57735
patch for 40103 with coding style fix.

This fixes all unrelated coding style issues in ThreadingPthread.cpp file.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>233842</commentid>
    <comment_count>4</comment_count>
      <attachid>57735</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-06-03 11:18:41 -0700</bug_when>
    <thetext>Comment on attachment 57735
patch for 40103 with coding style fix.

&gt; This might not be enough.

What exactly the bug is? Secondary thread stack size is also smaller on Mac OS X, and some may say it&apos;s &quot;not enough&quot;.

From all I can see, this patch just adds mysterious code that&apos;s not enabled on any platform. Some questions the code and/or ChangeLog should help to answer are:
- is this code still needed, or can it be removed?
- do I want this on my platform?
- if yes, how do I choose minimal stack size?

&gt; +        Use macro ENABLE_THREAD_STACK_SIZE_CHECK to get this code change compiled so it will not affect most platforms. And macro MINIMAL_THREAD_STACK_SIZE is used to define the minimal thread stack size. This code change will only use MINIMAL_THREAD_STACK_SIZE if the default stack size is smaller than MINIMAL_THREAD_STACK_SIZE.

This line is too long to fit in a reasonably sized window. Please stick to how other ChangeLog entries are formatted.

+    if (stackSize &lt; MINIMAL_THREAD_STACK_SIZE) {

It&apos;s best to include the measurement unit in constant name to avoid confusion. Maybe MINIMAL_THREAD_STACK_BYTES?

-    if (result == 0)
+    if (!result)
         return true;

I don&apos;t really think that changes like this are an improvement. And in any case, it&apos;s best to not make lots of unrelated coding style changes in patches for real bugs.

+    ASSERT(!pthread_attr_init(&amp;attr));

This is wrong - this code won&apos;t be compiled in release builds. Same mistake is repeated elsewhere.

+    if (!threadHandle)
+        return 0;
+
+    return establishIdentifierForPthreadHandle(threadHandle);

No need to duplicate the common part of the function.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>233851</commentid>
    <comment_count>5</comment_count>
    <who name="Lyon Chen">lyon.chen</who>
    <bug_when>2010-06-03 11:31:01 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; What exactly the bug is? Secondary thread stack size is also smaller on Mac OS X, and some may say it&apos;s &quot;not enough&quot;.
&gt; 
&gt; From all I can see, this patch just adds mysterious code that&apos;s not enabled on any platform. Some questions the code and/or ChangeLog should help to answer are:
&gt; - is this code still needed, or can it be removed?
&gt; - do I want this on my platform?
&gt; - if yes, how do I choose minimal stack size?

This patch is needed for any platform that use pthread and its pthread_create() uses too small stack size that it will cause stack overflow. For me 64 * 1024 is fine so far.

&gt; This line is too long to fit in a reasonably sized window. Please stick to how other ChangeLog entries are formatted.
&gt; 

OK, will reformat the change log message.

&gt; +    if (stackSize &lt; MINIMAL_THREAD_STACK_SIZE) {
&gt; 
&gt; It&apos;s best to include the measurement unit in constant name to avoid confusion. Maybe MINIMAL_THREAD_STACK_BYTES?

Yeah, this is clearer.

&gt; 
&gt; -    if (result == 0)
&gt; +    if (!result)
&gt;          return true;
&gt; 
&gt; I don&apos;t really think that changes like this are an improvement. And in any case, it&apos;s best to not make lots of unrelated coding style changes in patches for real bugs.

This is not what I planned to do, but without this change the coding style checked failed my patch, as what it did to my first patch.

&gt; 
&gt; +    ASSERT(!pthread_attr_init(&amp;attr));
&gt; 
&gt; This is wrong - this code won&apos;t be compiled in release builds. Same mistake is repeated elsewhere.

Yeah, you are right, forgot that ASSERT won&apos;t work on release build.

&gt; No need to duplicate the common part of the function.

OK, I can change this too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>233891</commentid>
    <comment_count>6</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-06-03 13:09:34 -0700</bug_when>
    <thetext>&gt; This patch is needed for any platform that use pthread and its pthread_create()
&gt; uses too small stack size that it will cause stack overflow. For me 64 * 1024 is fine so far.

I don&apos;t think that this answers all of the questions I posted. I don&apos;t ask for complete explanations of things like &quot;how do I choose stack size&quot;, but some information for developers who later look at this code would help a lot (with the current patch, someone refactoring this code would likely just delete this part as dead code).

JavaScriptCore limits call depth (for calls that use native stack), and that limit is adjustable. Are you talking about stack overflow in JS code, or in some other code? Can this be resolved by adjusting JS call depth for your platform instead?

&gt; This is not what I planned to do, but without this change the coding style checked
&gt; failed my patch, as what it did to my first patch.

You should feel free to ignore style bot complaints if it&apos;s complaining about code you didn&apos;t change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>233901</commentid>
    <comment_count>7</comment_count>
    <who name="Lyon Chen">lyon.chen</who>
    <bug_when>2010-06-03 13:39:05 -0700</bug_when>
    <thetext>(In reply to comment #6)
New patch is still building, so I didn&apos;t upload it. But if the default stack size is too small (say 1024 bytes), do you think it&apos;s enough for all threads, like database thread, worker thread? Even after we adjust the JavaScriptCore call depth?

OK, glad to know I can ignore unrelated coding style errors. But I was asked to fix non-related coding style error before, in bug 35530.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>234027</commentid>
    <comment_count>8</comment_count>
      <attachid>57841</attachid>
    <who name="Lyon Chen">liachen</who>
    <bug_when>2010-06-03 18:48:36 -0700</bug_when>
    <thetext>Created attachment 57841
patch for 40103.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>250752</commentid>
    <comment_count>9</comment_count>
    <who name="Lyon Chen">lyon.chen</who>
    <bug_when>2010-07-13 14:40:54 -0700</bug_when>
    <thetext>(In reply to comment #6)

Just verified without the code change it will crash, even after I change MaxSmallThreadReentryDepth from 32 to 16.

And I think this code change could help other platforms, especially the mobile platforms which tend to give out smaller stack size.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>292329</commentid>
    <comment_count>10</comment_count>
      <attachid>57841</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-10-10 11:17:46 -0700</bug_when>
    <thetext>Comment on attachment 57841
patch for 40103.

This patch is blocked on answering ap&apos;s questions above.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>674920</commentid>
    <comment_count>11</comment_count>
    <who name="Yong Li">yong.li.webkit</who>
    <bug_when>2012-07-20 13:41:23 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; &gt; This patch is needed for any platform that use pthread and its pthread_create()
&gt; &gt; uses too small stack size that it will cause stack overflow. For me 64 * 1024 is fine so far.
&gt; 
&gt; I don&apos;t think that this answers all of the questions I posted. I don&apos;t ask for complete explanations of things like &quot;how do I choose stack size&quot;, but some information for developers who later look at this code would help a lot (with the current patch, someone refactoring this code would likely just delete this part as dead code).
&gt; 
&gt; JavaScriptCore limits call depth (for calls that use native stack), and that limit is adjustable. Are you talking about stack overflow in JS code, or in some other code? Can this be resolved by adjusting JS call depth for your platform instead?
&gt; 
&gt; &gt; This is not what I planned to do, but without this change the coding style checked
&gt; &gt; failed my patch, as what it did to my first patch.
&gt; 
&gt; You should feel free to ignore style bot complaints if it&apos;s complaining about code you didn&apos;t change.

This is not for JSC stack, but for threads WebKit creates for other purposes like database, html5 worker, blabla.

This was an issue on one of our platforms where the default stack size isn&apos;t big enough.

However Rob is trying to working on this with a new bug https://bugs.webkit.org/show_bug.cgi?id=91899</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>674987</commentid>
    <comment_count>12</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-07-20 14:44:52 -0700</bug_when>
    <thetext>&gt; This is not for JSC stack, but for threads WebKit creates for other purposes like database, html5 worker, blabla.

I don&apos;t understand how this answers the question. Web Workers run JavaScript, too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>675006</commentid>
    <comment_count>13</comment_count>
    <who name="Yong Li">yong.li.webkit</who>
    <bug_when>2012-07-20 15:04:21 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; &gt; This is not for JSC stack, but for threads WebKit creates for other purposes like database, html5 worker, blabla.
&gt; 
&gt; I don&apos;t understand how this answers the question. Web Workers run JavaScript, too.

There was no actual code path to blame, because the default stack size was insanely small at that moment, IIRC. But it would be nice if WebKit can create a thread with specified stack size (or stack size types), so we can use small stacks for some threads like BlockFreeingThread, and large stacks for web workers.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>57734</attachid>
            <date>2010-06-02 21:58:03 -0700</date>
            <delta_ts>2010-06-02 22:27:08 -0700</delta_ts>
            <desc>patch for 40103.</desc>
            <filename>40103.patch</filename>
            <type>text/plain</type>
            <size>2552</size>
            <attacher name="Lyon Chen">lyon.chen</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL0phdmFTY3JpcHRDb3JlL0No
YW5nZUxvZwppbmRleCA1MjM4MWJlLi5iNjM2YjE4IDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKKysrIGIvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUg
QEAKKzIwMTAtMDYtMDMgIEx5b24gQ2hlbiAgPGxpYWNoZW5AcmltLmNvbT4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaHJlYWRpbmdQdGhyZWFkIGNy
ZWF0ZSB0aHJlYWQgd2l0aCBkZWZhdWx0IHN0YWNrIHNpemUgd2hpY2ggbWlnaHQgbm90IGJlIGVu
b3VnaAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDAx
MDMKKworCQlVc2UgbWFjcm8gRU5BQkxFX1RIUkVBRF9TVEFDS19TSVpFX0NIRUNLIHRvIGdldCB0
aGlzIGNvZGUgY2hhbmdlIGNvbXBpbGVkIHNvIGl0IHdpbGwgbm90IGFmZmVjdCBtb3N0IHBsYXRm
b3Jtcy4gQW5kIG1hY3JvIE1JTklNQUxfVEhSRUFEX1NUQUNLX1NJWkUgaXMgdXNlZCB0byBkZWZp
bmUgdGhlIG1pbmltYWwgdGhyZWFkIHN0YWNrIHNpemUuIFRoaXMgY29kZSBjaGFuZ2Ugd2lsbCBv
bmx5IHVzZSBNSU5JTUFMX1RIUkVBRF9TVEFDS19TSVpFIGlmIHRoZSBkZWZhdWx0IHN0YWNrIHNp
emUgaXMgc21hbGxlciB0aGFuIE1JTklNQUxfVEhSRUFEX1NUQUNLX1NJWkUuCisKKyAgICAgICAg
KiB3dGYvVGhyZWFkaW5nUHRocmVhZHMuY3BwOgorICAgICAgICAoV1RGOjpjcmVhdGVUaHJlYWRJ
bnRlcm5hbCk6CisKIDIwMTAtMDYtMDIgIEdhYm9yIExva2kgIDxsb2tpQHdlYmtpdC5vcmc+CiAK
ICAgICAgICAgUmV2aWV3ZWQgYnkgR2F2aW4gQmFycmFjbG91Z2guCmRpZmYgLS1naXQgYS9KYXZh
U2NyaXB0Q29yZS93dGYvVGhyZWFkaW5nUHRocmVhZHMuY3BwIGIvSmF2YVNjcmlwdENvcmUvd3Rm
L1RocmVhZGluZ1B0aHJlYWRzLmNwcAppbmRleCAwNzBlMWM2Li44MTY3ODdjIDEwMDY0NAotLS0g
YS9KYXZhU2NyaXB0Q29yZS93dGYvVGhyZWFkaW5nUHRocmVhZHMuY3BwCisrKyBiL0phdmFTY3Jp
cHRDb3JlL3d0Zi9UaHJlYWRpbmdQdGhyZWFkcy5jcHAKQEAgLTE3Miw2ICsxNzIsMzUgQEAgVGhy
ZWFkSWRlbnRpZmllciBjcmVhdGVUaHJlYWRJbnRlcm5hbChUaHJlYWRGdW5jdGlvbiBlbnRyeVBv
aW50LCB2b2lkKiBkYXRhLCBjb24KICNlbHNlCiBUaHJlYWRJZGVudGlmaWVyIGNyZWF0ZVRocmVh
ZEludGVybmFsKFRocmVhZEZ1bmN0aW9uIGVudHJ5UG9pbnQsIHZvaWQqIGRhdGEsIGNvbnN0IGNo
YXIqKQogeworI2lmIEVOQUJMRShUSFJFQURfU1RBQ0tfU0laRV9DSEVDSykgJiYgZGVmaW5lZChN
SU5JTUFMX1RIUkVBRF9TVEFDS19TSVpFKQorCisgICAgcHRocmVhZF9hdHRyX3QgYXR0cjsKKyAg
ICBBU1NFUlQoIXB0aHJlYWRfYXR0cl9pbml0KCZhdHRyKSk7CisKKyAgICB2b2lkKiBzdGFja0Fk
ZHI7CisgICAgc2l6ZV90IHN0YWNrU2l6ZTsKKyAgICBBU1NFUlQoIXB0aHJlYWRfYXR0cl9nZXRz
dGFjaygmYXR0ciwgJnN0YWNrQWRkciwgJnN0YWNrU2l6ZSkpOworCisgICAgaWYgKHN0YWNrU2l6
ZSA8IE1JTklNQUxfVEhSRUFEX1NUQUNLX1NJWkUpIHsKKyAgICAgICAgc3RhY2tTaXplID0gTUlO
SU1BTF9USFJFQURfU1RBQ0tfU0laRTsKKyAgICAgICAgQVNTRVJUKCFwdGhyZWFkX2F0dHJfc2V0
c3RhY2soJmF0dHIsIHN0YWNrQWRkciwgc3RhY2tTaXplKSk7CisgICAgfQorCisgICAgcHRocmVh
ZF90IHRocmVhZEhhbmRsZTsKKyAgICBpZiAocHRocmVhZF9jcmVhdGUoJnRocmVhZEhhbmRsZSwg
JmF0dHIsIGVudHJ5UG9pbnQsIGRhdGEpKSB7CisgICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRv
IGNyZWF0ZSBwdGhyZWFkIGF0IGVudHJ5IHBvaW50ICVwIHdpdGggZGF0YSAlcCIsIGVudHJ5UG9p
bnQsIGRhdGEpOworICAgICAgICB0aHJlYWRIYW5kbGUgPSAwOworICAgIH0KKworICAgIHB0aHJl
YWRfYXR0cl9kZXN0cm95KCZhdHRyKTsKKworICAgIGlmICghdGhyZWFkSGFuZGxlKQorICAgICAg
ICByZXR1cm4gMDsKKworICAgIHJldHVybiBlc3RhYmxpc2hJZGVudGlmaWVyRm9yUHRocmVhZEhh
bmRsZSh0aHJlYWRIYW5kbGUpOworCisjZWxzZQorCiAgICAgcHRocmVhZF90IHRocmVhZEhhbmRs
ZTsKICAgICBpZiAocHRocmVhZF9jcmVhdGUoJnRocmVhZEhhbmRsZSwgMCwgZW50cnlQb2ludCwg
ZGF0YSkpIHsKICAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gY3JlYXRlIHB0aHJlYWQgYXQg
ZW50cnkgcG9pbnQgJXAgd2l0aCBkYXRhICVwIiwgZW50cnlQb2ludCwgZGF0YSk7CkBAIC0xNzks
NiArMjA4LDggQEAgVGhyZWFkSWRlbnRpZmllciBjcmVhdGVUaHJlYWRJbnRlcm5hbChUaHJlYWRG
dW5jdGlvbiBlbnRyeVBvaW50LCB2b2lkKiBkYXRhLCBjb24KICAgICB9CiAKICAgICByZXR1cm4g
ZXN0YWJsaXNoSWRlbnRpZmllckZvclB0aHJlYWRIYW5kbGUodGhyZWFkSGFuZGxlKTsKKworI2Vu
ZGlmIC8vIFRIUkVBRF9TVEFDS19TSVpFX0NIRUNLCiB9CiAjZW5kaWYKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>57735</attachid>
            <date>2010-06-02 22:18:01 -0700</date>
            <delta_ts>2010-06-03 18:48:36 -0700</delta_ts>
            <desc>patch for 40103 with coding style fix.</desc>
            <filename>40103.patch</filename>
            <type>text/plain</type>
            <size>4522</size>
            <attacher name="Lyon Chen">liachen</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL0phdmFTY3JpcHRDb3JlL0No
YW5nZUxvZwppbmRleCAwOGQ1NTM1Li4xZjA2YWNhIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKKysrIGIvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEg
QEAKKzIwMTAtMDYtMDIgIEx5b24gQ2hlbiAgPGxpYWNoZW5AcmltLmNvbT4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaHJlYWRpbmdQdGhyZWFkIGNy
ZWF0ZSB0aHJlYWQgd2l0aCBkZWZhdWx0IHN0YWNrIHNpemUgd2hpY2ggbWlnaHQgbm90IGJlIGVu
b3VnaAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDAx
MDMKKworICAgICAgICBVc2UgbWFjcm8gRU5BQkxFX1RIUkVBRF9TVEFDS19TSVpFX0NIRUNLIHRv
IGdldCB0aGlzIGNvZGUgY2hhbmdlIGNvbXBpbGVkIHNvIGl0IHdpbGwgbm90IGFmZmVjdCBtb3N0
IHBsYXRmb3Jtcy4gQW5kIG1hY3JvIE1JTklNQUxfVEhSRUFEX1NUQUNLX1NJWkUgaXMgdXNlZCB0
byBkZWZpbmUgdGhlIG1pbmltYWwgdGhyZWFkIHN0YWNrIHNpemUuIFRoaXMgY29kZSBjaGFuZ2Ug
d2lsbCBvbmx5IHVzZSBNSU5JTUFMX1RIUkVBRF9TVEFDS19TSVpFIGlmIHRoZSBkZWZhdWx0IHN0
YWNrIHNpemUgaXMgc21hbGxlciB0aGFuIE1JTklNQUxfVEhSRUFEX1NUQUNLX1NJWkUuCisKKyAg
ICAgICAgKiB3dGYvVGhyZWFkaW5nUHRocmVhZHMuY3BwOgorICAgICAgICAoV1RGOjpjcmVhdGVU
aHJlYWRJbnRlcm5hbCk6CisgICAgICAgIChXVEY6Ok11dGV4Ojp0cnlMb2NrKToKKyAgICAgICAg
KFdURjo6UmVhZFdyaXRlTG9jazo6UmVhZFdyaXRlTG9jayk6CisgICAgICAgIChXVEY6OlJlYWRX
cml0ZUxvY2s6OnRyeVJlYWRMb2NrKToKKyAgICAgICAgKFdURjo6UmVhZFdyaXRlTG9jazo6dHJ5
V3JpdGVMb2NrKToKKyAgICAgICAgKFdURjo6VGhyZWFkQ29uZGl0aW9uOjpUaHJlYWRDb25kaXRp
b24pOgorICAgICAgICAoV1RGOjpUaHJlYWRDb25kaXRpb246OnRpbWVkV2FpdCk6CisKIDIwMTAt
MDYtMDIgIE1hcmsgUm93ZSAgPG1yb3dlQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBi
eSBHYXZpbiBCYXJyYWNsb3VnaC4KZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL3d0Zi9UaHJl
YWRpbmdQdGhyZWFkcy5jcHAgYi9KYXZhU2NyaXB0Q29yZS93dGYvVGhyZWFkaW5nUHRocmVhZHMu
Y3BwCmluZGV4IDA3MGUxYzYuLjM5MDlkMGEgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3d0
Zi9UaHJlYWRpbmdQdGhyZWFkcy5jcHAKKysrIGIvSmF2YVNjcmlwdENvcmUvd3RmL1RocmVhZGlu
Z1B0aHJlYWRzLmNwcApAQCAtMTcyLDYgKzE3MiwzNSBAQCBUaHJlYWRJZGVudGlmaWVyIGNyZWF0
ZVRocmVhZEludGVybmFsKFRocmVhZEZ1bmN0aW9uIGVudHJ5UG9pbnQsIHZvaWQqIGRhdGEsIGNv
bgogI2Vsc2UKIFRocmVhZElkZW50aWZpZXIgY3JlYXRlVGhyZWFkSW50ZXJuYWwoVGhyZWFkRnVu
Y3Rpb24gZW50cnlQb2ludCwgdm9pZCogZGF0YSwgY29uc3QgY2hhciopCiB7CisjaWYgRU5BQkxF
KFRIUkVBRF9TVEFDS19TSVpFX0NIRUNLKSAmJiBkZWZpbmVkKE1JTklNQUxfVEhSRUFEX1NUQUNL
X1NJWkUpCisKKyAgICBwdGhyZWFkX2F0dHJfdCBhdHRyOworICAgIEFTU0VSVCghcHRocmVhZF9h
dHRyX2luaXQoJmF0dHIpKTsKKworICAgIHZvaWQqIHN0YWNrQWRkcjsKKyAgICBzaXplX3Qgc3Rh
Y2tTaXplOworICAgIEFTU0VSVCghcHRocmVhZF9hdHRyX2dldHN0YWNrKCZhdHRyLCAmc3RhY2tB
ZGRyLCAmc3RhY2tTaXplKSk7CisKKyAgICBpZiAoc3RhY2tTaXplIDwgTUlOSU1BTF9USFJFQURf
U1RBQ0tfU0laRSkgeworICAgICAgICBzdGFja1NpemUgPSBNSU5JTUFMX1RIUkVBRF9TVEFDS19T
SVpFOworICAgICAgICBBU1NFUlQoIXB0aHJlYWRfYXR0cl9zZXRzdGFjaygmYXR0ciwgc3RhY2tB
ZGRyLCBzdGFja1NpemUpKTsKKyAgICB9CisKKyAgICBwdGhyZWFkX3QgdGhyZWFkSGFuZGxlOwor
ICAgIGlmIChwdGhyZWFkX2NyZWF0ZSgmdGhyZWFkSGFuZGxlLCAmYXR0ciwgZW50cnlQb2ludCwg
ZGF0YSkpIHsKKyAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gY3JlYXRlIHB0aHJlYWQgYXQg
ZW50cnkgcG9pbnQgJXAgd2l0aCBkYXRhICVwIiwgZW50cnlQb2ludCwgZGF0YSk7CisgICAgICAg
IHRocmVhZEhhbmRsZSA9IDA7CisgICAgfQorCisgICAgcHRocmVhZF9hdHRyX2Rlc3Ryb3koJmF0
dHIpOworCisgICAgaWYgKCF0aHJlYWRIYW5kbGUpCisgICAgICAgIHJldHVybiAwOworCisgICAg
cmV0dXJuIGVzdGFibGlzaElkZW50aWZpZXJGb3JQdGhyZWFkSGFuZGxlKHRocmVhZEhhbmRsZSk7
CisKKyNlbHNlCisKICAgICBwdGhyZWFkX3QgdGhyZWFkSGFuZGxlOwogICAgIGlmIChwdGhyZWFk
X2NyZWF0ZSgmdGhyZWFkSGFuZGxlLCAwLCBlbnRyeVBvaW50LCBkYXRhKSkgewogICAgICAgICBM
T0dfRVJST1IoIkZhaWxlZCB0byBjcmVhdGUgcHRocmVhZCBhdCBlbnRyeSBwb2ludCAlcCB3aXRo
IGRhdGEgJXAiLCBlbnRyeVBvaW50LCBkYXRhKTsKQEAgLTE3OSw2ICsyMDgsOCBAQCBUaHJlYWRJ
ZGVudGlmaWVyIGNyZWF0ZVRocmVhZEludGVybmFsKFRocmVhZEZ1bmN0aW9uIGVudHJ5UG9pbnQs
IHZvaWQqIGRhdGEsIGNvbgogICAgIH0KIAogICAgIHJldHVybiBlc3RhYmxpc2hJZGVudGlmaWVy
Rm9yUHRocmVhZEhhbmRsZSh0aHJlYWRIYW5kbGUpOworCisjZW5kaWYgLy8gVEhSRUFEX1NUQUNL
X1NJWkVfQ0hFQ0sKIH0KICNlbmRpZgogCkBAIC0yNjcsNyArMjk4LDcgQEAgYm9vbCBNdXRleDo6
dHJ5TG9jaygpCiB7CiAgICAgaW50IHJlc3VsdCA9IHB0aHJlYWRfbXV0ZXhfdHJ5bG9jaygmbV9t
dXRleCk7CiAKLSAgICBpZiAocmVzdWx0ID09IDApCisgICAgaWYgKCFyZXN1bHQpCiAgICAgICAg
IHJldHVybiB0cnVlOwogICAgIGlmIChyZXN1bHQgPT0gRUJVU1kpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKQEAgLTI4NSw3ICszMTYsNyBAQCB2b2lkIE11dGV4Ojp1bmxvY2soKQogI2lmIEhBVkUo
UFRIUkVBRF9SV0xPQ0spCiBSZWFkV3JpdGVMb2NrOjpSZWFkV3JpdGVMb2NrKCkKIHsKLSAgICBw
dGhyZWFkX3J3bG9ja19pbml0KCZtX3JlYWRXcml0ZUxvY2ssIE5VTEwpOworICAgIHB0aHJlYWRf
cndsb2NrX2luaXQoJm1fcmVhZFdyaXRlTG9jaywgMCk7CiB9CiAKIFJlYWRXcml0ZUxvY2s6On5S
ZWFkV3JpdGVMb2NrKCkKQEAgLTMwMyw3ICszMzQsNyBAQCBib29sIFJlYWRXcml0ZUxvY2s6OnRy
eVJlYWRMb2NrKCkKIHsKICAgICBpbnQgcmVzdWx0ID0gcHRocmVhZF9yd2xvY2tfdHJ5cmRsb2Nr
KCZtX3JlYWRXcml0ZUxvY2spOwogCi0gICAgaWYgKHJlc3VsdCA9PSAwKQorICAgIGlmICghcmVz
dWx0KQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBpZiAocmVzdWx0ID09IEVCVVNZIHx8IHJl
c3VsdCA9PSBFQUdBSU4pCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTMyMiw3ICszNTMsNyBA
QCBib29sIFJlYWRXcml0ZUxvY2s6OnRyeVdyaXRlTG9jaygpCiB7CiAgICAgaW50IHJlc3VsdCA9
IHB0aHJlYWRfcndsb2NrX3RyeXdybG9jaygmbV9yZWFkV3JpdGVMb2NrKTsKIAotICAgIGlmIChy
ZXN1bHQgPT0gMCkKKyAgICBpZiAoIXJlc3VsdCkKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
aWYgKHJlc3VsdCA9PSBFQlVTWSB8fCByZXN1bHQgPT0gRUFHQUlOKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CkBAIC0zMzYsMTEgKzM2NywxMSBAQCB2b2lkIFJlYWRXcml0ZUxvY2s6OnVubG9jaygp
CiAgICAgaW50IHJlc3VsdCA9IHB0aHJlYWRfcndsb2NrX3VubG9jaygmbV9yZWFkV3JpdGVMb2Nr
KTsKICAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgIXJlc3VsdCk7CiB9Ci0jZW5kaWYgIC8vIEhB
VkUoUFRIUkVBRF9SV0xPQ0spCisjZW5kaWYgLy8gSEFWRShQVEhSRUFEX1JXTE9DSykKIAogVGhy
ZWFkQ29uZGl0aW9uOjpUaHJlYWRDb25kaXRpb24oKQogeyAKLSAgICBwdGhyZWFkX2NvbmRfaW5p
dCgmbV9jb25kaXRpb24sIE5VTEwpOworICAgIHB0aHJlYWRfY29uZF9pbml0KCZtX2NvbmRpdGlv
biwgMCk7CiB9CiAKIFRocmVhZENvbmRpdGlvbjo6flRocmVhZENvbmRpdGlvbigpCkBAIC0zNzEs
NyArNDAyLDcgQEAgYm9vbCBUaHJlYWRDb25kaXRpb246OnRpbWVkV2FpdChNdXRleCYgbXV0ZXgs
IGRvdWJsZSBhYnNvbHV0ZVRpbWUpCiAgICAgdGFyZ2V0VGltZS50dl9zZWMgPSB0aW1lU2Vjb25k
czsKICAgICB0YXJnZXRUaW1lLnR2X25zZWMgPSB0aW1lTmFub3NlY29uZHM7CiAKLSAgICByZXR1
cm4gcHRocmVhZF9jb25kX3RpbWVkd2FpdCgmbV9jb25kaXRpb24sICZtdXRleC5pbXBsKCksICZ0
YXJnZXRUaW1lKSA9PSAwOworICAgIHJldHVybiAhcHRocmVhZF9jb25kX3RpbWVkd2FpdCgmbV9j
b25kaXRpb24sICZtdXRleC5pbXBsKCksICZ0YXJnZXRUaW1lKTsKIH0KIAogdm9pZCBUaHJlYWRD
b25kaXRpb246OnNpZ25hbCgpCg==
</data>
<flag name="review"
          id="42379"
          type_id="1"
          status="-"
          setter="ap"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>57841</attachid>
            <date>2010-06-03 18:48:36 -0700</date>
            <delta_ts>2010-10-10 11:17:46 -0700</delta_ts>
            <desc>patch for 40103.</desc>
            <filename>40103.patch</filename>
            <type>text/plain</type>
            <size>3042</size>
            <attacher name="Lyon Chen">liachen</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL0phdmFTY3JpcHRDb3JlL0No
YW5nZUxvZwppbmRleCBjZDZmMzczLi5hYWU1ODNhIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKKysrIGIvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAg
QEAKKzIwMTAtMDYtMDMgIEx5b24gQ2hlbiAgPGxpYWNoZW5AcmltLmNvbT4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaHJlYWRpbmdQdGhyZWFkIGNy
ZWF0ZSB0aHJlYWQgd2l0aCBkZWZhdWx0IHN0YWNrIHNpemUgd2hpY2ggbWlnaHQgbm90IGJlIGVu
b3VnaAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDAx
MDMKKworICAgICAgICBVbmRlciBzb21lIHBsYXRmb3JtcywgcHRocmVhZF9jcmVhdGUoKSBoYXMg
YSB2ZXJ5IHNtYWxsIGRlZmF1bHQgc3RhY2sgc2l6ZSBmb3Igc2Vjb25kYXJ5IHRocmVhZCwKKyAg
ICAgICAgYW5kIGl0IHdpbGwgY2F1c2Ugc3RhY2sgb3ZlcmZsb3cgb24gV2ViS2l0IHRocmVhZHMs
IGxpa2Ugd29ya2VyIHRocmVhZHMgYW5kL29yIGRhdGFiYXNlIHRocmVhZC4KKyAgICAgICAgVG8g
bWFrZSBzdXJlIHdlIGFsd2F5cyBoYXZlIHRoZSBtaW5pbWFsIHN0YWNrIHNpemUsIG1hY3JvIE1J
TklNQUxfVEhSRUFEX1NUQUNLX0JZVEVTIGlzIGRlZmluZWQKKyAgICAgICAgaW4gd3RmL1BsYXRm
b3JtLmguIEFuZCBiZWZvcmUgY2FsbGluZyBwdGhyZWFkX2NyZWF0ZSgpLCB0aGUgZGVmYXVsdCBz
dGFjayBzaXplIGlzIGNoZWNrZWQgYWdhaW5zdAorICAgICAgICB0aGlzIG1hY3JvLCBhbmQgY2hh
bmdlIHRoZSBzdGFjayBzaXplIGlmIG5lY2Vzc2FyeS4KKworICAgICAgICAqIHd0Zi9QbGF0Zm9y
bS5oOgorICAgICAgICAqIHd0Zi9UaHJlYWRpbmdQdGhyZWFkcy5jcHA6CisgICAgICAgIChXVEY6
OmNyZWF0ZVRocmVhZEludGVybmFsKToKKwogMjAxMC0wNi0wMyAgR2F2aW4gQmFycmFjbG91Z2gg
IDxiYXJyYWNsb3VnaEBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTWFyayBSb3dl
LgpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvd3RmL1BsYXRmb3JtLmggYi9KYXZhU2NyaXB0
Q29yZS93dGYvUGxhdGZvcm0uaAppbmRleCA1NzVhMjYyLi45MTBmMDZmIDEwMDY0NAotLS0gYS9K
YXZhU2NyaXB0Q29yZS93dGYvUGxhdGZvcm0uaAorKysgYi9KYXZhU2NyaXB0Q29yZS93dGYvUGxh
dGZvcm0uaApAQCAtMTA4Nyw0ICsxMDg3LDYgQEAgb24gTWluR1cuIFNlZSBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjkyNjggKi8KIAogI2RlZmluZSBFTkFCTEVfSlND
X1pPTUJJRVMgMAogCisjZGVmaW5lIE1JTklNQUxfVEhSRUFEX1NUQUNLX0JZVEVTICg2NCAqIDEw
MjQpCisKICNlbmRpZiAvKiBXVEZfUGxhdGZvcm1faCAqLwpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlw
dENvcmUvd3RmL1RocmVhZGluZ1B0aHJlYWRzLmNwcCBiL0phdmFTY3JpcHRDb3JlL3d0Zi9UaHJl
YWRpbmdQdGhyZWFkcy5jcHAKaW5kZXggMDcwZTFjNi4uOTViMGMyYSAxMDA2NDQKLS0tIGEvSmF2
YVNjcmlwdENvcmUvd3RmL1RocmVhZGluZ1B0aHJlYWRzLmNwcAorKysgYi9KYXZhU2NyaXB0Q29y
ZS93dGYvVGhyZWFkaW5nUHRocmVhZHMuY3BwCkBAIC0xNzIsMTIgKzE3MiwzMiBAQCBUaHJlYWRJ
ZGVudGlmaWVyIGNyZWF0ZVRocmVhZEludGVybmFsKFRocmVhZEZ1bmN0aW9uIGVudHJ5UG9pbnQs
IHZvaWQqIGRhdGEsIGNvbgogI2Vsc2UKIFRocmVhZElkZW50aWZpZXIgY3JlYXRlVGhyZWFkSW50
ZXJuYWwoVGhyZWFkRnVuY3Rpb24gZW50cnlQb2ludCwgdm9pZCogZGF0YSwgY29uc3QgY2hhciop
CiB7CisgICAgLy8gVW5kZXIgc29tZSBwbGF0Zm9ybXMsIHB0aHJlYWRfY3JlYXRlKCkgaGFzIGEg
dmVyeSBzbWFsbCBkZWZhdWx0IHN0YWNrIHNpemUgZm9yIHNlY29uZGFyeSB0aHJlYWQsCisgICAg
Ly8gYW5kIGl0IHdpbGwgY2F1c2Ugc3RhY2sgb3ZlcmZsb3cgb24gV2ViS2l0IHRocmVhZHMsIGxp
a2Ugd29ya2VyIHRocmVhZHMgYW5kL29yIGRhdGFiYXNlIHRocmVhZC4KKyAgICAvLyBUbyBtYWtl
IHN1cmUgd2UgYWx3YXlzIGhhdmUgdGhlIG1pbmltYWwgc3RhY2sgc2l6ZSwgbWFjcm8gTUlOSU1B
TF9USFJFQURfU1RBQ0tfQllURVMgaXMgZGVmaW5lZAorICAgIC8vIGluIHd0Zi9QbGF0Zm9ybS5o
LiBJdCBtYXkgbmVlZCBhZGp1c3RtZW50IGZvciBkaWZmZXJlbnQgcGxhdGZvcm1zLgorCisgICAg
cHRocmVhZF9hdHRyX3QgYXR0cjsKKyAgICBwdGhyZWFkX2F0dHJfaW5pdCgmYXR0cik7CisKKyAg
ICB2b2lkKiBzdGFja0FkZHI7CisgICAgc2l6ZV90IHN0YWNrU2l6ZTsKKyAgICBwdGhyZWFkX2F0
dHJfZ2V0c3RhY2soJmF0dHIsICZzdGFja0FkZHIsICZzdGFja1NpemUpOworCisgICAgaWYgKHN0
YWNrU2l6ZSA8IE1JTklNQUxfVEhSRUFEX1NUQUNLX0JZVEVTKSB7CisgICAgICAgIHN0YWNrU2l6
ZSA9IE1JTklNQUxfVEhSRUFEX1NUQUNLX0JZVEVTOworICAgICAgICBwdGhyZWFkX2F0dHJfc2V0
c3RhY2soJmF0dHIsIHN0YWNrQWRkciwgc3RhY2tTaXplKTsKKyAgICB9CisKICAgICBwdGhyZWFk
X3QgdGhyZWFkSGFuZGxlOwotICAgIGlmIChwdGhyZWFkX2NyZWF0ZSgmdGhyZWFkSGFuZGxlLCAw
LCBlbnRyeVBvaW50LCBkYXRhKSkgeworICAgIGlmIChwdGhyZWFkX2NyZWF0ZSgmdGhyZWFkSGFu
ZGxlLCAmYXR0ciwgZW50cnlQb2ludCwgZGF0YSkpIHsKICAgICAgICAgTE9HX0VSUk9SKCJGYWls
ZWQgdG8gY3JlYXRlIHB0aHJlYWQgYXQgZW50cnkgcG9pbnQgJXAgd2l0aCBkYXRhICVwIiwgZW50
cnlQb2ludCwgZGF0YSk7CisgICAgICAgIHB0aHJlYWRfYXR0cl9kZXN0cm95KCZhdHRyKTsKICAg
ICAgICAgcmV0dXJuIDA7CiAgICAgfQogCisgICAgcHRocmVhZF9hdHRyX2Rlc3Ryb3koJmF0dHIp
OworCiAgICAgcmV0dXJuIGVzdGFibGlzaElkZW50aWZpZXJGb3JQdGhyZWFkSGFuZGxlKHRocmVh
ZEhhbmRsZSk7CiB9CiAjZW5kaWYK
</data>
<flag name="review"
          id="42512"
          type_id="1"
          status="-"
          setter="abarth"
    />
          </attachment>
      

    </bug>

</bugzilla>