<?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>174789</bug_id>
          
          <creation_ts>2017-07-24 09:09:06 -0700</creation_ts>
          <short_desc>REGRESSION(r218629): [GTK] ASSERTION FAILED: m_eglDisplay == EGL_NO_DISPLAY in WebCore::PlatformDisplay::~PlatformDisplay</short_desc>
          <delta_ts>2017-07-25 04:38:24 -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>WebKitGTK</component>
          <version>Other</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=157973</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="Michael Catanzaro">mcatanzaro</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>bugs-noreply</cc>
    
    <cc>cgarcia</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>zan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1331623</commentid>
    <comment_count>0</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2017-07-24 09:09:06 -0700</bug_when>
    <thetext>This is a recent regression. It occurs frequently when closing Epiphany, but not always. It always occurs when closing Epiphany while displaying https://duckduckgo.com.

ASSERTION FAILED: m_eglDisplay == EGL_NO_DISPLAY
../../Source/WebCore/platform/graphics/PlatformDisplay.cpp(159) : virtual WebCore::PlatformDisplay::~PlatformDisplay()

#0  0x00007fc997c49fdf in WTFCrash ()
    at ../../Source/WTF/wtf/Assertions.cpp:278
No locals.
#1  0x00007fc9a22f852d in (anonymous namespace)::PlatformDisplay::~PlatformDisplay (this=0x7fc925ad4090, __in_chrg=&lt;optimized out&gt;)
    at ../../Source/WebCore/platform/graphics/PlatformDisplay.cpp:159
No locals.
#2  0x00000000046c7c08 in (anonymous namespace)::PlatformDisplayWayland::~PlatformDisplayWayland (this=0x7fc925ad4090, __in_chrg=&lt;optimized out&gt;)
    at ../../Source/WebCore/platform/graphics/wayland/PlatformDisplayWayland.cpp:68
No locals.
#3  0x00000000046c7c24 in (anonymous namespace)::PlatformDisplayWayland::~PlatformDisplayWayland (this=0x7fc925ad4090, __in_chrg=&lt;optimized out&gt;)
    at ../../Source/WebCore/platform/graphics/wayland/PlatformDisplayWayland.cpp:72
No locals.
#4  0x00007fc9a22f8e6a in std::default_delete&lt;WebCore::PlatformDisplay&gt;::operator() (this=0x7fc9a70d51a8 &lt;WebCore::PlatformDisplay::sharedDisplay()::display&gt;, 
    __ptr=0x7fc925ad4090) at /usr/include/c++/7/bits/unique_ptr.h:78
No locals.
#5  0x00007fc9a22f8adb in std::unique_ptr&lt;WebCore::PlatformDisplay, std::default_delete&lt;WebCore::PlatformDisplay&gt; &gt;::~unique_ptr (
    this=0x7fc9a70d51a8 &lt;WebCore::PlatformDisplay::sharedDisplay()::display&gt;, 
    __in_chrg=&lt;optimized out&gt;) at /usr/include/c++/7/bits/unique_ptr.h:268
        __ptr = @0x7fc9a70d51a8: 0x7fc925ad4090
#6  0x00007fc98c2e5c38 in __run_exit_handlers (status=0, 
    listp=0x7fc98c6765b8 &lt;__exit_funcs&gt;, 
    run_list_atexit=run_list_atexit@entry=true, run_dtors=run_dtors@entry=true)
    at exit.c:83
        atfct = &lt;optimized out&gt;
        onfct = &lt;optimized out&gt;
        cxafct = &lt;optimized out&gt;
        f = &lt;optimized out&gt;
#7  0x00007fc98c2e5c8a in __GI_exit (status=&lt;optimized out&gt;) at exit.c:105
No locals.
#8  0x00007fc9a0476cb7 in IPC::Connection::didFailToSendSyncMessage (
    this=0x7fc9855ea000) at ../../Source/WebKit/Platform/IPC/Connection.cpp:884
No locals.
#9  0x00007fc9a0474c24 in IPC::Connection::sendSyncMessage (
    this=0x7fc9855ea000, syncRequestID=13, 
    encoder=std::unique_ptr&lt;IPC::Encoder&gt; containing 0x7fc92267e780, 
    timeout=..., sendSyncOptions=...)
    at ../../Source/WebKit/Platform/IPC/Connection.cpp:517
        locker = {&lt;WTF::AbstractLocker&gt; = {&lt;No data fields&gt;}, 
          m_lockable = 0x7fc9855ea110}
        __PRETTY_FUNCTION__ = &quot;std::unique_ptr&lt;IPC::Decoder&gt; IPC::Connection::sendSyncMessage(uint64_t, std::unique_ptr&lt;IPC::Encoder&gt;, WTF::Seconds, WTF::OptionSet&lt;IPC::SendSyncOption&gt;)&quot;
        protect = {static isRef = &lt;optimized out&gt;, m_ptr = 0x7ffd0c45d588}
        reply = std::unique_ptr&lt;IPC::Decoder&gt; containing 0x7fc92267e780
#10 0x00007fc9a073adc4 in IPC::Connection::sendSync&lt;Messages::WebProcessProxy::ShouldTerminate&gt; (this=0x7fc9855ea000, message=..., reply=..., destinationID=0, 
    timeout=..., sendSyncOptions=...)
    at ../../Source/WebKit/Platform/IPC/Connection.h:384
        syncRequestID = 13
        encoder = std::unique_ptr&lt;IPC::Encoder&gt; containing 0x0
        replyDecoder = std::unique_ptr&lt;IPC::Decoder&gt; containing 0x0
#11 0x00007fc9a0730cac in (anonymous namespace)::WebProcess::shouldTerminate (
    this=0x7b4e180) at ../../Source/WebKit/WebProcess/WebProcess.cpp:609
        __PRETTY_FUNCTION__ = &quot;virtual bool WebKit::WebProcess::shouldTerminate()&quot;
        shouldTerminate = false
#12 0x00007fc9a04a7827 in (anonymous namespace)::ChildProcess::terminationTimerFired (this=0x7b4e180) at ../../Source/WebKit/Shared/ChildProcess.cpp:164
No locals.
#13 0x00007fc9a04a77a2 in (anonymous namespace)::ChildProcess::enableTermination (this=0x7b4e180) at ../../Source/WebKit/Shared/ChildProcess.cpp:145
        __PRETTY_FUNCTION__ = &quot;void WebKit::ChildProcess::enableTermination()&quot;
#14 0x00007fc9a0730bec in (anonymous namespace)::WebProcess::removeWebPage (
    this=0x7b4e180, pageID=1)
    at ../../Source/WebKit/WebProcess/WebProcess.cpp:599
        __PRETTY_FUNCTION__ = &quot;void WebKit::WebProcess::removeWebPage(uint64_t)&quot;
#15 0x00007fc9a089d5dd in (anonymous namespace)::WebPage::close (
    this=0x7fc93a5fa600)
    at ../../Source/WebKit/WebProcess/WebPage/WebPage.cpp:1159
        isRunningModal = false
#16 0x00007fc9a0bf40b0 in IPC::callMemberFunctionImpl&lt;WebKit::WebPage, void (WebKit::WebPage::*)(), std::tuple&lt;&gt; &gt;((anonymous namespace)::WebPage *, void ((anonymous namespace)::WebPage::*)((anonymous namespace)::WebPage * const), std::tuple&lt;&gt; &amp;&amp;, std::index_sequence) (object=0x7fc93a5fa600, 
    function=(void ((anonymous namespace)::WebPage::*)((anonymous namespace)::WebPage * const)) 0x7fc9a089d0ea &lt;(anonymous namespace)::WebPage::close()&gt;, 
    args=...) at ../../Source/WebKit/Platform/IPC/HandleMessage.h:40
No locals.
#17 0x00007fc9a0bf2568 in IPC::callMemberFunction&lt;WebKit::WebPage, void (WebKit::WebPage::*)(), std::tuple&lt;&gt; &gt;(std::tuple&lt;&gt; &amp;&amp;, (anonymous namespace)::WebPage *, void ((anonymous namespace)::WebPage::*)((anonymous namespace)::WebPage * const)) (args=..., object=0x7fc93a5fa600, 
    function=(void ((anonymous namespace)::WebPage::*)((anonymous namespace)::WebPage * const)) 0x7fc9a089d0ea &lt;(anonymous namespace)::WebPage::close()&gt;)
    at ../../Source/WebKit/Platform/IPC/HandleMessage.h:46
No locals.
#18 0x00007fc9a0bed571 in IPC::handleMessage&lt;Messages::WebPage::Close, WebKit::WebPage, void (WebKit::WebPage::*)()&gt; (decoder=..., object=0x7fc93a5fa600, 
    function=(void ((anonymous namespace)::WebPage::*)((anonymous namespace)::WebPage * const)) 0x7fc9a089d0ea &lt;(anonymous namespace)::WebPage::close()&gt;)
    at ../../Source/WebKit/Platform/IPC/HandleMessage.h:126
        __PRETTY_FUNCTION__ = &quot;void IPC::handleMessage(IPC::Decoder&amp;, C*, MF) [with T = Messages::WebPage::Close; C = WebKit::WebPage; MF = void (WebKit::WebPage::*)()]&quot;
        arguments = empty std::tuple
#19 0x00007fc9a0be6f61 in (anonymous namespace)::WebPage::didReceiveWebPageMessage (this=0x7fc93a5fa600, connection=..., decoder=...)
    at DerivedSources/WebKit2/WebPageMessageReceiver.cpp:732
        __PRETTY_FUNCTION__ = &quot;void WebKit::WebPage::didReceiveWebPageMessage(IPC::Connection&amp;, IPC::Decoder&amp;)&quot;
#20 0x00007fc9a08a832c in (anonymous namespace)::WebPage::didReceiveMessage (
    this=0x7fc93a5fa600, connection=..., decoder=...)
    at ../../Source/WebKit/WebProcess/WebPage/WebPage.cpp:4158
No locals.
#21 0x00007fc9a048df1c in IPC::MessageReceiverMap::dispatchMessage (
    this=0x7b4e1f0, connection=..., decoder=...)
    at ../../Source/WebKit/Platform/IPC/MessageReceiverMap.cpp:123
        messageReceiver = 0x7fc93a5fa610
        __PRETTY_FUNCTION__ = &quot;bool IPC::MessageReceiverMap::dispatchMessage(IPC::Connection&amp;, IPC::Decoder&amp;)&quot;
#22 0x00007fc9a0730e0a in (anonymous namespace)::WebProcess::didReceiveMessage
    (this=0x7b4e180, connection=..., decoder=...)
    at ../../Source/WebKit/WebProcess/WebProcess.cpp:642
        __PRETTY_FUNCTION__ = &quot;virtual void WebKit::WebProcess::didReceiveMessage(IPC::Connection&amp;, IPC::Decoder&amp;)&quot;
#23 0x00007fc9a0476df4 in IPC::Connection::dispatchMessage (
    this=0x7fc9855ea000, decoder=...)
    at ../../Source/WebKit/Platform/IPC/Connection.cpp:901
No locals.
#24 0x00007fc9a0476f67 in IPC::Connection::dispatchMessage (
    this=0x7fc9855ea000, 
    message=std::unique_ptr&lt;IPC::Decoder&gt; containing 0x7fc985564960)
    at ../../Source/WebKit/Platform/IPC/Connection.cpp:928
        oldDidReceiveInvalidMessage = false
#25 0x00007fc9a047715e in IPC::Connection::dispatchOneMessage (
    this=0x7fc9855ea000) at ../../Source/WebKit/Platform/IPC/Connection.cpp:959
        message = std::unique_ptr&lt;IPC::Decoder&gt; containing 0x0
#26 0x00007fc9a0476cda in IPC::Connection::&lt;lambda()&gt;::operator()(void) (
    __closure=0x7fc9855e15c8)
    at ../../Source/WebKit/Platform/IPC/Connection.cpp:895
        protectedThis = {static isRef = &lt;optimized out&gt;, 
          m_ptr = 0x7fc9855ea000}
#27 0x00007fc9a047d2c0 in WTF::Function&lt;void()&gt;::CallableWrapper&lt;IPC::Connection::enqueueIncomingMessage(std::unique_ptr&lt;IPC::Decoder&gt;)::&lt;lambda()&gt; &gt;::call(void) (this=0x7fc9855e15c0) at ../../Source/WTF/wtf/Function.h:102
No locals.
#28 0x0000000002f79ed9 in WTF::Function&lt;void()&gt;::operator()(void) const (
    this=0x7ffd0c45f5f8) at ../../Source/WTF/wtf/Function.h:56
No locals.
#29 0x00007fc997c692aa in WTF::RunLoop::performWork (this=0x7fc9855fa100)
    at ../../Source/WTF/wtf/RunLoop.cpp:106
        function = {
          m_callableWrapper = std::unique_ptr&lt;WTF::Function&lt;void()&gt;::CallableWrapperBase&gt; containing 0x7fc9855e15c0}
        functionsToHandle = 2
#30 0x00007fc997cb3926 in WTF::RunLoop::&lt;lambda(gpointer)&gt;::operator()(gpointer) const (__closure=0x0, userData=0x7fc9855fa100)
    at ../../Source/WTF/wtf/glib/RunLoopGLib.cpp:68
No locals.
#31 0x00007fc997cb394a in WTF::RunLoop::&lt;lambda(gpointer)&gt;::_FUN(gpointer) ()
    at ../../Source/WTF/wtf/glib/RunLoopGLib.cpp:70
No locals.
#32 0x00007fc997cb38c6 in WTF::&lt;lambda(GSource*, GSourceFunc, gpointer)&gt;::operator()(GSource *, GSourceFunc, gpointer) const (__closure=0x0, source=0x7b4e0d0, 
    callback=0x7fc997cb392d &lt;WTF::RunLoop::&lt;lambda(gpointer)&gt;::_FUN(gpointer)&gt;, userData=0x7fc9855fa100) at ../../Source/WTF/wtf/glib/RunLoopGLib.cpp:45
No locals.
#33 0x00007fc997cb38f5 in WTF::&lt;lambda(GSource*, GSourceFunc, gpointer)&gt;::_FUN(GSource *, GSourceFunc, gpointer) ()
    at ../../Source/WTF/wtf/glib/RunLoopGLib.cpp:46
No locals.
#34 0x00007fc9917c87de in g_main_dispatch (context=0x7abdbd0)
    at /home/mcatanzaro/Projects/GNOME/glib/glib/gmain.c:3148
        dispatch = 0x7fc997cb38c8 &lt;WTF::&lt;lambda(GSource*, GSourceFunc, gpointer)&gt;::_FUN(GSource *, GSourceFunc, gpointer)&gt;
        prev_source = 0x0
        was_in_call = 0
        user_data = 0x7fc9855fa100
        callback = 0x7fc997cb392d &lt;WTF::RunLoop::&lt;lambda(gpointer)&gt;::_FUN(gpointer)&gt;
        cb_funcs = 0x7fc991aa0a40 &lt;g_source_callback_funcs&gt;
        cb_data = 0x7b4e040
        need_destroy = 0
        source = 0x7b4e0d0
        current = 0x7aef340
        i = 0
        __func__ = &quot;g_main_dispatch&quot;
#35 0x00007fc9917c967f in g_main_context_dispatch (context=0x7abdbd0)
    at /home/mcatanzaro/Projects/GNOME/glib/glib/gmain.c:3813
No locals.
#36 0x00007fc9917c9863 in g_main_context_iterate (context=0x7abdbd0, block=1, 
    dispatch=1, self=0x7abf150)
    at /home/mcatanzaro/Projects/GNOME/glib/glib/gmain.c:3886
        max_priority = 100
        timeout = 0
        some_ready = 1
        nfds = 4
        allocated_nfds = 4
        fds = 0x7b605e0
#37 0x00007fc9917c9c89 in g_main_loop_run (loop=0x7b4e0b0)
    at /home/mcatanzaro/Projects/GNOME/glib/glib/gmain.c:4082
        self = 0x7abf150
        __func__ = &quot;g_main_loop_run&quot;
#38 0x00007fc997cb3e14 in WTF::RunLoop::run ()
    at ../../Source/WTF/wtf/glib/RunLoopGLib.cpp:96
        runLoop = 
    @0x7fc9855fa100: {&lt;WTF::FunctionDispatcher&gt; = {&lt;WTF::ThreadSafeRefCounted&lt;WTF::FunctionDispatcher&gt;&gt; = {&lt;WTF::ThreadSafeRefCountedBase&gt; = {
                m_refCount = {&lt;std::__atomic_base&lt;unsigned int&gt;&gt; = {
                    static _S_alignment = 4, 
                    _M_i = 20}, &lt;No data fields&gt;}}, &lt;No data fields&gt;}, 
            _vptr.FunctionDispatcher = 0x7fc998d3f660 &lt;vtable for WTF::RunLoop+16&gt;}, m_functionQueueLock = {m_mutex = {__data = {__lock = 0, __count = 0, 
                __owner = 0, __nusers = 0, __kind = 512, __spins = 0, 
                __elision = 0, __list = {__prev = 0x0, __next = 0x0}}, 
              __size = &apos;\000&apos; &lt;repeats 17 times&gt;, &quot;\002&quot;, &apos;\000&apos; &lt;repeats 21 times&gt;, __align = 0}}, m_functionQueue = {m_start = 34, m_end = 38, 
            m_buffer = {&lt;WTF::VectorBufferBase&lt;WTF::Function&lt;void()&gt; &gt;&gt; = {
                m_buffer = 0x7fc9226bc000, m_capacity = 43, 
                m_size = 0}, &lt;No data fields&gt;}, m_iterators = 0x0}, 
          m_mainContext = {m_ptr = 0x7abdbd0}, 
          m_mainLoops = {&lt;WTF::VectorBuffer&lt;WTF::GRefPtr&lt;_GMainLoop&gt;, 0&gt;&gt; = {&lt;WTF::VectorBufferBase&lt;WTF::GRefPtr&lt;_GMainLoop&gt; &gt;&gt; = {m_buffer = 0x7fc9855fa180, 
                m_capacity = 16, 
                m_size = 1}, &lt;No data fields&gt;}, &lt;No data fields&gt;}, m_source = {
            m_ptr = 0x7b4e0d0}}
        mainContext = 0x7abdbd0
        __PRETTY_FUNCTION__ = &quot;static void WTF::RunLoop::run()&quot;
        innermostLoop = 0x7b4e0b0
        nestedMainLoop = 0x7ffd0c45f837
#39 0x00007fc9a0b3c5c3 in (anonymous namespace)::ChildProcessMain&lt;WebKit::WebProcess, WebKit::WebProcessMain&gt; (argc=2, argv=0x7ffd0c45f9f8)
    at ../../Source/WebKit/Shared/unix/ChildProcessMain.h:61
        childMain = warning: RTTI symbol not found for class &apos;WebKit::WebProcessMain&apos;

{&lt;(anonymous namespace)::ChildProcessMainBase&gt; = {&lt;No data fields&gt;}, &lt;No data fields&gt;}
#40 0x00007fc9a0b3c475 in (anonymous namespace)::WebProcessMainUnix (argc=2, 
    argv=0x7ffd0c45f9f8)
    at ../../Source/WebKit/WebProcess/gtk/WebProcessMainGtk.cpp:69
No locals.
#41 0x0000000002f4e7a2 in main (argc=2, argv=0x7ffd0c45f9f8)
    at ../../Source/WebKit/WebProcess/EntryPoint/unix/WebProcessMain.cpp:58
No locals.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1331656</commentid>
    <comment_count>1</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2017-07-24 10:03:00 -0700</bug_when>
    <thetext>For some reason the PlatformDisplay destructor is being run before shutDownEglDisplays is run in an exit handler. That should never happen because the exit handler is registered in PlatformDisplay::initializeEGLDisplay, which is not a static function: it cannot be called until after a PlatformDisplay has been created. So PlatformDisplay is always created first, that means its destructor should be registered first before shutDownEglDisplays is registered, and exit handlers are run like a stack, so it should be last-in, first out. That means shutDownEglDisplays should always execute first at exit time, before the destructor.

For some reason, that is no longer happening. I don&apos;t know why.

I would be very tempted to blame this on the switch to non-threadsafe statics, except that has not landed yet, so that cannot be to blame.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1331907</commentid>
    <comment_count>2</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2017-07-25 01:34:55 -0700</bug_when>
    <thetext>This regressed in r218629. Before r218629, the wayland nested compositor display was a singleton created on demand by AcceleratedSurfaceWayland, but now it&apos;s created unconditionally on web process creation when a valid display name is received from the UI process. The side effect of this is that now the shared display is created after the nested compositor display that is not a singleton anymore. The atexit used by PlatformDisplay to shutdown egl display assumes that it will be registered by the shared display. Since we switched to on demand AC mode, the shared display is only used in the web process when entering AC mode, that&apos;s why it only crashes when we have entered AC at least once. We just need to ensure that the shared display is created before the nested compositor display.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1331908</commentid>
    <comment_count>3</comment_count>
      <attachid>316360</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2017-07-25 01:38:27 -0700</bug_when>
    <thetext>Created attachment 316360
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1331920</commentid>
    <comment_count>4</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2017-07-25 04:38:24 -0700</bug_when>
    <thetext>Committed r219866: &lt;http://trac.webkit.org/changeset/219866&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>316360</attachid>
            <date>2017-07-25 01:38:27 -0700</date>
            <delta_ts>2017-07-25 03:20:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>wk2-nested-wayland-display.diff</filename>
            <type>text/plain</type>
            <size>2425</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKaW5kZXggZTY5NGM2YzdiMjQuLmY3MDc3MDllMzYwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsx
LDIyIEBACisyMDE3LTA3LTI1ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlh
LmNvbT4KKworICAgICAgICBSRUdSRVNTSU9OKHIyMTg2MjkpOiBbR1RLXSBBU1NFUlRJT04gRkFJ
TEVEOiBtX2VnbERpc3BsYXkgPT0gRUdMX05PX0RJU1BMQVkgaW4gV2ViQ29yZTo6UGxhdGZvcm1E
aXNwbGF5Ojp+UGxhdGZvcm1EaXNwbGF5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNzQ3ODkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBCZWZvcmUgcjIxODYyOSwgdGhlIHdheWxhbmQgbmVzdGVkIGNvbXBv
c2l0b3IgZGlzcGxheSB3YXMgYSBzaW5nbGV0b24gY3JlYXRlZCBvbiBkZW1hbmQgYnkKKyAgICAg
ICAgQWNjZWxlcmF0ZWRTdXJmYWNlV2F5bGFuZCwgYnV0IG5vdyBpdCdzIGNyZWF0ZWQgdW5jb25k
aXRpb25hbGx5IG9uIHdlYiBwcm9jZXNzIGNyZWF0aW9uIHdoZW4gYSB2YWxpZCBkaXNwbGF5Cisg
ICAgICAgIG5hbWUgaXMgcmVjZWl2ZWQgZnJvbSB0aGUgVUkgcHJvY2Vzcy4gVGhlIHNpZGUgZWZm
ZWN0IG9mIHRoaXMgaXMgdGhhdCBub3cgdGhlIHNoYXJlZCBkaXNwbGF5IGlzIGNyZWF0ZWQgYWZ0
ZXIKKyAgICAgICAgdGhlIG5lc3RlZCBjb21wb3NpdG9yIGRpc3BsYXkgdGhhdCBpcyBub3QgYSBz
aW5nbGV0b24gYW55bW9yZS4gVGhlIGF0ZXhpdCB1c2VkIGJ5IFBsYXRmb3JtRGlzcGxheSB0byBz
aHV0ZG93bgorICAgICAgICBlZ2wgZGlzcGxheSBhc3N1bWVzIHRoYXQgaXQgd2lsbCBiZSByZWdp
c3RlcmVkIGJ5IHRoZSBzaGFyZWQgZGlzcGxheS4gU2luY2Ugd2Ugc3dpdGNoZWQgdG8gb24gZGVt
YW5kIEFDIG1vZGUsCisgICAgICAgIHRoZSBzaGFyZWQgZGlzcGxheSBpcyBvbmx5IHVzZWQgaW4g
dGhlIHdlYiBwcm9jZXNzIHdoZW4gZW50ZXJpbmcgQUMgbW9kZSwgdGhhdCdzIHdoeSBpdCBvbmx5
IGNyYXNoZXMgd2hlbiB3ZQorICAgICAgICBoYXZlIGVudGVyZWQgQUMgYXQgbGVhc3Qgb25jZS4g
V2UganVzdCBuZWVkIHRvIGVuc3VyZSB0aGF0IHRoZSBzaGFyZWQgZGlzcGxheSBpcyBjcmVhdGVk
IGJlZm9yZSB0aGUgbmVzdGVkCisgICAgICAgIGNvbXBvc2l0b3IgZGlzcGxheS4KKworICAgICAg
ICAqIFdlYlByb2Nlc3MvZ3RrL1dheWxhbmRDb21wb3NpdG9yRGlzcGxheS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldheWxhbmRDb21wb3NpdG9yRGlzcGxheTo6Y3JlYXRlKTogQ2hlY2sgd2UgYXJl
IHVuZGVyIHdheWxhbmQgYmVmb3JlIGNyZWF0aW5nIHRoZSBXYXlsYW5kQ29tcG9zaXRvckRpc3Bs
YXkuCisKIDIwMTctMDctMjQgIE1pY2hhZWwgQ2F0YW56YXJvICA8bWNhdGFuemFyb0BpZ2FsaWEu
Y29tPgogCiAgICAgICAgIFtHVEtdIEFTU0VSVElPTiBGQUlMRUQ6IGNsaWVudCBpbiBXZWJLaXQ6
Okljb25EYXRhYmFzZTo6c2V0Q2xpZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvZ3RrL1dheWxhbmRDb21wb3NpdG9yRGlzcGxheS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvZ3RrL1dheWxhbmRDb21wb3NpdG9yRGlzcGxheS5jcHAKaW5kZXggODExMmVhZGM1
N2MuLmEwNDI5Yzg3M2FlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvZ3Rr
L1dheWxhbmRDb21wb3NpdG9yRGlzcGxheS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL2d0ay9XYXlsYW5kQ29tcG9zaXRvckRpc3BsYXkuY3BwCkBAIC00MCw2ICs0MCw5IEBAIHN0
ZDo6dW5pcXVlX3B0cjxXYXlsYW5kQ29tcG9zaXRvckRpc3BsYXk+IFdheWxhbmRDb21wb3NpdG9y
RGlzcGxheTo6Y3JlYXRlKGNvbnN0CiAgICAgaWYgKGRpc3BsYXlOYW1lLmlzTnVsbCgpKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKIAorICAgIGlmIChQbGF0Zm9ybURpc3BsYXk6OnNoYXJlZERp
c3BsYXkoKS50eXBlKCkgIT0gUGxhdGZvcm1EaXNwbGF5OjpUeXBlOjpXYXlsYW5kKQorICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKwogICAgIHN0cnVjdCB3bF9kaXNwbGF5KiBkaXNwbGF5ID0gd2xf
ZGlzcGxheV9jb25uZWN0KGRpc3BsYXlOYW1lLnV0ZjgoKS5kYXRhKCkpOwogICAgIGlmICghZGlz
cGxheSkgewogICAgICAgICBXVEZMb2dBbHdheXMoIlBsYXRmb3JtRGlzcGxheVdheWxhbmQgaW5p
dGlhbGl6YXRpb246IGZhaWxlZCB0byBjb25uZWN0IHRvIHRoZSBXYXlsYW5kIGRpc3BsYXk6ICVz
IiwgZGlzcGxheU5hbWUudXRmOCgpLmRhdGEoKSk7Cg==
</data>
<flag name="review"
          id="337048"
          type_id="1"
          status="+"
          setter="zan"
    />
          </attachment>
      

    </bug>

</bugzilla>