<?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>199572</bug_id>
          
          <creation_ts>2019-07-08 05:02:55 -0700</creation_ts>
          <short_desc>REGRESSION(r246671): [WPE][GTK] Crash in NetworkProcess since the DNS cache landed</short_desc>
          <delta_ts>2019-07-08 11:06:35 -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>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=199579</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="Claudio Saavedra">csaavedra</reporter>
          <assigned_to name="Claudio Saavedra">csaavedra</assigned_to>
          <cc>bugs-noreply</cc>
    
    <cc>cgarcia</cc>
    
    <cc>commit-queue</cc>
    
    <cc>mcatanzaro</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1550794</commentid>
    <comment_count>0</comment_count>
    <who name="Claudio Saavedra">csaavedra</who>
    <bug_when>2019-07-08 05:02:55 -0700</bug_when>
    <thetext>I&apos;ve noticed that several tests have started crashing the network process sporadically and all they have in common is that the crashing starts right after the DNS cache was landed. Opening this bug to track this potential regression.

Some stacktraces to exemplify this:

https://build.webkit.org/results/GTK%20Linux%2064-bit%20Release%20(Tests)/r247200%20(10899)/imported/w3c/web-platform-tests/html/dom/interfaces.worker-crash-log.txt
https://build.webkit.org/results/GTK%20Linux%2064-bit%20Release%20(Tests)/r247200%20(10899)/imported/w3c/web-platform-tests/cors/redirect-preflight-2-crash-log.txt
https://build.webkit.org/results/GTK%20Linux%2064-bit%20Release%20(Tests)/r247200%20(10899)/imported/w3c/web-platform-tests/websockets/interfaces/WebSocket/readyState/005-crash-log.txt
https://build.webkit.org/results/GTK%20Linux%2064-bit%20Release%20(Tests)/r247200%20(10899)/imported/w3c/web-platform-tests/websockets/interfaces/WebSocket/url/006-crash-log.txt
https://build.webkit.org/results/GTK%20Linux%2064-bit%20Release%20(Tests)/r247200%20(10899)/imported/w3c/web-platform-tests/websockets/keeping-connection-open/001-crash-log.txt
https://build.webkit.org/results/GTK%20Linux%2064-bit%20Release%20(Tests)/r247200%20(10899)/imported/w3c/web-platform-tests/websockets/opening-handshake/005-crash-log.txt
https://build.webkit.org/results/GTK%20Linux%2064-bit%20Release%20(Tests)/r247204%20(10901)/imported/w3c/web-platform-tests/content-security-policy/connect-src/connect-src-websocket-blocked.sub-crash-log.txt

The stacktraces don&apos;t tell much at first sight, but since it seems to be happening deep in glib, there might be some memory corruption somewhere, not sure if related to thread-safety issues in the dns cache resolver (or libsoup even?).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1550796</commentid>
    <comment_count>1</comment_count>
    <who name="Claudio Saavedra">csaavedra</who>
    <bug_when>2019-07-08 05:06:16 -0700</bug_when>
    <thetext>The historical of the crashes:

https://webkit-test-results.webkit.org/dashboards/flakiness_dashboard.html#showAllRuns=true&amp;tests=imported%2Fw3c%2Fweb-platform-tests%2Fcontent-security-policy%2Fconnect-src%2Fconnect-src-websocket-blocked.sub.html%20imported%2Fw3c%2Fweb-platform-tests%2Fwebsockets%2Fopening-handshake%20imported%2Fw3c%2Fweb-platform-tests%2Fwebsockets%2Fkeeping-connection-open%20imported%2Fw3c%2Fweb-platform-tests%2Fwebsockets%2Finterfaces%2FWebSocket%2Furl%2F006%20imported%2Fw3c%2Fweb-platform-tests%2Fwebsockets%2Finterfaces%2FWebSocket%2FreadyState%2F005</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1550798</commentid>
    <comment_count>2</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2019-07-08 06:27:51 -0700</bug_when>
    <thetext>At least most of these (anything involving magazine_chain_pop_head) are definitely memory corruption. Probably the rest are too. The backtraces are only going to lead you on a false chase. What we need are backtraces from asan or valgrind to point to the source of the memory corruption, not these gdb traces that only point to where it eventually blew up.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1550799</commentid>
    <comment_count>3</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2019-07-08 06:30:06 -0700</bug_when>
    <thetext>BTW if we don&apos;t solve it soon, then we should roll it out. The DNS cache is only a small thing, not worth a serious regression.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1550806</commentid>
    <comment_count>4</comment_count>
    <who name="Claudio Saavedra">csaavedra</who>
    <bug_when>2019-07-08 07:55:53 -0700</bug_when>
    <thetext>==27300== Thread 1:
==27300== Invalid read of size 8
==27300==    at 0xE4B5029: g_error_free (gerror.c:493)
==27300==    by 0x6428719: webkitCachedResolverLookupByNameAsync(_GResolver*, char const*, _GCancellable*, void (*)(_GObject*, _GAsyncResult*, void*), void*)::{lambda(_GObject*, _GAsyncResult*, void*)#1}::_FUN(_
GObject*, _GAsyncResult*, void*) (in /home/claudio/git/gnome/WebKit/WebKitBuild/Release/lib/libwebkit2gtk-4.0.so.37.38.1)
==27300==    by 0xED40AF8: g_task_return_now (gtask.c:1148)
==27300==    by 0xED40B38: complete_in_idle_cb (gtask.c:1162)
==27300==    by 0xE4C99B7: g_main_dispatch (gmain.c:3182)
==27300==    by 0xE4C99B7: g_main_context_dispatch (gmain.c:3847)
==27300==    by 0xE4C9D77: g_main_context_iterate.isra.26 (gmain.c:3920)
==27300==    by 0xE4CA061: g_main_loop_run (gmain.c:4116)
==27300==    by 0xAAEEA2F: WTF::RunLoop::run() (in /home/claudio/git/gnome/WebKit/WebKitBuild/Release/lib/libjavascriptcoregtk-4.0.so.18.14.1)
==27300==    by 0x6430329: int WebKit::AuxiliaryProcessMain&lt;WebKit::NetworkProcess, WebKit::NetworkProcessMain&gt;(int, char**) (in /home/claudio/git/gnome/WebKit/WebKitBuild/Release/lib/libwebkit2gtk-4.0.so.37.38.
1)
==27300==    by 0xFC7B09A: (below main) (libc-start.c:308)
==27300==  Address 0x5c749bd8 is 8 bytes inside a block of size 16 free&apos;d
==27300==    at 0x48369AB: free (vg_replace_malloc.c:530)
==27300==    by 0xE205350: lookup_resolved (soup-address.c:762)
==27300==    by 0xED40AF8: g_task_return_now (gtask.c:1148)
==27300==    by 0xED41575: g_task_return (gtask.c:1206)
==27300==    by 0x6428744: webkitCachedResolverLookupByNameAsync(_GResolver*, char const*, _GCancellable*, void (*)(_GObject*, _GAsyncResult*, void*), void*)::{lambda(_GObject*, _GAsyncResult*, void*)#1}::_FUN(_
GObject*, _GAsyncResult*, void*) (in /home/claudio/git/gnome/WebKit/WebKitBuild/Release/lib/libwebkit2gtk-4.0.so.37.38.1)
==27300==    by 0xED40AF8: g_task_return_now (gtask.c:1148)
==27300==    by 0xED40B38: complete_in_idle_cb (gtask.c:1162)
==27300==    by 0xE4C99B7: g_main_dispatch (gmain.c:3182)
==27300==    by 0xE4C99B7: g_main_context_dispatch (gmain.c:3847)
==27300==    by 0xE4C9D77: g_main_context_iterate.isra.26 (gmain.c:3920)
==27300==    by 0xE4CA061: g_main_loop_run (gmain.c:4116)
==27300==    by 0xAAEEA2F: WTF::RunLoop::run() (in /home/claudio/git/gnome/WebKit/WebKitBuild/Release/lib/libjavascriptcoregtk-4.0.so.18.14.1)
==27300==    by 0x6430329: int WebKit::AuxiliaryProcessMain&lt;WebKit::NetworkProcess, WebKit::NetworkProcessMain&gt;(int, char**) (in /home/claudio/git/gnome/WebKit/WebKitBuild/Release/lib/libwebkit2gtk-4.0.so.37.38.
1)
==27300==    by 0xFC7B09A: (below main) (libc-start.c:308)
==27300==  Block was alloc&apos;d at
==27300==    at 0x483577F: malloc (vg_replace_malloc.c:299)
==27300==    by 0xE4CF2E0: g_malloc (gmem.c:99)
==27300==    by 0xE4E6782: g_slice_alloc (gslice.c:1024)
==27300==    by 0xE4B4E2C: g_error_new_valist (gerror.c:410)
==27300==    by 0xED42077: g_task_return_new_error (gtask.c:1811)
==27300==    by 0xED44C75: do_lookup_by_name (gthreadedresolver.c:123)
==27300==    by 0xED416A2: g_task_thread_pool_thread (gtask.c:1331)
==27300==    by 0xE4F19B2: g_thread_pool_thread_proxy (gthreadpool.c:307)
==27300==    by 0xE4F1054: g_thread_proxy (gthread.c:784)
==27300==    by 0xDD5BFA2: start_thread (pthread_create.c:486)
==27300==    by 0xFD504CE: clone (clone.S:95)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1550807</commentid>
    <comment_count>5</comment_count>
      <attachid>373625</attachid>
    <who name="Claudio Saavedra">csaavedra</who>
    <bug_when>2019-07-08 08:01:12 -0700</bug_when>
    <thetext>Created attachment 373625
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1550809</commentid>
    <comment_count>6</comment_count>
      <attachid>373625</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2019-07-08 08:22:57 -0700</bug_when>
    <thetext>Comment on attachment 373625
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=373625&amp;action=review

Score +1 for valgrind

&gt; Source/WebKit/NetworkProcess/glib/WebKitCachedResolver.cpp:111
&gt; -            g_task_return_error(task.get(), error.get());
&gt; +            g_task_return_error(task.get(), error);

My preference is to keep using GUniqueOutPtr -- so that we never hold ownership in a raw pointer -- and use error.release() here instead. But this is fine too.

&gt; Source/WebKit/NetworkProcess/glib/WebKitCachedResolver.cpp:173
&gt; -            g_task_return_error(task.get(), error.get());
&gt; +            g_task_return_error(task.get(), error);

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1550812</commentid>
    <comment_count>7</comment_count>
      <attachid>373625</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2019-07-08 08:36:13 -0700</bug_when>
    <thetext>Comment on attachment 373625
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=373625&amp;action=review

&gt;&gt; Source/WebKit/NetworkProcess/glib/WebKitCachedResolver.cpp:111
&gt;&gt; +            g_task_return_error(task.get(), error);
&gt; 
&gt; My preference is to keep using GUniqueOutPtr -- so that we never hold ownership in a raw pointer -- and use error.release() here instead. But this is fine too.

Good catch, thanks Claudio! I would also keep the smart pointer leaking it only when transferred.

&gt; Source/WebKit/NetworkProcess/glib/WebKitCachedResolver.cpp:166
&gt; +        GError* error;

This is missing the nullptr initialization.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1550819</commentid>
    <comment_count>8</comment_count>
      <attachid>373625</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2019-07-08 08:59:39 -0700</bug_when>
    <thetext>Comment on attachment 373625
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=373625&amp;action=review

&gt;&gt;&gt; Source/WebKit/NetworkProcess/glib/WebKitCachedResolver.cpp:111
&gt;&gt;&gt; +            g_task_return_error(task.get(), error);
&gt;&gt; 
&gt;&gt; My preference is to keep using GUniqueOutPtr -- so that we never hold ownership in a raw pointer -- and use error.release() here instead. But this is fine too.
&gt; 
&gt; Good catch, thanks Claudio! I would also keep the smart pointer leaking it only when transferred.

Claudio noticed that GUniqueOutPtr::release returns a GUniquePtr, so it would have to be error.release().release(), which is silly. So I think the smart pointer is undesirable here.

I wonder if we have much code that really benefits from that behavior, or if we could change GUniqueOutPtr::release to return the raw pointer directly, as I would have expected.

&gt;&gt; Source/WebKit/NetworkProcess/glib/WebKitCachedResolver.cpp:166
&gt;&gt; +        GError* error;
&gt; 
&gt; This is missing the nullptr initialization.

Oh no, very good catch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1550820</commentid>
    <comment_count>9</comment_count>
      <attachid>373629</attachid>
    <who name="Claudio Saavedra">csaavedra</who>
    <bug_when>2019-07-08 09:00:28 -0700</bug_when>
    <thetext>Created attachment 373629
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1550824</commentid>
    <comment_count>10</comment_count>
      <attachid>373629</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2019-07-08 09:07:57 -0700</bug_when>
    <thetext>Comment on attachment 373629
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=373629&amp;action=review

cq+ is going to fail because you don&apos;t have  the Reviewed by

&gt; Source/WebKit/ChangeLog:10
&gt; +        but passed onto the caller.
&gt; +        * NetworkProcess/glib/WebKitCachedResolver.cpp:

Missing blank line here.

&gt; Source/WebKit/NetworkProcess/glib/WebKitCachedResolver.cpp:111
&gt; -            g_task_return_error(task.get(), error.get());
&gt; +            g_task_return_error(task.get(), error.release().release());

Carlos, what do you think?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1550826</commentid>
    <comment_count>11</comment_count>
      <attachid>373631</attachid>
    <who name="Claudio Saavedra">csaavedra</who>
    <bug_when>2019-07-08 09:11:35 -0700</bug_when>
    <thetext>Created attachment 373631
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1550827</commentid>
    <comment_count>12</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2019-07-08 09:12:18 -0700</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #8)
&gt; Comment on attachment 373625 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=373625&amp;action=review
&gt; 
&gt; &gt;&gt;&gt; Source/WebKit/NetworkProcess/glib/WebKitCachedResolver.cpp:111
&gt; &gt;&gt;&gt; +            g_task_return_error(task.get(), error);
&gt; &gt;&gt; 
&gt; &gt;&gt; My preference is to keep using GUniqueOutPtr -- so that we never hold ownership in a raw pointer -- and use error.release() here instead. But this is fine too.
&gt; &gt; 
&gt; &gt; Good catch, thanks Claudio! I would also keep the smart pointer leaking it only when transferred.
&gt; 
&gt; Claudio noticed that GUniqueOutPtr::release returns a GUniquePtr, so it
&gt; would have to be error.release().release(), which is silly. So I think the
&gt; smart pointer is undesirable here.
&gt; 
&gt; I wonder if we have much code that really benefits from that behavior, or if
&gt; we could change GUniqueOutPtr::release to return the raw pointer directly,
&gt; as I would have expected.

I think the idea here was to convert an OutPtr (that exists only because outPtr is not possible with std::unique_ptr) into a Ptr which is actually a std::unique_ptr. I don&apos;t know if we are actually using it that way. We could probably add leakPtr() for the release().release() case.

&gt; &gt;&gt; Source/WebKit/NetworkProcess/glib/WebKitCachedResolver.cpp:166
&gt; &gt;&gt; +        GError* error;
&gt; &gt; 
&gt; &gt; This is missing the nullptr initialization.
&gt; 
&gt; Oh no, very good catch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1550841</commentid>
    <comment_count>13</comment_count>
    <who name="Claudio Saavedra">csaavedra</who>
    <bug_when>2019-07-08 09:40:09 -0700</bug_when>
    <thetext>Committed r247209: &lt;https://trac.webkit.org/changeset/247209&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1550878</commentid>
    <comment_count>14</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2019-07-08 11:06:24 -0700</bug_when>
    <thetext>(In reply to Carlos Garcia Campos from comment #12)
&gt; I think the idea here was to convert an OutPtr (that exists only because
&gt; outPtr is not possible with std::unique_ptr) into a Ptr which is actually a
&gt; std::unique_ptr. I don&apos;t know if we are actually using it that way. We could
&gt; probably add leakPtr() for the release().release() case.

There were only three places using release before now. Two of them also want the raw pointer (they&apos;re doing release().release()) and the other is test code. Making a GUniquePtr from the raw pointer in that case is trivial:

diff --git a/Tools/TestWebKitAPI/Tests/WTF/glib/GUniquePtr.cpp b/Tools/TestWebKitAPI/Tests/WTF/glib/GUniquePtr.cpp
index 11f02c7b0f7..288591c8e3f 100644
--- a/Tools/TestWebKitAPI/Tests/WTF/glib/GUniquePtr.cpp
+++ b/Tools/TestWebKitAPI/Tests/WTF/glib/GUniquePtr.cpp
@@ -184,7 +184,7 @@ TEST(WTF_GUniquePtr, OutPtr)
     {
         GUniqueOutPtr&lt;char&gt; a;
         returnOutChar(&amp;a.outPtr());
-        GUniquePtr&lt;char&gt; b = a.release();
+        GUniquePtr&lt;char&gt; b(a.release());
         ASSERT_STREQ(actual.str().c_str(), takeLogStr().c_str());
         actual &lt;&lt; &quot;g_free(&quot; &lt;&lt; b.get() &lt;&lt; &quot;);&quot;;
     }

So my vote is to just change release().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1550879</commentid>
    <comment_count>15</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2019-07-08 11:06:35 -0700</bug_when>
    <thetext>Bug #199579.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>373625</attachid>
            <date>2019-07-08 08:01:12 -0700</date>
            <delta_ts>2019-07-08 09:00:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-199572-20190708180111.patch</filename>
            <type>text/plain</type>
            <size>3906</size>
            <attacher name="Claudio Saavedra">csaavedra</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ3MjAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDdkNjU2ZTA0NTkyZTE3ZjQ1
YWQxY2QwYmE1YTViZGRkZTE5ZmM0MzkuLjNlOTY0ZTNkNjJlNmM0MWIyN2YyNTM4NGJlZjM4YWUw
ZTM3MWE1OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTktMDctMDggIENsYXVkaW8g
U2FhdmVkcmEgIDxjc2FhdmVkcmFAaWdhbGlhLmNvbT4KKworICAgICAgICBSRUdSRVNTSU9OKHIy
NDY2NzEpOiBbV1BFXVtHVEtdIENyYXNoIGluIE5ldHdvcmtQcm9jZXNzIHNpbmNlIHRoZSBETlMg
Y2FjaGUgbGFuZGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xOTk1NzIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBUaGUgR0Vycm9yIGNvbWluZyBmcm9tIHRoZSB3cmFwcGVkIHJlc29sdmVyIHNob3VsZG4n
dCBiZSBmcmVlZCwKKyAgICAgICAgYnV0IHBhc3NlZCBvbnRvIHRoZSBjYWxsZXIuCisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvZ2xpYi9XZWJLaXRDYWNoZWRSZXNvbHZlci5jcHA6CisgICAgICAg
ICh3ZWJraXRDYWNoZWRSZXNvbHZlckxvb2t1cEJ5TmFtZUFzeW5jKToKKyAgICAgICAgKHdlYmtp
dENhY2hlZFJlc29sdmVyTG9va3VwQnlOYW1lV2l0aEZsYWdzQXN5bmMpOgorCiAyMDE5LTA3LTA4
ICBNaWNoYWVsIENhdGFuemFybyAgPG1jYXRhbnphcm9AaWdhbGlhLmNvbT4KIAogICAgICAgICBb
R1RLXSBWaWV3R2VzdHVyZUNvbnRyb2xsZXIgY29uc3RydWN0b3IgbGVhdmVzIG1fZGlyZWN0aW9u
IHVuaW5pdGlhbGl6ZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Z2xpYi9XZWJLaXRDYWNoZWRSZXNvbHZlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2dsaWIvV2ViS2l0Q2FjaGVkUmVzb2x2ZXIuY3BwCmluZGV4IGM1NDRiNjU5MDYyNTJhZmJl
ZmE3MGJlMGQ3ZmQ2YmNiNTVhMDkyZTguLjdjZTgzMjM2ODliNzMwYjY0ZGI4M2RlNGRjZTBmZTZh
MDdlMTNjYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvZ2xpYi9X
ZWJLaXRDYWNoZWRSZXNvbHZlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9nbGliL1dlYktpdENhY2hlZFJlc29sdmVyLmNwcApAQCAtMTAxLDE0ICsxMDEsMTQgQEAgc3Rh
dGljIHZvaWQgd2Via2l0Q2FjaGVkUmVzb2x2ZXJMb29rdXBCeU5hbWVBc3luYyhHUmVzb2x2ZXIq
IHJlc29sdmVyLCBjb25zdCBjaGEKICAgICBnX3Rhc2tfc2V0X3Rhc2tfZGF0YSh0YXNrLmdldCgp
LCBhc3luY0RhdGEsIHJlaW50ZXJwcmV0X2Nhc3Q8R0Rlc3Ryb3lOb3RpZnk+KGRlc3Ryb3lMb29r
dXBBc3luY0RhdGEpKTsKICAgICBnX3Jlc29sdmVyX2xvb2t1cF9ieV9uYW1lX2FzeW5jKHByaXYt
PndyYXBwZWRSZXNvbHZlci5nZXQoKSwgaG9zdG5hbWUsIGNhbmNlbGxhYmxlLCBbXShHT2JqZWN0
KiByZXNvbHZlciwgR0FzeW5jUmVzdWx0KiByZXN1bHQsIGdwb2ludGVyIHVzZXJEYXRhKSB7CiAg
ICAgICAgIEdSZWZQdHI8R1Rhc2s+IHRhc2sgPSBhZG9wdEdSZWYoR19UQVNLKHVzZXJEYXRhKSk7
Ci0gICAgICAgIEdVbmlxdWVPdXRQdHI8R0Vycm9yPiBlcnJvcjsKLSAgICAgICAgaWYgKGF1dG8q
IGFkZHJlc3NMaXN0ID0gZ19yZXNvbHZlcl9sb29rdXBfYnlfbmFtZV9maW5pc2goR19SRVNPTFZF
UihyZXNvbHZlciksIHJlc3VsdCwgJmVycm9yLm91dFB0cigpKSkgeworICAgICAgICBHRXJyb3Iq
IGVycm9yID0gbnVsbHB0cjsKKyAgICAgICAgaWYgKGF1dG8qIGFkZHJlc3NMaXN0ID0gZ19yZXNv
bHZlcl9sb29rdXBfYnlfbmFtZV9maW5pc2goR19SRVNPTFZFUihyZXNvbHZlciksIHJlc3VsdCwg
JmVycm9yKSkgewogICAgICAgICAgICAgYXV0byogcHJpdiA9IFdFQktJVF9DQUNIRURfUkVTT0xW
RVIoZ190YXNrX2dldF9zb3VyY2Vfb2JqZWN0KHRhc2suZ2V0KCkpKS0+cHJpdjsKICAgICAgICAg
ICAgIGF1dG8qIGFzeW5jRGF0YSA9IHN0YXRpY19jYXN0PExvb2t1cEFzeW5jRGF0YSo+KGdfdGFz
a19nZXRfdGFza19kYXRhKHRhc2suZ2V0KCkpKTsKICAgICAgICAgICAgIHByaXYtPmNhY2hlLnVw
ZGF0ZShhc3luY0RhdGEtPmhvc3RuYW1lLCBhZGRyZXNzTGlzdEdMaXN0VG9WZWN0b3IoYWRkcmVz
c0xpc3QpKTsKICAgICAgICAgICAgIGdfdGFza19yZXR1cm5fcG9pbnRlcih0YXNrLmdldCgpLCBh
ZGRyZXNzTGlzdCwgcmVpbnRlcnByZXRfY2FzdDxHRGVzdHJveU5vdGlmeT4oZ19yZXNvbHZlcl9m
cmVlX2FkZHJlc3NlcykpOwogICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIGdfdGFza19yZXR1
cm5fZXJyb3IodGFzay5nZXQoKSwgZXJyb3IuZ2V0KCkpOworICAgICAgICAgICAgZ190YXNrX3Jl
dHVybl9lcnJvcih0YXNrLmdldCgpLCBlcnJvcik7CiAgICAgfSwgdGFzay5sZWFrUmVmKCkpOwog
fQogCkBAIC0xNjMsMTQgKzE2MywxNCBAQCBzdGF0aWMgdm9pZCB3ZWJraXRDYWNoZWRSZXNvbHZl
ckxvb2t1cEJ5TmFtZVdpdGhGbGFnc0FzeW5jKEdSZXNvbHZlciogcmVzb2x2ZXIsCiAgICAgZ190
YXNrX3NldF90YXNrX2RhdGEodGFzay5nZXQoKSwgYXN5bmNEYXRhLCByZWludGVycHJldF9jYXN0
PEdEZXN0cm95Tm90aWZ5PihkZXN0cm95TG9va3VwQXN5bmNEYXRhKSk7CiAgICAgZ19yZXNvbHZl
cl9sb29rdXBfYnlfbmFtZV93aXRoX2ZsYWdzX2FzeW5jKHByaXYtPndyYXBwZWRSZXNvbHZlci5n
ZXQoKSwgaG9zdG5hbWUsIGZsYWdzLCBjYW5jZWxsYWJsZSwgW10oR09iamVjdCogcmVzb2x2ZXIs
IEdBc3luY1Jlc3VsdCogcmVzdWx0LCBncG9pbnRlciB1c2VyRGF0YSkgewogICAgICAgICBHUmVm
UHRyPEdUYXNrPiB0YXNrID0gYWRvcHRHUmVmKEdfVEFTSyh1c2VyRGF0YSkpOwotICAgICAgICBH
VW5pcXVlT3V0UHRyPEdFcnJvcj4gZXJyb3I7Ci0gICAgICAgIGlmIChhdXRvKiBhZGRyZXNzTGlz
dCA9IGdfcmVzb2x2ZXJfbG9va3VwX2J5X25hbWVfd2l0aF9mbGFnc19maW5pc2goR19SRVNPTFZF
UihyZXNvbHZlciksIHJlc3VsdCwgJmVycm9yLm91dFB0cigpKSkgeworICAgICAgICBHRXJyb3Iq
IGVycm9yOworICAgICAgICBpZiAoYXV0byogYWRkcmVzc0xpc3QgPSBnX3Jlc29sdmVyX2xvb2t1
cF9ieV9uYW1lX3dpdGhfZmxhZ3NfZmluaXNoKEdfUkVTT0xWRVIocmVzb2x2ZXIpLCByZXN1bHQs
ICZlcnJvcikpIHsKICAgICAgICAgICAgIGF1dG8qIHByaXYgPSBXRUJLSVRfQ0FDSEVEX1JFU09M
VkVSKGdfdGFza19nZXRfc291cmNlX29iamVjdCh0YXNrLmdldCgpKSktPnByaXY7CiAgICAgICAg
ICAgICBhdXRvKiBhc3luY0RhdGEgPSBzdGF0aWNfY2FzdDxMb29rdXBBc3luY0RhdGEqPihnX3Rh
c2tfZ2V0X3Rhc2tfZGF0YSh0YXNrLmdldCgpKSk7CiAgICAgICAgICAgICBwcml2LT5jYWNoZS51
cGRhdGUoYXN5bmNEYXRhLT5ob3N0bmFtZSwgYWRkcmVzc0xpc3RHTGlzdFRvVmVjdG9yKGFkZHJl
c3NMaXN0KSwgYXN5bmNEYXRhLT5kbnNDYWNoZVR5cGUpOwogICAgICAgICAgICAgZ190YXNrX3Jl
dHVybl9wb2ludGVyKHRhc2suZ2V0KCksIGFkZHJlc3NMaXN0LCByZWludGVycHJldF9jYXN0PEdE
ZXN0cm95Tm90aWZ5PihnX3Jlc29sdmVyX2ZyZWVfYWRkcmVzc2VzKSk7CiAgICAgICAgIH0gZWxz
ZQotICAgICAgICAgICAgZ190YXNrX3JldHVybl9lcnJvcih0YXNrLmdldCgpLCBlcnJvci5nZXQo
KSk7CisgICAgICAgICAgICBnX3Rhc2tfcmV0dXJuX2Vycm9yKHRhc2suZ2V0KCksIGVycm9yKTsK
ICAgICB9LCB0YXNrLmxlYWtSZWYoKSk7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>373629</attachid>
            <date>2019-07-08 09:00:28 -0700</date>
            <delta_ts>2019-07-08 09:11:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-199572-20190708190027.patch</filename>
            <type>text/plain</type>
            <size>2298</size>
            <attacher name="Claudio Saavedra">csaavedra</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ3MjAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDdkNjU2ZTA0NTkyZTE3ZjQ1
YWQxY2QwYmE1YTViZGRkZTE5ZmM0MzkuLjNlOTY0ZTNkNjJlNmM0MWIyN2YyNTM4NGJlZjM4YWUw
ZTM3MWE1OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTktMDctMDggIENsYXVkaW8g
U2FhdmVkcmEgIDxjc2FhdmVkcmFAaWdhbGlhLmNvbT4KKworICAgICAgICBSRUdSRVNTSU9OKHIy
NDY2NzEpOiBbV1BFXVtHVEtdIENyYXNoIGluIE5ldHdvcmtQcm9jZXNzIHNpbmNlIHRoZSBETlMg
Y2FjaGUgbGFuZGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xOTk1NzIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBUaGUgR0Vycm9yIGNvbWluZyBmcm9tIHRoZSB3cmFwcGVkIHJlc29sdmVyIHNob3VsZG4n
dCBiZSBmcmVlZCwKKyAgICAgICAgYnV0IHBhc3NlZCBvbnRvIHRoZSBjYWxsZXIuCisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvZ2xpYi9XZWJLaXRDYWNoZWRSZXNvbHZlci5jcHA6CisgICAgICAg
ICh3ZWJraXRDYWNoZWRSZXNvbHZlckxvb2t1cEJ5TmFtZUFzeW5jKToKKyAgICAgICAgKHdlYmtp
dENhY2hlZFJlc29sdmVyTG9va3VwQnlOYW1lV2l0aEZsYWdzQXN5bmMpOgorCiAyMDE5LTA3LTA4
ICBNaWNoYWVsIENhdGFuemFybyAgPG1jYXRhbnphcm9AaWdhbGlhLmNvbT4KIAogICAgICAgICBb
R1RLXSBWaWV3R2VzdHVyZUNvbnRyb2xsZXIgY29uc3RydWN0b3IgbGVhdmVzIG1fZGlyZWN0aW9u
IHVuaW5pdGlhbGl6ZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Z2xpYi9XZWJLaXRDYWNoZWRSZXNvbHZlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2dsaWIvV2ViS2l0Q2FjaGVkUmVzb2x2ZXIuY3BwCmluZGV4IGM1NDRiNjU5MDYyNTJhZmJl
ZmE3MGJlMGQ3ZmQ2YmNiNTVhMDkyZTguLjNkZWFiOWU0NmVkMWZmZDg1ZDFhZjIwMjJiNTFhZGIx
ZmJiMjFkZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvZ2xpYi9X
ZWJLaXRDYWNoZWRSZXNvbHZlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9nbGliL1dlYktpdENhY2hlZFJlc29sdmVyLmNwcApAQCAtMTA4LDcgKzEwOCw3IEBAIHN0YXRp
YyB2b2lkIHdlYmtpdENhY2hlZFJlc29sdmVyTG9va3VwQnlOYW1lQXN5bmMoR1Jlc29sdmVyKiBy
ZXNvbHZlciwgY29uc3QgY2hhCiAgICAgICAgICAgICBwcml2LT5jYWNoZS51cGRhdGUoYXN5bmNE
YXRhLT5ob3N0bmFtZSwgYWRkcmVzc0xpc3RHTGlzdFRvVmVjdG9yKGFkZHJlc3NMaXN0KSk7CiAg
ICAgICAgICAgICBnX3Rhc2tfcmV0dXJuX3BvaW50ZXIodGFzay5nZXQoKSwgYWRkcmVzc0xpc3Qs
IHJlaW50ZXJwcmV0X2Nhc3Q8R0Rlc3Ryb3lOb3RpZnk+KGdfcmVzb2x2ZXJfZnJlZV9hZGRyZXNz
ZXMpKTsKICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBnX3Rhc2tfcmV0dXJuX2Vycm9yKHRh
c2suZ2V0KCksIGVycm9yLmdldCgpKTsKKyAgICAgICAgICAgIGdfdGFza19yZXR1cm5fZXJyb3Io
dGFzay5nZXQoKSwgZXJyb3IucmVsZWFzZSgpLnJlbGVhc2UoKSk7CiAgICAgfSwgdGFzay5sZWFr
UmVmKCkpOwogfQogCkBAIC0xNzAsNyArMTcwLDcgQEAgc3RhdGljIHZvaWQgd2Via2l0Q2FjaGVk
UmVzb2x2ZXJMb29rdXBCeU5hbWVXaXRoRmxhZ3NBc3luYyhHUmVzb2x2ZXIqIHJlc29sdmVyLAog
ICAgICAgICAgICAgcHJpdi0+Y2FjaGUudXBkYXRlKGFzeW5jRGF0YS0+aG9zdG5hbWUsIGFkZHJl
c3NMaXN0R0xpc3RUb1ZlY3RvcihhZGRyZXNzTGlzdCksIGFzeW5jRGF0YS0+ZG5zQ2FjaGVUeXBl
KTsKICAgICAgICAgICAgIGdfdGFza19yZXR1cm5fcG9pbnRlcih0YXNrLmdldCgpLCBhZGRyZXNz
TGlzdCwgcmVpbnRlcnByZXRfY2FzdDxHRGVzdHJveU5vdGlmeT4oZ19yZXNvbHZlcl9mcmVlX2Fk
ZHJlc3NlcykpOwogICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIGdfdGFza19yZXR1cm5fZXJy
b3IodGFzay5nZXQoKSwgZXJyb3IuZ2V0KCkpOworICAgICAgICAgICAgZ190YXNrX3JldHVybl9l
cnJvcih0YXNrLmdldCgpLCBlcnJvci5yZWxlYXNlKCkucmVsZWFzZSgpKTsKICAgICB9LCB0YXNr
LmxlYWtSZWYoKSk7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>373631</attachid>
            <date>2019-07-08 09:11:35 -0700</date>
            <delta_ts>2019-07-08 09:36:19 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-199572-20190708191134.patch</filename>
            <type>text/plain</type>
            <size>2300</size>
            <attacher name="Claudio Saavedra">csaavedra</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ3MjAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDdkNjU2ZTA0NTkyZTE3ZjQ1
YWQxY2QwYmE1YTViZGRkZTE5ZmM0MzkuLmIwZmNiY2Q1OTY5ZjM5YmY3ZjBlN2U4Zjg0NDg3NDA0
YTU1Y2U5M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTktMDctMDggIENsYXVkaW8g
U2FhdmVkcmEgIDxjc2FhdmVkcmFAaWdhbGlhLmNvbT4KKworICAgICAgICBSRUdSRVNTSU9OKHIy
NDY2NzEpOiBbV1BFXVtHVEtdIENyYXNoIGluIE5ldHdvcmtQcm9jZXNzIHNpbmNlIHRoZSBETlMg
Y2FjaGUgbGFuZGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xOTk1NzIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBUaGUgR0Vycm9yIGNvbWluZyBmcm9tIHRoZSB3cmFwcGVkIHJlc29sdmVyIHNob3VsZG4n
dCBiZSBmcmVlZCwKKyAgICAgICAgYnV0IHBhc3NlZCBvbnRvIHRoZSBjYWxsZXIuCisKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9nbGliL1dlYktpdENhY2hlZFJlc29sdmVyLmNwcDoKKyAgICAg
ICAgKHdlYmtpdENhY2hlZFJlc29sdmVyTG9va3VwQnlOYW1lQXN5bmMpOgorICAgICAgICAod2Vi
a2l0Q2FjaGVkUmVzb2x2ZXJMb29rdXBCeU5hbWVXaXRoRmxhZ3NBc3luYyk6CisKIDIwMTktMDct
MDggIE1pY2hhZWwgQ2F0YW56YXJvICA8bWNhdGFuemFyb0BpZ2FsaWEuY29tPgogCiAgICAgICAg
IFtHVEtdIFZpZXdHZXN0dXJlQ29udHJvbGxlciBjb25zdHJ1Y3RvciBsZWF2ZXMgbV9kaXJlY3Rp
b24gdW5pbml0aWFsaXplZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9nbGliL1dlYktpdENhY2hlZFJlc29sdmVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvZ2xpYi9XZWJLaXRDYWNoZWRSZXNvbHZlci5jcHAKaW5kZXggYzU0NGI2NTkwNjI1MmFm
YmVmYTcwYmUwZDdmZDZiY2I1NWEwOTJlOC4uM2RlYWI5ZTQ2ZWQxZmZkODVkMWFmMjAyMmI1MWFk
YjFmYmIyMWRmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9nbGli
L1dlYktpdENhY2hlZFJlc29sdmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2dsaWIvV2ViS2l0Q2FjaGVkUmVzb2x2ZXIuY3BwCkBAIC0xMDgsNyArMTA4LDcgQEAgc3Rh
dGljIHZvaWQgd2Via2l0Q2FjaGVkUmVzb2x2ZXJMb29rdXBCeU5hbWVBc3luYyhHUmVzb2x2ZXIq
IHJlc29sdmVyLCBjb25zdCBjaGEKICAgICAgICAgICAgIHByaXYtPmNhY2hlLnVwZGF0ZShhc3lu
Y0RhdGEtPmhvc3RuYW1lLCBhZGRyZXNzTGlzdEdMaXN0VG9WZWN0b3IoYWRkcmVzc0xpc3QpKTsK
ICAgICAgICAgICAgIGdfdGFza19yZXR1cm5fcG9pbnRlcih0YXNrLmdldCgpLCBhZGRyZXNzTGlz
dCwgcmVpbnRlcnByZXRfY2FzdDxHRGVzdHJveU5vdGlmeT4oZ19yZXNvbHZlcl9mcmVlX2FkZHJl
c3NlcykpOwogICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIGdfdGFza19yZXR1cm5fZXJyb3Io
dGFzay5nZXQoKSwgZXJyb3IuZ2V0KCkpOworICAgICAgICAgICAgZ190YXNrX3JldHVybl9lcnJv
cih0YXNrLmdldCgpLCBlcnJvci5yZWxlYXNlKCkucmVsZWFzZSgpKTsKICAgICB9LCB0YXNrLmxl
YWtSZWYoKSk7CiB9CiAKQEAgLTE3MCw3ICsxNzAsNyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRDYWNo
ZWRSZXNvbHZlckxvb2t1cEJ5TmFtZVdpdGhGbGFnc0FzeW5jKEdSZXNvbHZlciogcmVzb2x2ZXIs
CiAgICAgICAgICAgICBwcml2LT5jYWNoZS51cGRhdGUoYXN5bmNEYXRhLT5ob3N0bmFtZSwgYWRk
cmVzc0xpc3RHTGlzdFRvVmVjdG9yKGFkZHJlc3NMaXN0KSwgYXN5bmNEYXRhLT5kbnNDYWNoZVR5
cGUpOwogICAgICAgICAgICAgZ190YXNrX3JldHVybl9wb2ludGVyKHRhc2suZ2V0KCksIGFkZHJl
c3NMaXN0LCByZWludGVycHJldF9jYXN0PEdEZXN0cm95Tm90aWZ5PihnX3Jlc29sdmVyX2ZyZWVf
YWRkcmVzc2VzKSk7CiAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgZ190YXNrX3JldHVybl9l
cnJvcih0YXNrLmdldCgpLCBlcnJvci5nZXQoKSk7CisgICAgICAgICAgICBnX3Rhc2tfcmV0dXJu
X2Vycm9yKHRhc2suZ2V0KCksIGVycm9yLnJlbGVhc2UoKS5yZWxlYXNlKCkpOwogICAgIH0sIHRh
c2subGVha1JlZigpKTsKIH0KIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>