<?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>158687</bug_id>
          
          <creation_ts>2016-06-13 02:54:49 -0700</creation_ts>
          <short_desc>Stack overflow at RefPtr::release on Windows port since r201782</short_desc>
          <delta_ts>2016-06-13 18:54:18 -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>WebKit Nightly Build</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Windows 10</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=157596</see_also>
          <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="Fujii Hironori">fujii</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>achristensen</cc>
    
    <cc>aestes</cc>
    
    <cc>andersca</cc>
    
    <cc>ap</cc>
    
    <cc>beidson</cc>
    
    <cc>benjamin</cc>
    
    <cc>bfulgham</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>krollin</cc>
    
    <cc>pvollan</cc>
    
    <cc>rniwa</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1201807</commentid>
    <comment_count>0</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2016-06-13 02:54:49 -0700</bug_when>
    <thetext>[Win] Stack overflow at RefPtr::release

trunk@201986 AppleWin Debug (CMake) build

When starting MiniBrowser, following dialog will be shown:

&gt; Unhandled exception at 0x100694E0 (WebKit.dll) in MiniBrowser.exe: 0xC00000FD: Stack overflow (parameters: 0x00000001, 0x00092FFC).

Callstack:

&gt; 	WebKit.dll!WTF::RefPtr&lt;WTF::StringImpl&gt;::RefPtr&lt;WTF::StringImpl&gt;(WTF::StringImpl * ptr, WTF::RefPtr&lt;WTF::StringImpl&gt;::AdoptTag __formal) Line 108	C++
&gt;  	WebKit.dll!WTF::adoptRef&lt;WTF::StringImpl&gt;(WTF::StringImpl * p) Line 243	C++
&gt;  	WebKit.dll!WTF::RefPtr&lt;WTF::StringImpl&gt;::release() Line 69	C++
&gt;  	WebKit.dll!WTF::RefPtr&lt;WTF::StringImpl&gt;::RefPtr&lt;WTF::StringImpl&gt;(WTF::RefPtr&lt;WTF::StringImpl&gt; &amp;&amp; o) Line 52	C++
&gt;  	WebKit.dll!WTF::RefPtr&lt;WTF::StringImpl&gt;::release() Line 69	C++
&gt;  	WebKit.dll!WTF::RefPtr&lt;WTF::StringImpl&gt;::RefPtr&lt;WTF::StringImpl&gt;(WTF::RefPtr&lt;WTF::StringImpl&gt; &amp;&amp; o) Line 52	C++
&gt;  	WebKit.dll!WTF::RefPtr&lt;WTF::StringImpl&gt;::release() Line 69	C++
&gt;  	WebKit.dll!WTF::RefPtr&lt;WTF::StringImpl&gt;::RefPtr&lt;WTF::StringImpl&gt;(WTF::RefPtr&lt;WTF::StringImpl&gt; &amp;&amp; o) Line 52	C++
&gt;  	WebKit.dll!WTF::RefPtr&lt;WTF::StringImpl&gt;::release() Line 69	C++
&gt;  	WebKit.dll!WTF::RefPtr&lt;WTF::StringImpl&gt;::RefPtr&lt;WTF::StringImpl&gt;(WTF::RefPtr&lt;WTF::StringImpl&gt; &amp;&amp; o) Line 52	C++
(...)
&gt;  	WebKit.dll!WTF::RefPtr&lt;WTF::StringImpl&gt;::release() Line 69	C++
&gt;  	WebKit.dll!WTF::RefPtr&lt;WTF::StringImpl&gt;::RefPtr&lt;WTF::StringImpl&gt;(WTF::RefPtr&lt;WTF::StringImpl&gt; &amp;&amp; o) Line 52	C++
&gt;  	WebKit.dll!WTF::RefPtr&lt;WTF::StringImpl&gt;::release() Line 69	C++
&gt;  	WebKit.dll!WTF::RefPtr&lt;WTF::StringImpl&gt;::RefPtr&lt;WTF::StringImpl&gt;(WTF::RefPtr&lt;WTF::StringImpl&gt; &amp;&amp; o) Line 52	C++
&gt;  	WebKit.dll!WTF::RefPtr&lt;WTF::StringImpl&gt;::release() Line 69	C++
&gt;  	WebKit.dll!WTF::RefPtr&lt;WTF::StringImpl&gt;::RefPtr&lt;WTF::StringImpl&gt;(WTF::RefPtr&lt;WTF::StringImpl&gt; &amp;&amp; o) Line 52	C++
&gt;  	WebKit.dll!WTF::RefPtr&lt;WTF::StringImpl&gt;::release() Line 69	C++
&gt;  	WebKit.dll!WTF::RefPtr&lt;WTF::StringImpl&gt;::RefPtr&lt;WTF::StringImpl&gt;(WTF::RefPtr&lt;WTF::StringImpl&gt; &amp;&amp; o) Line 52	C++
&gt;  	The maximum number of stack frames supported by Visual Studio has been exceeded.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1201808</commentid>
    <comment_count>1</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2016-06-13 02:57:53 -0700</bug_when>
    <thetext>Another callstack by stoping with a breakpoint:

&gt; WebKit.dll!WTF::RefPtr&lt;WTF::StringImpl&gt;::RefPtr&lt;WTF::StringImpl&gt;(WTF::RefPtr&lt;WTF::StringImpl&gt; &amp;&amp; o) Line 52	C++
&gt; WebKit.dll!WTF::RefPtr&lt;WTF::StringImpl&gt;::release() Line 69	C++
&gt; WebKit.dll!WTF::RefPtr&lt;WTF::StringImpl&gt;::RefPtr&lt;WTF::StringImpl&gt;(WTF::RefPtr&lt;WTF::StringImpl&gt; &amp;&amp; o) Line 52	C++
&gt; WebKit.dll!WTF::RefPtr&lt;WTF::StringImpl&gt;::release() Line 69	C++
&gt; WebKit.dll!WTF::RefPtr&lt;WTF::StringImpl&gt;::RefPtr&lt;WTF::StringImpl&gt;(WTF::RefPtr&lt;WTF::StringImpl&gt; &amp;&amp; o) Line 52	C++
&gt; WebKit.dll!WTF::RefPtr&lt;WTF::StringImpl&gt;::release() Line 69	C++
&gt; WebKit.dll!WTF::RefPtr&lt;WTF::StringImpl&gt;::RefPtr&lt;WTF::StringImpl&gt;(WTF::RefPtr&lt;WTF::StringImpl&gt; &amp;&amp; o) Line 52	C++
&gt; WebKit.dll!WTF::RefPtr&lt;WTF::StringImpl&gt;::release() Line 69	C++
&gt; WebKit.dll!WTF::RefPtr&lt;WTF::StringImpl&gt;::RefPtr&lt;WTF::StringImpl&gt;(WTF::RefPtr&lt;WTF::StringImpl&gt; &amp;&amp; o) Line 52	C++
&gt; WebKit.dll!WTF::RefPtr&lt;WTF::StringImpl&gt;::release() Line 69	C++
&gt; WebKit.dll!WTF::RefPtr&lt;WTF::StringImpl&gt;::RefPtr&lt;WTF::StringImpl&gt;(WTF::RefPtr&lt;WTF::StringImpl&gt; &amp;&amp; o) Line 52	C++
&gt; WebKit.dll!WTF::RefPtr&lt;WTF::StringImpl&gt;::operator=(WTF::RefPtr&lt;WTF::StringImpl&gt; &amp;&amp; o) Line 173	C++
&gt; WebKit.dll!WTF::String::operator=(WTF::String &amp;&amp; other) Line 134	C++
&gt; WebKit.dll!WTF::HashMapTranslator&lt;WTF::HashMap&lt;WTF::String,unsigned int,WTF::StringHash,WTF::HashTraits&lt;WTF::String&gt;,WTF::HashTraits&lt;unsigned int&gt; &gt;::KeyValuePairTraits,WTF::StringHash&gt;::translate&lt;WTF::KeyValuePair&lt;WTF::String,unsigned int&gt;,WTF::String,int&gt;(WTF::KeyValuePair&lt;WTF::String,unsigned int&gt; &amp; location, WTF::String &amp;&amp; key, int &amp;&amp; mapped) Line 185	C++
&gt; WebKit.dll!WTF::HashTable&lt;WTF::String,WTF::KeyValuePair&lt;WTF::String,unsigned int&gt;,WTF::KeyValuePairKeyExtractor&lt;WTF::KeyValuePair&lt;WTF::String,unsigned int&gt; &gt;,WTF::StringHash,WTF::HashMap&lt;WTF::String,unsigned int,WTF::StringHash,WTF::HashTraits&lt;WTF::String&gt;,WTF::HashTraits&lt;unsigned int&gt; &gt;::KeyValuePairTraits,WTF::HashTraits&lt;WTF::String&gt; &gt;::add&lt;WTF::HashMapTranslator&lt;WTF::HashMap&lt;WTF::String,unsigned int,WTF::StringHash,WTF::HashTraits&lt;WTF::String&gt;,WTF::HashTraits&lt;unsigned int&gt; &gt;::KeyValuePairTraits,WTF::StringHash&gt;,WTF::String,int&gt;(WTF::String &amp;&amp; key, int &amp;&amp; extra) Line 932	C++
&gt; WebKit.dll!WTF::HashMap&lt;WTF::String,unsigned int,WTF::StringHash,WTF::HashTraits&lt;WTF::String&gt;,WTF::HashTraits&lt;unsigned int&gt; &gt;::inlineAdd&lt;WTF::String,int&gt;(WTF::String &amp;&amp; key, int &amp;&amp; value) Line 316	C++
&gt; WebKit.dll!WTF::HashMap&lt;WTF::String,unsigned int,WTF::StringHash,WTF::HashTraits&lt;WTF::String&gt;,WTF::HashTraits&lt;unsigned int&gt; &gt;::add&lt;int&gt;(WTF::String &amp;&amp; key, int &amp;&amp; mapped) Line 358	C++
&gt; WebKit.dll!WTF::HashCountedSet&lt;WTF::String,WTF::StringHash,WTF::HashTraits&lt;WTF::String&gt; &gt;::add(WTF::String &amp;&amp; value) Line 194	C++
&gt; WebKit.dll!WebKitClassFactory::WebKitClassFactory(_GUID targetClass) Line 71	C++
&gt; WebKit.dll!DllGetClassObject(const _GUID &amp; rclsid, const _GUID &amp; riid, void * * ppv) Line 105	C++
&gt; WebKit.dll!classFactory(const _GUID &amp; clsid) Line 61	C++
&gt; WebKit.dll!WebKitCreateInstance(const _GUID &amp; rclsid, IUnknown * pUnkOuter, const _GUID &amp; riid, void * * ppvObject) Line 72	C++
&gt; MiniBrowserLib.dll!MiniBrowser::seedInitialDefaultPreferences() Line 171	C++
&gt; MiniBrowserLib.dll!wWinMain(HINSTANCE__ * hInstance, HINSTANCE__ * hPrevInstance, wchar_t * lpstrCmdLine, int nCmdShow) Line 117	C++
&gt; MiniBrowserLib.dll!dllLauncherEntryPoint(HINSTANCE__ * hInstance, HINSTANCE__ * hPrevInstance, wchar_t * lpstrCmdLine, int nCmdShow) Line 857	C++
&gt; MiniBrowser.exe!wWinMain(HINSTANCE__ * hInstance, HINSTANCE__ * hPrevInstance, wchar_t * lpstrCmdLine, int nCmdShow) Line 249	C++
&gt; [External Code]	
&gt; [Frames below may be incorrect and/or missing, no symbols loaded for kernel32.dll]</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1201813</commentid>
    <comment_count>2</comment_count>
      <attachid>281165</attachid>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2016-06-13 04:30:08 -0700</bug_when>
    <thetext>Created attachment 281165
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1201839</commentid>
    <comment_count>3</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2016-06-13 08:29:56 -0700</bug_when>
    <thetext>This seems like it should be affecting all ports, not just Windows. I wonder why we don&apos;t see it elsewhere?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1201841</commentid>
    <comment_count>4</comment_count>
    <who name="Keith Rollin">krollin</who>
    <bug_when>2016-06-13 08:45:13 -0700</bug_when>
    <thetext>Yeah, I wondered that, too. It may have to do with how the compiler handles optimizing the assigning of the result of adoptRef() to &quot;tmp&quot; in release(). If it uses the move constructor, then we have the recursion problem. If it uses the &quot;construct the result in the caller-provided variable&quot; optimization, then we won&apos;t.

So I can see how different compilers could have different results. What I&apos;m wondering is why we&apos;re only seeing it in MiniBrowser and not all over the place on Windows.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1201846</commentid>
    <comment_count>5</comment_count>
      <attachid>281165</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-06-13 09:02:48 -0700</bug_when>
    <thetext>Comment on attachment 281165
Patch

R=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1201853</commentid>
    <comment_count>6</comment_count>
      <attachid>281165</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-06-13 09:26:14 -0700</bug_when>
    <thetext>Comment on attachment 281165
Patch

Clearing flags on attachment: 281165

Committed r201991: &lt;http://trac.webkit.org/changeset/201991&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1201854</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-06-13 09:26:21 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1202050</commentid>
    <comment_count>8</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2016-06-13 18:54:18 -0700</bug_when>
    <thetext>Release build has no problem.

All programs (MiniBrowser DumpRenderTree, TestWTF, TestWebKit, jsc, testapi, testRegExp) of Debug build have the problem.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>281165</attachid>
            <date>2016-06-13 04:30:08 -0700</date>
            <delta_ts>2016-06-13 09:26:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-158687-20160613203141.patch</filename>
            <type>text/plain</type>
            <size>1714</size>
            <attacher name="Fujii Hironori">fujii</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAxOTg2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGRiYTg1YjUyNjYyNjk5YWQ1ZDk3MTlk
MDg3NTAwZTZlMTdmNjk4MzEuLjgwOTU2NWJmNzcxOTg5MzJlOTQ1MmFkNjI2MzNlYzI3MGVmNjM4
M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTYtMDYtMTMgIEZ1amlpIEhpcm9ub3JpICA8SGly
b25vcmkuRnVqaWlAc29ueS5jb20+CisKKyAgICAgICAgU3RhY2sgb3ZlcmZsb3cgYXQgUmVmUHRy
OjpyZWxlYXNlIG9uIFdpbmRvd3MgcG9ydCBzaW5jZSByMjAxNzgyCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTg2ODcKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZWZQdHI6OnJlbGVhc2UgY2FsbHMgUmVm
UHRyOjpSZWZQdHIsIGFuZCBSZWZQdHI6OlJlZlB0ciBjYWxscworICAgICAgICBSZWZQdHI6OnJl
bGVhc2UuCisKKyAgICAgICAgUmVmUHRyOjpSZWZQdHIgZG9lcyBub3QgbmVlZCB0byBjYWxsIFJl
ZlB0cjo6cmVsZWFzZS4KKworICAgICAgICAqIHd0Zi9SZWZQdHIuaDoKKyAgICAgICAgKFdURjo6
UmVmUHRyOjpSZWZQdHIpOiBEbyBub3QgY2FsbCBSZWZQdHI6OnJlbGVhc2UuCisKIDIwMTYtMDYt
MTEgIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KIAogICAgICAgICBB
ZGRyZXNzaW5nIHBvc3QtcmV2aWV3IGNvbW1lbnRzIGFmdGVyIHIyMDE5NzguCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV1RGL3d0Zi9SZWZQdHIuaCBiL1NvdXJjZS9XVEYvd3RmL1JlZlB0ci5oCmluZGV4
IGRlNDdiNjZiNGUzYjE5NTg5NmEwYjRhNDEzY2NkMzQzZDkyMGNiMmQuLmE4Y2I2YzljNTE2NDM2
YmQ4NGYzNWUyYmJjYTkzODk2Yzg2NjYyOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1Jl
ZlB0ci5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1JlZlB0ci5oCkBAIC00OSw4ICs0OSw4IEBAIHB1
YmxpYzoKICAgICBBTFdBWVNfSU5MSU5FIFJlZlB0cihjb25zdCBSZWZQdHImIG8pIDogbV9wdHIo
by5tX3B0cikgeyByZWZJZk5vdE51bGwobV9wdHIpOyB9CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
VT4gUmVmUHRyKGNvbnN0IFJlZlB0cjxVPiYgbykgOiBtX3B0cihvLmdldCgpKSB7IHJlZklmTm90
TnVsbChtX3B0cik7IH0KIAotICAgIEFMV0FZU19JTkxJTkUgUmVmUHRyKFJlZlB0ciYmIG8pIDog
bV9wdHIoby5yZWxlYXNlKCkubGVha1JlZigpKSB7IH0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBV
PiBSZWZQdHIoUmVmUHRyPFU+JiYgbykgOiBtX3B0cihvLnJlbGVhc2UoKS5sZWFrUmVmKCkpIHsg
fQorICAgIEFMV0FZU19JTkxJTkUgUmVmUHRyKFJlZlB0ciYmIG8pIDogbV9wdHIoby5sZWFrUmVm
KCkpIHsgfQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IFJlZlB0cihSZWZQdHI8VT4mJiBvKSA6
IG1fcHRyKG8ubGVha1JlZigpKSB7IH0KIAogICAgIC8vIFNlZSBjb21tZW50cyBpbiBQYXNzUmVm
UHRyLmggZm9yIGFuIGV4cGxhbmF0aW9uIG9mIHdoeSB0aGlzIHRha2VzIGEgY29uc3QgcmVmZXJl
bmNlLgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IFJlZlB0cihjb25zdCBQYXNzUmVmUHRyPFU+
Jik7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>