<?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>204703</bug_id>
          
          <creation_ts>2019-11-29 08:02:44 -0800</creation_ts>
          <short_desc>[GTK][PSON] Crash in NetworkProcessProxy::openNetworkProcessConnection</short_desc>
          <delta_ts>2019-12-02 01:40:40 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKitGTK</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Linux</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="Michael Catanzaro">mcatanzaro</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>berto</cc>
    
    <cc>bugs-noreply</cc>
    
    <cc>cgarcia</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gustavo</cc>
    
    <cc>mcatanzaro</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1594198</commentid>
    <comment_count>0</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2019-11-29 08:02:44 -0800</bug_when>
    <thetext>This crash occurs since 2.27.3 when opening the address bar dropdown and scrolling through results. It doesn&apos;t happen always, but it occurs so frequently during regular browser usage that I&apos;ll likely roll Epiphany back to 2.26.2.

Program terminated with signal SIGSEGV, Segmentation fault.
#0  0x00007f01c2b2369b in WebKit::WebProcessProxy::sessionID (
    this=this@entry=0x7f00566f8000)
    at ../Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.h:112
112	    PAL::SessionID sessionID() const { return m_sessionID; }

#0  0x00007f01c2b2369b in WebKit::WebProcessProxy::sessionID() const (this=this@entry=0x7f00566f8000)
    at ../Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.h:112
#1  0x00007f01c2c0bccc in WebKit::NetworkProcessProxy::openNetworkProcessConnection(unsigned long, WebKit::WebProcessProxy&amp;) (this=this@entry=0x7f0148204000, connectionRequestIdentifier=&lt;optimized out&gt;, webProcessProxy=...)
    at ../Source/WebKit/UIProcess/AuxiliaryProcessProxy.h:111
#2  0x00007f01c2c10797 in WebKit::NetworkProcessProxy::getNetworkProcessConnection(WebKit::WebProcessProxy&amp;, WTF::CompletionHandler&lt;void (WebKit::NetworkProcessConnectionInfo const&amp;)&gt;&amp;&amp;)
    (reply=..., webProcessProxy=..., this=0x7f0148204000)
    at ../Source/WebKit/UIProcess/Network/NetworkProcessProxy.cpp:145
#3  0x00007f01c2c10797 in WebKit::NetworkProcessProxy::getNetworkProcessConnection(WebKit::WebProcessProxy&amp;, WTF::CompletionHandler&lt;void (WebKit::NetworkProcessConnectionInfo const&amp;)&gt;&amp;&amp;)
    (this=0x7f0148204000, webProcessProxy=..., reply=...)
    at ../Source/WebKit/UIProcess/Network/NetworkProcessProxy.cpp:140
#4  0x00007f01c2b38c7e in WebKit::WebProcessPool::getNetworkProcessConnection(WebKit::WebProcessProxy&amp;, WTF::CompletionHandler&lt;void (WebKit::NetworkProcessConnectionInfo const&amp;)&gt;&amp;&amp;)
    (this=&lt;optimized out&gt;, webProcessProxy=..., reply=...) at /usr/include/c++/9.2.0/bits/unique_ptr.h:352
#5  0x00007f01c2b38ca2 in WebKit::WebProcessProxy::getNetworkProcessConnection(WTF::CompletionHandler&lt;void (WebKit::NetworkProcessConnectionInfo const&amp;)&gt;&amp;&amp;) (this=this@entry=0x7f00566f8000, reply=...)
    at DerivedSources/ForwardingHeaders/wtf/WeakPtr.h:100
#6  0x00007f01c28ad137 in IPC::callMemberFunctionImpl&lt;WebKit::WebProcessProxy, void (WebKit::WebProcessProxy::*)(WTF::CompletionHandler&lt;void (WebKit::NetworkProcessConnectionInfo const&amp;)&gt;&amp;&amp;), void (WebKit::NetworkProcessConnectionInfo const&amp;), std::tuple&lt;&gt;&gt;(WebKit::WebProcessProxy*, void (WebKit::WebProcessProxy::*)(WTF::CompletionHandler&lt;void (WebKit::NetworkProcessConnectionInfo const&amp;)&gt;&amp;&amp;), WTF::CompletionHandler&lt;void (WebKit::NetworkProcessConnectionInfo const&amp;)&gt;&amp;&amp;, std::tuple&lt;&gt;&amp;&amp;, std::integer_sequence&lt;unsigned long&gt;)
    (args=&lt;synthetic pointer&gt;, completionHandler=..., function=&lt;optimized out&gt;, object=0x7f00566f8000)
    at ../Source/WebKit/Platform/IPC/HandleMessage.h:59
        completionHandler = 
              {m_function = {m_callableWrapper = std::unique_ptr&lt;WTF::Detail::CallableWrapperBase&lt;void, WebKit::NetworkProcessConnectionInfo const&amp;&gt;&gt; = {get() = 0x0}}}
        protectedThis = 
          {static isRef = &lt;error reading variable: Missing ELF symbol &quot;WTF::Ref&lt;WebKit::WebProcessProxy, WTF::DumbPtrTraits&lt;WebKit::WebProcessProxy&gt; &gt;::isRef&quot;.&gt;, m_ptr = 0x7f00566f8000}
#7  0x00007f01c28ad137 in IPC::callMemberFunction&lt;WebKit::WebProcessProxy, void (WebKit::WebProcessProxy::*)(WTF::CompletionHandler&lt;void (WebKit::NetworkProcessConnectionInfo const&amp;)&gt;&amp;&amp;), void (WebKit::NetworkProcessConnectionInfo const&amp;), std::tuple&lt;&gt;, std::integer_sequence&lt;unsigned long&gt; &gt;(std::tuple&lt;&gt;&amp;&amp;, WTF::CompletionHandler&lt;void (WebKit::NetworkProcessConnectionInfo const&amp;)&gt;&amp;&amp;, WebKit::WebProcessProxy*, void (WebKit::WebProcessProxy::*)(WTF::CompletionHandler&lt;void (WebKit::NetworkProcessConnectionInfo const&amp;)&gt;&amp;&amp;))
    (args=&lt;synthetic pointer&gt;, function=&lt;optimized out&gt;, object=0x7f00566f8000, completionHandler=...)
    at ../Source/WebKit/Platform/IPC/HandleMessage.h:61
        completionHandler = 
              {m_function = {m_callableWrapper = std::unique_ptr&lt;WTF::Detail::CallableWrapperBase&lt;void, WebKit::NetworkProcessConnectionInfo const&amp;&gt;&gt; = {get() = 0x0}}}
        protectedThis = 
          {static isRef = &lt;error reading variable: Missing ELF symbol &quot;WTF::Ref&lt;WebKit::WebProcessProxy, WTF::DumbPtrTraits&lt;WebKit::WebProcessProxy&gt; &gt;::isRef&quot;.&gt;, m_ptr = 0x7f00566f8000}
#8  0x00007f01c28ad137 in IPC::handleMessageSynchronous&lt;Messages::WebProcessProxy::GetNetworkProcessConnection, WebKit::WebProcessProxy, void (WebKit::WebProcessProxy::*)(WTF::CompletionHandler&lt;void (WebKit::NetworkProcessConnectionInfo const&amp;)&gt;&amp;&amp;)&gt;(IPC::Connection&amp;, IPC::Decoder&amp;, std::unique_ptr&lt;IPC::Encoder, std::default_delete&lt;IPC::Encoder&gt; &gt;&amp;, WebKit::WebProcessProxy*, void (WebKit::WebProcessProxy::*)(WTF::CompletionHandler&lt;void (WebKit::NetworkProcessConnectionInfo const&amp;)&gt;&amp;&amp;)) (function=&lt;optimized out&gt;, object=0x7f00566f8000, replyEncoder=..., decoder=..., connection=...)
    at ../Source/WebKit/Platform/IPC/HandleMessage.h:148
        completionHandler = 
              {m_function = {m_callableWrapper = std::unique_ptr&lt;WTF::Detail::CallableWrapperBase&lt;void, WebKit::NetworkProcessConnectionInfo const&amp;&gt;&gt; = {get() = 0x0}}}
        protectedThis = {static isRef = &lt;error reading variable: Missing ELF symbol &quot;WTF::Ref&lt;WebKit::WebProcessProxy, WTF::DumbPtrTraits&lt;WebKit::WebProcessProxy&gt; &gt;::isRef&quot;.&gt;, m_ptr = 0x7f00566f8000}
#9  0x00007f01c28ad137 in WebKit::WebProcessProxy::didReceiveSyncWebProcessProxyMessage(IPC::Connection&amp;, IPC::Decoder&amp;, std::unique_ptr&lt;IPC::Encoder, std::default_delete&lt;IPC::Encoder&gt; &gt;&amp;) (this=0x7f00566f8000, connection=..., decoder=..., replyEncoder=...) at DerivedSources/WebKit/WebProcessProxyMessageReceiver.cpp:291
        protectedThis = {static isRef = &lt;error reading variable: Missing ELF symbol &quot;WTF::Ref&lt;WebKit::WebProcessProxy, WTF::DumbPtrTraits&lt;WebKit::WebProcessProxy&gt; &gt;::isRef&quot;.&gt;, m_ptr = 0x7f00566f8000}
#10 0x00007f01c2a15d5d in IPC::Connection::dispatchSyncMessage(IPC::Decoder&amp;) (this=0x7f007a470320, decoder=...) at ../Source/WebKit/Platform/IPC/Encoder.h:40
        syncRequestID = 1
        replyEncoder = std::unique_ptr&lt;IPC::Encoder&gt; = {get() = 0x0}
#11 0x00007f01c2a15ea1 in IPC::Connection::dispatchMessage(std::unique_ptr&lt;IPC::Decoder, std::default_delete&lt;IPC::Decoder&gt; &gt;) (this=0x7f007a470320, message=std::unique_ptr&lt;IPC::Decoder&gt; = {...}) at /usr/include/c++/9.2.0/bits/unique_ptr.h:352
        isDispatchingMessageWhileWaitingForSyncReply = &lt;optimized out&gt;
        oldDidReceiveInvalidMessage = false
#12 0x00007f01c2a160d7 in IPC::Connection::SyncMessageState::dispatchMessages(IPC::Connection*) (this=this@entry=0x7f01c53fb820 &lt;IPC::Connection::SyncMessageState::singleton()::syncMessageState&gt;, allowedConnection=allowedConnection@entry=0x7f007a470320) at /usr/include/c++/9.2.0/bits/move.h:74
        connectionAndIncomingMessage = @0x7f00566e0100: {connection = {static isRef = &lt;error reading variable: Missing ELF symbol &quot;WTF::Ref&lt;IPC::Connection, WTF::DumbPtrTraits&lt;IPC::Connection&gt; &gt;::isRef&quot;.&gt;, m_ptr = 0x7f007a470320}, message = std::unique_ptr&lt;IPC::Decoder&gt; = {get() = 0x0}}
        i = &lt;optimized out&gt;
        messagesToPutBack = {&lt;WTF::VectorBuffer&lt;IPC::Connection::SyncMessageState::ConnectionAndIncomingMessage, 0&gt;&gt; = {&lt;WTF::VectorBufferBase&lt;IPC::Connection::SyncMessageState::ConnectionAndIncomingMessage&gt;&gt; = {m_buffer = 0x0, m_capacity = 0, m_size = 0}, &lt;No data fields&gt;}, &lt;No data fields&gt;}
#13 0x00007f01c2a16545 in IPC::Connection::SyncMessageState::dispatchMessageAndResetDidScheduleDispatchMessagesForConnection(IPC::Connection&amp;) (this=0x7f01c53fb820 &lt;IPC::Connection::SyncMessageState::singleton()::syncMessageState&gt;, connection=...) at ../Source/WebKit/Platform/IPC/Connection.cpp:208
#14 0x00007f01c1de7865 in WTF::Function&lt;void ()&gt;::operator()() const (this=&lt;synthetic pointer&gt;) at ../Source/WTF/wtf/Lock.h:84
        function = {m_callableWrapper = std::unique_ptr&lt;WTF::Detail::CallableWrapperBase&lt;void&gt;&gt; = {get() = 0x7f00566eb018}}
        functionsToHandle = 1
#15 0x00007f01c1de7865 in WTF::RunLoop::performWork() (this=0x7f01bc2f5000) at ../Source/WTF/wtf/RunLoop.cpp:107
        function = {m_callableWrapper = std::unique_ptr&lt;WTF::Detail::CallableWrapperBase&lt;void&gt;&gt; = {get() = 0x7f00566eb018}}
        functionsToHandle = 1
#16 0x00007f01c1e33e1d in WTF::RunLoop::&lt;lambda(gpointer)&gt;::operator() (__closure=0x0, userData=&lt;optimized out&gt;) at ../Source/WTF/wtf/glib/RunLoopGLib.cpp:68
#17 0x00007f01c1e33e1d in WTF::RunLoop::&lt;lambda(gpointer)&gt;::_FUN(gpointer) () at ../Source/WTF/wtf/glib/RunLoopGLib.cpp:70
#18 0x00007f01c5e4458e in g_main_dispatch (context=0x55eadaadfd90) at ../glib/gmain.c:3185
        dispatch = 0x7f01c1e33e30 &lt;WTF::&lt;lambda(GSource*, GSourceFunc, gpointer)&gt;::_FUN(GSource *, GSourceFunc, gpointer)&gt;
        prev_source = 0x0
        was_in_call = 0
        user_data = 0x7f01bc2f5000
        callback = 0x7f01c1e33e10 &lt;WTF::RunLoop::&lt;lambda(gpointer)&gt;::_FUN(gpointer)&gt;
        cb_funcs = 0x7f01c5f19280 &lt;g_source_callback_funcs&gt;
        cb_data = 0x55eadac44370
        need_destroy = &lt;optimized out&gt;
        source = 0x55eadac09d50
        current = 0x55eadaae8e10
        i = 0
        __func__ = &quot;g_main_dispatch&quot;
#19 0x00007f01c5e4458e in g_main_context_dispatch (context=context@entry=0x55eadaadfd90) at ../glib/gmain.c:3850
#20 0x00007f01c5e44940 in g_main_context_iterate (context=context@entry=0x55eadaadfd90, block=block@entry=1, dispatch=dispatch@entry=1, self=&lt;optimized out&gt;) at ../glib/gmain.c:3923
        max_priority = 2147483647
        timeout = 697
        some_ready = 1
        nfds = &lt;optimized out&gt;
        allocated_nfds = &lt;optimized out&gt;
        fds = 0x55eadad7edd0
#21 0x00007f01c5e449e3 in g_main_context_iteration (context=context@entry=0x55eadaadfd90, may_block=may_block@entry=1) at ../glib/gmain.c:3984
        retval = &lt;optimized out&gt;
#22 0x00007f01c605e4f5 in g_application_run (application=0x55eadaad4720 [EphyShell], argc=&lt;optimized out&gt;, argv=&lt;optimized out&gt;) at ../gio/gapplication.c:2559
        arguments = 0x55eadabf38e0
        status = 0
        context = 0x55eadaadfd90
        acquired_context = 1
        __func__ = &quot;g_application_run&quot;
#23 0x000055eada08d0cd in main (argc=1, argv=0x7ffd680c1648) at ../src/ephy-main.c:427
        option_context = 0x55eadaa939b0
        option_group = 0x55eadaa93a30
        error = 0x0
        user_time = 0
        arbitrary_url = 0
        ctx = 0x55eadac018f0
        mode = EPHY_EMBED_SHELL_MODE_BROWSER
        status = 32765
        flags = EPHY_FILE_HELPERS_ENSURE_EXISTS
        desktop_info = 0x0</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1594234</commentid>
    <comment_count>1</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2019-11-29 10:35:54 -0800</bug_when>
    <thetext>I think it would be an assertion failure in debug builds. WebProcessProxy::sessionID() gets called before m_websiteDataStore is set.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1594240</commentid>
    <comment_count>2</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2019-11-29 11:03:52 -0800</bug_when>
    <thetext>OK, here&apos;s a 100% reproducer:

 * Load a website in the web view, e.g. https://webkit.org
 * Load a different website in the same web view, e.g. https://gnome.org. This triggers the creation of a new WebProcessProxy and a process swap. The new WebProcessProxy uses the same WebsiteDataStore as the original, and all works fine.
 * Ctrl+L to open the address bar dropdown, hold the down arrow key. A new WebProcessProxy is created (not sure why, is it for prewarming?) without any WebsiteDataStore.

Then WebProcessProxy::getNetworkProcessConnection() gets called from somewhere, and we crash because WebProcessProxy::setWebsiteDataStore() has not been called yet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1594241</commentid>
    <comment_count>3</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2019-11-29 11:04:13 -0800</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #0)
&gt; It doesn&apos;t happen always, but it occurs so
&gt; frequently during regular browser usage that I&apos;ll likely roll Epiphany back
&gt; to 2.26.2.

I&apos;ll just disable PSON for now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1594243</commentid>
    <comment_count>4</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2019-11-29 11:07:31 -0800</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #2)
&gt;  * Load a different website in the same web view, e.g. https://gnome.org.
&gt; This triggers the creation of a new WebProcessProxy and a process swap. The
&gt; new WebProcessProxy uses the same WebsiteDataStore as the original, and all
&gt; works fine.
&gt;  * Ctrl+L to open the address bar dropdown, hold the down arrow key. A new
&gt; WebProcessProxy is created (not sure why, is it for prewarming?) without any
&gt; WebsiteDataStore.

I missed a step here. After you Ctrl+L, you have to type some characters to display history results. Just pressing the down arrow does nothing unless you type first.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1594310</commentid>
    <comment_count>5</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2019-11-30 06:49:02 -0800</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #2)
&gt; OK, here&apos;s a 100% reproducer:
&gt; 
&gt;  * Load a website in the web view, e.g. https://webkit.org
&gt;  * Load a different website in the same web view, e.g. https://gnome.org.
&gt; This triggers the creation of a new WebProcessProxy and a process swap. The
&gt; new WebProcessProxy uses the same WebsiteDataStore as the original, and all
&gt; works fine.
&gt;  * Ctrl+L to open the address bar dropdown, hold the down arrow key. A new
&gt; WebProcessProxy is created (not sure why, is it for prewarming?) without any
&gt; WebsiteDataStore.

If it only happens with the keyboard, but not with the mouse, I would blame the DNS prefetch that we start when selecting entries of the dropdown list.

&gt; Then WebProcessProxy::getNetworkProcessConnection() gets called from
&gt; somewhere, and we crash because WebProcessProxy::setWebsiteDataStore() has
&gt; not been called yet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1594315</commentid>
    <comment_count>6</comment_count>
      <attachid>384542</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2019-11-30 07:25:47 -0800</bug_when>
    <thetext>Created attachment 384542
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1594316</commentid>
    <comment_count>7</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-11-30 07:26:47 -0800</bug_when>
    <thetext>Thanks for the patch. If this patch contains new public API please make sure it follows the guidelines for new WebKit2 GTK+ API. See http://trac.webkit.org/wiki/WebKitGTK/AddingNewWebKit2API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1594318</commentid>
    <comment_count>8</comment_count>
      <attachid>384542</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2019-11-30 07:41:50 -0800</bug_when>
    <thetext>Comment on attachment 384542
Patch

Nice, thanks</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1594319</commentid>
    <comment_count>9</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2019-11-30 07:43:07 -0800</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #1)
&gt; I think it would be an assertion failure in debug builds.
&gt; WebProcessProxy::sessionID() gets called before m_websiteDataStore is set.

I think I would change this to be a RELEASE_ASSERT(). It seems somewhat fragile and that will likely help debugging in the future.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1594526</commentid>
    <comment_count>10</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2019-12-02 01:40:40 -0800</bug_when>
    <thetext>Committed r252980: &lt;https://trac.webkit.org/changeset/252980&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>384542</attachid>
            <date>2019-11-30 07:25:47 -0800</date>
            <delta_ts>2019-11-30 07:41:50 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>wk2-dns-prefetch-crash.diff</filename>
            <type>text/plain</type>
            <size>3938</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKaW5kZXggNzcyNTE1MWZiNjMuLjZiMTBkMDlmZmQxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE4IEBACisyMDE5LTExLTMwICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlh
LmNvbT4KKworICAgICAgICBbR1RLXVtQU09OXSBDcmFzaCBpbiBOZXR3b3JrUHJvY2Vzc1Byb3h5
OjpvcGVuTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDQ3MDMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBTdG9wIHNlbmRpbmcgYSBtZXNzYWdlIHRvIGFsbCB3ZWIg
cHJvY2VzcyB0byBwcmVmZXRjaCBETlMgZm9yIGEgaG9zdG5hbWUuIEFsbCB3ZWIgcHJvY2Vzc2Vz
IHRoZW4gc2VuZCBhIG1lc3NhYWdlCisgICAgICAgIHRvIHRoZWlyIG5ldHdvcmsgcHJvY2VzcyB0
byBwcmVmZXRjaCB0aGUgRE5TLiBJbnN0ZWFkLCBzZW5kIGEgbWVzc2FnZSBkaXJlY3RseSB0byB0
aGUgbmV0d29yayBwcm9jZXNzLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3MubWVzc2FnZXMuaW46CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdl
YkNvbnRleHQuY3BwOgorICAgICAgICAod2Via2l0X3dlYl9jb250ZXh0X3ByZWZldGNoX2Rucyk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ2xpYi9XZWJLaXRXZWJF
eHRlbnNpb24uY3BwOgorCiAyMDE5LTExLTI5ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJj
aWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBXZWJEcml2ZXI6IHRlc3RzIGlzX2VsZW1lbnRfZW5h
YmxlZC9lbmFibGVkLnB5Ojp0ZXN0X2ZpZWxkc2V0X2Rpc2FibGVkX2Rlc2NlbmRhbnQgYXJlIGZh
aWxpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQ
cm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IGFlMDM2MTljMzQ0Li5lMWVlMTc0MGZkOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdl
cy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1l
c3NhZ2VzLmluCkBAIC0zMSw2ICszMSw3IEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtQcm9jZXNzIExl
Z2FjeVJlY2VpdmVyIHsKICAgICBTZXRJZ25vcmVUTFNFcnJvcnMoYm9vbCBpZ25vcmVUTFNFcnJv
cnMpCiAgICAgVXNlclByZWZlcnJlZExhbmd1YWdlc0NoYW5nZWQoVmVjdG9yPFN0cmluZz4gbGFu
Z3VhZ2VzKQogICAgIFNldE5ldHdvcmtQcm94eVNldHRpbmdzKHN0cnVjdCBXZWJDb3JlOjpTb3Vw
TmV0d29ya1Byb3h5U2V0dGluZ3Mgc2V0dGluZ3MpCisgICAgUHJlZmV0Y2hETlMoU3RyaW5nIGhv
c3RuYW1lKQogI2VuZGlmCiAKICNpZiBVU0UoQ1VSTCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYkNvbnRleHQuY3BwIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHAKaW5kZXggMTI2YmNjZjEz
MTQuLmIwMDgxODM3NmU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Z2xpYi9XZWJLaXRXZWJDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0LmNwcApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUg
IkFQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oIgogI2luY2x1ZGUgIkFQSVN0cmluZy5oIgog
I2luY2x1ZGUgIkxlZ2FjeUdsb2JhbFNldHRpbmdzLmgiCisjaW5jbHVkZSAiTmV0d29ya1Byb2Nl
c3NNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlRleHRDaGVja2VyLmgiCiAjaW5jbHVkZSAiVGV4dENo
ZWNrZXJTdGF0ZS5oIgogI2luY2x1ZGUgIldlYkF1dG9tYXRpb25TZXNzaW9uLmgiCkBAIC0xNTUy
LDkgKzE1NTMsNyBAQCB2b2lkIHdlYmtpdF93ZWJfY29udGV4dF9wcmVmZXRjaF9kbnMoV2ViS2l0
V2ViQ29udGV4dCogY29udGV4dCwgY29uc3QgY2hhciogaG9zdAogICAgIGdfcmV0dXJuX2lmX2Zh
aWwoV0VCS0lUX0lTX1dFQl9DT05URVhUKGNvbnRleHQpKTsKICAgICBnX3JldHVybl9pZl9mYWls
KGhvc3RuYW1lKTsKIAotICAgIEFQSTo6RGljdGlvbmFyeTo6TWFwVHlwZSBtZXNzYWdlOwotICAg
IG1lc3NhZ2Uuc2V0KFN0cmluZzo6ZnJvbVVURjgoIkhvc3RuYW1lIiksIEFQSTo6U3RyaW5nOjpj
cmVhdGUoU3RyaW5nOjpmcm9tVVRGOChob3N0bmFtZSkpKTsKLSAgICBjb250ZXh0LT5wcml2LT5w
cm9jZXNzUG9vbC0+cG9zdE1lc3NhZ2VUb0luamVjdGVkQnVuZGxlKFN0cmluZzo6ZnJvbVVURjgo
IlByZWZldGNoRE5TIiksIEFQSTo6RGljdGlvbmFyeTo6Y3JlYXRlKFdURk1vdmUobWVzc2FnZSkp
LnB0cigpKTsKKyAgICBjb250ZXh0LT5wcml2LT5wcm9jZXNzUG9vbC0+c2VuZFRvTmV0d29ya2lu
Z1Byb2Nlc3MoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpQcmVmZXRjaEROUyhTdHJpbmc6OmZy
b21VVEY4KGhvc3RuYW1lKSkpOwogfQogCiAvKioKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ2xpYi9XZWJLaXRXZWJFeHRlbnNpb24uY3Bw
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9nbGliL1dlYktp
dFdlYkV4dGVuc2lvbi5jcHAKaW5kZXggOGViNTE3OWZiZjIuLjhiNzcyOWQwOTNjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIvV2Vi
S2l0V2ViRXh0ZW5zaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL2dsaWIvV2ViS2l0V2ViRXh0ZW5zaW9uLmNwcApAQCAtMTk4LDE3ICsxOTgs
NiBAQCBwcml2YXRlOgogI2VuZGlmCiAgICAgfQogCi0gICAgdm9pZCBkaWRSZWNlaXZlTWVzc2Fn
ZShJbmplY3RlZEJ1bmRsZSYsIGNvbnN0IFN0cmluZyYgbWVzc2FnZU5hbWUsIEFQSTo6T2JqZWN0
KiBtZXNzYWdlQm9keSkgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIEFTU0VSVChtZXNzYWdlQm9k
eS0+dHlwZSgpID09IEFQSTo6T2JqZWN0OjpUeXBlOjpEaWN0aW9uYXJ5KTsKLSAgICAgICAgQVBJ
OjpEaWN0aW9uYXJ5JiBtZXNzYWdlID0gKnN0YXRpY19jYXN0PEFQSTo6RGljdGlvbmFyeSo+KG1l
c3NhZ2VCb2R5KTsKLSAgICAgICAgaWYgKG1lc3NhZ2VOYW1lID09IFN0cmluZzo6ZnJvbVVURjgo
IlByZWZldGNoRE5TIikpIHsKLSAgICAgICAgICAgIEFQSTo6U3RyaW5nKiBob3N0bmFtZSA9IHN0
YXRpY19jYXN0PEFQSTo6U3RyaW5nKj4obWVzc2FnZS5nZXQoU3RyaW5nOjpmcm9tVVRGOCgiSG9z
dG5hbWUiKSkpOwotICAgICAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucHJlZmV0Y2hE
TlMoaG9zdG5hbWUtPnN0cmluZygpKTsKLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKLSAgICB9Ci0KICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlVG9Q
YWdlKEluamVjdGVkQnVuZGxlJiwgV2ViUGFnZSYgcGFnZSwgY29uc3QgU3RyaW5nJiBtZXNzYWdl
TmFtZSwgQVBJOjpPYmplY3QqIG1lc3NhZ2VCb2R5KSBvdmVycmlkZQogICAgIHsKICAgICAgICAg
QVNTRVJUKG1lc3NhZ2VCb2R5LT50eXBlKCkgPT0gQVBJOjpPYmplY3Q6OlR5cGU6OkRpY3Rpb25h
cnkpOwo=
</data>
<flag name="review"
          id="400339"
          type_id="1"
          status="+"
          setter="mcatanzaro"
    />
          </attachment>
      

    </bug>

</bugzilla>