<?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>211080</bug_id>
          
          <creation_ts>2020-04-27 09:33:51 -0700</creation_ts>
          <short_desc>Stop using waiting for a BinarySemaphore on the main thread in the NetworkProcess</short_desc>
          <delta_ts>2020-04-29 14:34: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>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>211207</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>cdumez</cc>
    
    <cc>darin</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1646049</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-04-27 09:33:51 -0700</bug_when>
    <thetext>Stop using waiting for a BinarySemaphore on the main thread in the NetworkProcess</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1646050</commentid>
    <comment_count>1</comment_count>
      <attachid>397690</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-04-27 09:36:57 -0700</bug_when>
    <thetext>Created attachment 397690
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1646051</commentid>
    <comment_count>2</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-04-27 09:37:00 -0700</bug_when>
    <thetext>&lt;rdar://problem/62377357&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1646054</commentid>
    <comment_count>3</comment_count>
      <attachid>397690</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-04-27 09:45:05 -0700</bug_when>
    <thetext>Comment on attachment 397690
Patch

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

&gt; Source/WebKit/ChangeLog:9
&gt; +        There was an out-of-date comment suggesting we needed to use a semaphore, but we&apos;ve since added these in the destructor:

Yes, when this code was written, this store lived in the UIProcess, not the network process. Seems have changed a lot since.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1646135</commentid>
    <comment_count>4</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-04-27 12:30:56 -0700</bug_when>
    <thetext>------------------------------
Test suite failed
Failed
    TestWebKitAPI.ResourceLoadStatistics.ChildProcessesNotLaunchedDatabase
        
        /Volumes/Data/worker/macOS-Mojave-Release-Build-EWS/build/Tools/TestWebKitAPI/Tests/WebKitCocoa/ResourceLoadStatistics.mm:448
        Value of: [message isEqualToString:@&quot;PopulatedWithoutGrandfathering&quot;]
          Actual: false
        Expected: true
        
    TestWebKitAPI.ResourceLoadStatistics.ShouldNotGrandfatherOnStartupDatabase
        _RegisterApplication(), FAILED TO establish the default connection to the WindowServer, _CGSDefaultConnection() is NULL.
        
        /Volumes/Data/worker/macOS-Mojave-Release-Build-EWS/build/Tools/TestWebKitAPI/Tests/WebKitCocoa/ResourceLoadStatistics.mm:330
        Value of: [message isEqualToString:@&quot;PopulatedWithoutGrandfathering&quot;]
          Actual: false
        Expected: true</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1646137</commentid>
    <comment_count>5</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-04-27 12:32:08 -0700</bug_when>
    <thetext>When running an individual test, everything&apos;s fine.  When I run multiple tests, I see lots of these:

ERROR: SQLite database failed to set journal_mode to WAL, error: database is locked
        ./platform/sql/SQLiteDatabase.cpp(176) : void WebCore::SQLiteDatabase::useWALJournalMode()
        ERROR: SQLite database failed to checkpoint: database is locked
        ./platform/sql/SQLiteDatabase.cpp(186) : void WebCore::SQLiteDatabase::useWALJournalMode()
        ERROR: SQLite database failed to checkpoint: disk I/O error
        ./platform/sql/SQLiteDatabase.cpp(186) : void WebCore::SQLiteDatabase::useWALJournalMode()
        ASSERTION FAILED: resetResult == 0</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1646139</commentid>
    <comment_count>6</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-04-27 12:34:05 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #4)
&gt; ------------------------------
&gt; Test suite failed
&gt; Failed
&gt;     TestWebKitAPI.ResourceLoadStatistics.ChildProcessesNotLaunchedDatabase
&gt;         
&gt;        
&gt; /Volumes/Data/worker/macOS-Mojave-Release-Build-EWS/build/Tools/
&gt; TestWebKitAPI/Tests/WebKitCocoa/ResourceLoadStatistics.mm:448
&gt;         Value of: [message isEqualToString:@&quot;PopulatedWithoutGrandfathering&quot;]
&gt;           Actual: false
&gt;         Expected: true
&gt;         
&gt;    
&gt; TestWebKitAPI.ResourceLoadStatistics.ShouldNotGrandfatherOnStartupDatabase
&gt;         _RegisterApplication(), FAILED TO establish the default connection
&gt; to the WindowServer, _CGSDefaultConnection() is NULL.
&gt;         
&gt;        
&gt; /Volumes/Data/worker/macOS-Mojave-Release-Build-EWS/build/Tools/
&gt; TestWebKitAPI/Tests/WebKitCocoa/ResourceLoadStatistics.mm:330
&gt;         Value of: [message isEqualToString:@&quot;PopulatedWithoutGrandfathering&quot;]
&gt;           Actual: false
&gt;         Expected: true

Interestingly, the 2 corresponding API tests that do not use the Database backend (ResourceLoadStatistics.ChildProcessesNotLaunched &amp; ResourceLoadStatistics.ShouldNotGrandfatherOnStartup) do not fail, so the failure seems specific to using the database backend for ITP.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1646140</commentid>
    <comment_count>7</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-04-27 12:37:01 -0700</bug_when>
    <thetext>(In reply to Alex Christensen from comment #5)
&gt; When running an individual test, everything&apos;s fine.  When I run multiple
&gt; tests, I see lots of these:
&gt; 
&gt; ERROR: SQLite database failed to set journal_mode to WAL, error: database is
&gt; locked
&gt;         ./platform/sql/SQLiteDatabase.cpp(176) : void
&gt; WebCore::SQLiteDatabase::useWALJournalMode()
&gt;         ERROR: SQLite database failed to checkpoint: database is locked
&gt;         ./platform/sql/SQLiteDatabase.cpp(186) : void
&gt; WebCore::SQLiteDatabase::useWALJournalMode()
&gt;         ERROR: SQLite database failed to checkpoint: disk I/O error
&gt;         ./platform/sql/SQLiteDatabase.cpp(186) : void
&gt; WebCore::SQLiteDatabase::useWALJournalMode()
&gt;         ASSERTION FAILED: resetResult == 0

 
useWALJournalMode() gets called when opening a SQLite Database. This may indicate that we are trying to open a database file that is still open (or wasn&apos;t closed properly). Given that the API test that fail use the SQLite backend, this is likely related. If I had to bet, I would say that the previous code was making sure that the database file was properly flushed/closed before something else was happening, and that&apos;s not the case anymore after your change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1646144</commentid>
    <comment_count>8</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-04-27 12:41:42 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #7)
&gt; (In reply to Alex Christensen from comment #5)
&gt; &gt; When running an individual test, everything&apos;s fine.  When I run multiple
&gt; &gt; tests, I see lots of these:
&gt; &gt; 
&gt; &gt; ERROR: SQLite database failed to set journal_mode to WAL, error: database is
&gt; &gt; locked
&gt; &gt;         ./platform/sql/SQLiteDatabase.cpp(176) : void
&gt; &gt; WebCore::SQLiteDatabase::useWALJournalMode()
&gt; &gt;         ERROR: SQLite database failed to checkpoint: database is locked
&gt; &gt;         ./platform/sql/SQLiteDatabase.cpp(186) : void
&gt; &gt; WebCore::SQLiteDatabase::useWALJournalMode()
&gt; &gt;         ERROR: SQLite database failed to checkpoint: disk I/O error
&gt; &gt;         ./platform/sql/SQLiteDatabase.cpp(186) : void
&gt; &gt; WebCore::SQLiteDatabase::useWALJournalMode()
&gt; &gt;         ASSERTION FAILED: resetResult == 0
&gt; 
&gt;  
&gt; useWALJournalMode() gets called when opening a SQLite Database. This may
&gt; indicate that we are trying to open a database file that is still open (or
&gt; wasn&apos;t closed properly). Given that the API test that fail use the SQLite
&gt; backend, this is likely related. If I had to bet, I would say that the
&gt; previous code was making sure that the database file was properly
&gt; flushed/closed before something else was happening, and that&apos;s not the case
&gt; anymore after your change.

When NetworkSession::setResourceLoadStatisticsEnabled() gets called (and it likely gets called during testing to toggle ITP), it destroys/reconstructs the WebResourceLoadStatisticsStore.
setResourceLoadStatisticsEnabled(false) would call NetworkSession::destroyResourceLoadStatistics() which would call WebResourceLoadStatisticsStore::didDestroyNetworkSession() which would trigger the code you modified. Then if the test calls setResourceLoadStatisticsEnabled(true) right away, it will try to reopen the same DB file without synchronization (because the new WorkQueue will be used).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1646146</commentid>
    <comment_count>9</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-04-27 12:44:09 -0700</bug_when>
    <thetext>Ah, I can probably make that test-only function use a CompletionHandler to fix it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1646147</commentid>
    <comment_count>10</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-04-27 12:45:07 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #8)
&gt; (In reply to Chris Dumez from comment #7)
&gt; &gt; (In reply to Alex Christensen from comment #5)
&gt; &gt; &gt; When running an individual test, everything&apos;s fine.  When I run multiple
&gt; &gt; &gt; tests, I see lots of these:
&gt; &gt; &gt; 
&gt; &gt; &gt; ERROR: SQLite database failed to set journal_mode to WAL, error: database is
&gt; &gt; &gt; locked
&gt; &gt; &gt;         ./platform/sql/SQLiteDatabase.cpp(176) : void
&gt; &gt; &gt; WebCore::SQLiteDatabase::useWALJournalMode()
&gt; &gt; &gt;         ERROR: SQLite database failed to checkpoint: database is locked
&gt; &gt; &gt;         ./platform/sql/SQLiteDatabase.cpp(186) : void
&gt; &gt; &gt; WebCore::SQLiteDatabase::useWALJournalMode()
&gt; &gt; &gt;         ERROR: SQLite database failed to checkpoint: disk I/O error
&gt; &gt; &gt;         ./platform/sql/SQLiteDatabase.cpp(186) : void
&gt; &gt; &gt; WebCore::SQLiteDatabase::useWALJournalMode()
&gt; &gt; &gt;         ASSERTION FAILED: resetResult == 0
&gt; &gt; 
&gt; &gt;  
&gt; &gt; useWALJournalMode() gets called when opening a SQLite Database. This may
&gt; &gt; indicate that we are trying to open a database file that is still open (or
&gt; &gt; wasn&apos;t closed properly). Given that the API test that fail use the SQLite
&gt; &gt; backend, this is likely related. If I had to bet, I would say that the
&gt; &gt; previous code was making sure that the database file was properly
&gt; &gt; flushed/closed before something else was happening, and that&apos;s not the case
&gt; &gt; anymore after your change.
&gt; 
&gt; When NetworkSession::setResourceLoadStatisticsEnabled() gets called (and it
&gt; likely gets called during testing to toggle ITP), it destroys/reconstructs
&gt; the WebResourceLoadStatisticsStore.
&gt; setResourceLoadStatisticsEnabled(false) would call
&gt; NetworkSession::destroyResourceLoadStatistics() which would call
&gt; WebResourceLoadStatisticsStore::didDestroyNetworkSession() which would
&gt; trigger the code you modified. Then if the test calls
&gt; setResourceLoadStatisticsEnabled(true) right away, it will try to reopen the
&gt; same DB file without synchronization (because the new WorkQueue will be
&gt; used).

A few early fix ideas:
1. Make NetworkSession::setResourceLoadStatisticsEnabled() async and take a completion handler that only gets called after flushing / closing has happened on the background queue
2. Use a single WorkQueue for all WebResourceLoadStatisticsStore objects instead of one per WebResourceLoadStatisticsStore (so things get serialized properly even after constructing the WebResourceLoadStatisticsStore)
3. Add some synchronization in NetworkSession::setResourceLoadStatisticsEnabled()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1646149</commentid>
    <comment_count>11</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-04-27 12:49:35 -0700</bug_when>
    <thetext>recreateResourceLoadStatisticStore was the problem.  Adding CompletionHandler...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1646152</commentid>
    <comment_count>12</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-04-27 12:55:53 -0700</bug_when>
    <thetext>(In reply to Alex Christensen from comment #11)
&gt; recreateResourceLoadStatisticStore was the problem.  Adding
&gt; CompletionHandler...

Yes, a completion handler would work. I may be a bit intrusive as it may require a lot of piping the completion handler through (maybe even though IPC and SPI).
Note that option 2 I suggested earlier may be less work (We&apos;d have a serial ITP WorkQueue on the NetworkProcess and use that for all WebResourceLoadStatisticsStore objects). This way things would get serialized nicely (flushing+close then re-opening).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1646177</commentid>
    <comment_count>13</comment_count>
      <attachid>397729</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-04-27 13:43:58 -0700</bug_when>
    <thetext>Created attachment 397729
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1646192</commentid>
    <comment_count>14</comment_count>
      <attachid>397729</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-04-27 13:58:06 -0700</bug_when>
    <thetext>Comment on attachment 397729
Patch

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

r=me but let&apos;s wait for EWS to be green to land.

&gt; Source/WebKit/NetworkProcess/NetworkProcess.cpp:270
&gt; +        networkSession.destroyResourceLoadStatistics([callbackAggregator = callbackAggregator.copyRef()] { });

Yes, this is probably a good idea to do.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1646266</commentid>
    <comment_count>15</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-04-27 15:33:46 -0700</bug_when>
    <thetext>http://trac.webkit.org/r260791</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1646569</commentid>
    <comment_count>16</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-04-28 11:10:45 -0700</bug_when>
    <thetext>This change is suspected to cause iOS crashes like those in API tests in https://build.webkit.org/builders/Apple%20iOS%2013%20Simulator%20Release%20WK2%20%28Tests%29/builds/4034
Investigating now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1646594</commentid>
    <comment_count>17</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-04-28 12:01:17 -0700</bug_when>
    <thetext>False alarm.  Those tests were caused by https://trac.webkit.org/changeset/260764/webkit which is unrelated and fixed in http://trac.webkit.org/r260836 which is not needed for this fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1647161</commentid>
    <comment_count>18</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-04-29 14:34:18 -0700</bug_when>
    <thetext>This introduced a pretty bad regression unfortunately:
https://bugs.webkit.org/show_bug.cgi?id=211207</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>397690</attachid>
            <date>2020-04-27 09:36:57 -0700</date>
            <delta_ts>2020-04-27 13:43:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-211080-20200427093657.patch</filename>
            <type>text/plain</type>
            <size>4374</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNjA3NjEpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI0IEBACisyMDIwLTA0LTI3ICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgU3RvcCB1c2luZyB3
YWl0aW5nIGZvciBhIEJpbmFyeVNlbWFwaG9yZSBvbiB0aGUgbWFpbiB0aHJlYWQgaW4gdGhlIE5l
dHdvcmtQcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMTEwODAKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzYyMzc3MzU3PgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZXJlIHdhcyBhbiBvdXQt
b2YtZGF0ZSBjb21tZW50IHN1Z2dlc3Rpbmcgd2UgbmVlZGVkIHRvIHVzZSBhIHNlbWFwaG9yZSwg
YnV0IHdlJ3ZlIHNpbmNlIGFkZGVkIHRoZXNlIGluIHRoZSBkZXN0cnVjdG9yOgorICAgICAgICBS
RUxFQVNFX0FTU0VSVCghbV9zdGF0aXN0aWNzU3RvcmUpOworICAgICAgICBSRUxFQVNFX0FTU0VS
VCghbV9wZXJzaXN0ZW50U3RvcmFnZSk7CisgICAgICAgIFRoaXMgaW5kaWNhdGVzIHRoYXQgZmx1
c2hBbmREZXN0cm95UGVyc2lzdGVudFN0b3JlIGlzIGNhbGxlZCBiZWZvcmUgdGhlIGRlc3RydWN0
b3IsIGF0IHdoaWNoIHRpbWUgaXQgaXMgc2FmZSB0byBhZGQgYSByZWZlcmVuY2UgdG8ga2VlcCBp
dCBhbGl2ZS4KKyAgICAgICAgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlIGlzIGFsc28g
bWFya2VkIGFzIFdURjo6RGVzdHJ1Y3Rpb25UaHJlYWQ6Ok1haW4gc28gdGhpcyBzaG91bGQgZG8g
ZXZlcnl0aGluZyB3ZSBuZWVkLgorCisgICAgICAgIFRoaXMgc2hvdWxkIGZpeCBzb21lIGNhc2Vz
IHdoZXJlIHRoZSBuZXR3b3JrIHByb2Nlc3MgaXMgaHVuZywgd2hpY2ggaGFuZ3MgYW55IHdlYiBw
cm9jZXNzIHRyeWluZyB0byBjb25uZWN0IHRvIGl0LgorCisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmZsdXNoQW5kRGVzdHJv
eVBlcnNpc3RlbnRTdG9yZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZTo6YXBwbGljYXRpb25XaWxsVGVybWluYXRlKTogRGVsZXRlZC4KKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZS5oOgorCiAyMDIwLTA0LTI3ICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNv
bT4KIAogICAgICAgICBbR1RLXSBFTkFCTEUoT1BFTkdMKSByZW1tYW50cy4uLgpJbmRleDogU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAJKHJldmlzaW9u
IDI2MDc1MikKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMzgsMTcg
KzIzOCwxMiBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Zmx1CiB7CiAg
ICAgUkVMRUFTRV9BU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogCi0gICAgLy8gTWFrZSBzdXJl
IHdlIGRlc3Ryb3kgdGhlIHBlcnNpc3RlbnQgc3RvcmUgb24gdGhlIGJhY2tncm91bmQgcXVldWUg
YW5kIHdhaXQgZm9yIGl0IHRvIGRpZQotICAgIC8vIHN5bmNocm9ub3VzbHkgc2luY2UgaXQgaGFz
IGEgQysrIHJlZmVyZW5jZSB0byB1cy4gQmxvY2tpbmcgbmF0dXJlIG9mIHRoaXMgdGFzayBhbGxv
d3MgdXMKLSAgICAvLyB0byBub3QgbWFpbnRhaW4gYSBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmUgcmVmZXJlbmNlIGZvciB0aGUgZHVyYXRpb24gb2YgZGlzcGF0Y2gsCi0gICAgLy8gYXZv
aWRpbmcgZG91YmxlLWRlbGV0aW9uIGlzc3VlcyB3aGVuIHRoaXMgaXMgaW52b2tlZCBmcm9tIHRo
ZSBkZXN0cnVjdG9yLgotICAgIEJpbmFyeVNlbWFwaG9yZSBzZW1hcGhvcmU7Ci0gICAgbV9zdGF0
aXN0aWNzUXVldWUtPmRpc3BhdGNoKFsmc2VtYXBob3JlLCB0aGlzXSB7CisgICAgLy8gTWFrZSBz
dXJlIHdlIGRlc3Ryb3kgdGhlIHBlcnNpc3RlbnQgc3RvcmUgb24gdGhlIGJhY2tncm91bmQgcXVl
dWUgYW5kIHN0YXkgYWxpdmUgdW50aWwgaXQKKyAgICAvLyBpcyBkZXN0cm95ZWQgYmVjYXVzZSBp
dCBoYXMgYSBDKysgcmVmZXJlbmNlIHRvIHVzLgorICAgIG1fc3RhdGlzdGljc1F1ZXVlLT5kaXNw
YXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSB7CiAgICAgICAgIG1f
cGVyc2lzdGVudFN0b3JhZ2UgPSBudWxscHRyOwogICAgICAgICBtX3N0YXRpc3RpY3NTdG9yZSA9
IG51bGxwdHI7Ci0gICAgICAgIHNlbWFwaG9yZS5zaWduYWwoKTsKICAgICB9KTsKLSAgICBzZW1h
cGhvcmUud2FpdCgpOwogfQogCiB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6
cG9wdWxhdGVNZW1vcnlTdG9yZUZyb21EaXNrKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKQEAgLTY3OCwxMyArNjczLDYgQEAgdm9pZCBXZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmU6OnJlbQogICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiB9CiAKLXZv
aWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjphcHBsaWNhdGlvbldpbGxUZXJtaW5h
dGUoKQotewotICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7Ci0gICAgaWYgKCFpc0VwaGVt
ZXJhbCgpKQotICAgICAgICBmbHVzaEFuZERlc3Ryb3lQZXJzaXN0ZW50U3RvcmUoKTsKLX0KLQog
dm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnBlcmZvcm1EYWlseVRhc2tzKCkK
IHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwpJbmRleDogU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9X
ZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaAkocmV2aXNpb24gMjYwNzUyKQorKysgU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMTIsOCArMjEyLDYgQEAgc3RydWN0IFRo
aXJkUGFydHlEYXRhIHsKIAogICAgIHZvaWQgZ3JhbnRTdG9yYWdlQWNjZXNzKGNvbnN0IFN1YkZy
YW1lRG9tYWluJiwgY29uc3QgVG9wRnJhbWVEb21haW4mLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZp
ZXIsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24s
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQsIFN0b3JhZ2VB
Y2Nlc3NQcm9tcHRXYXNTaG93bik+JiYpOwogCi0gICAgdm9pZCBhcHBsaWNhdGlvbldpbGxUZXJt
aW5hdGUoKTsKLQogICAgIHZvaWQgbG9nRnJhbWVOYXZpZ2F0aW9uKGNvbnN0IE5hdmlnYXRlZFRv
RG9tYWluJiwgY29uc3QgVG9wRnJhbWVEb21haW4mLCBjb25zdCBOYXZpZ2F0ZWRGcm9tRG9tYWlu
JiwgYm9vbCBpc1JlZGlyZWN0LCBib29sIGlzTWFpbkZyYW1lLCBTZWNvbmRzIGRlbGF5QWZ0ZXJN
YWluRnJhbWVEb2N1bWVudExvYWQsIGJvb2wgd2FzUG90ZW50aWFsbHlJbml0aWF0ZWRCeVVzZXIp
OwogICAgIHZvaWQgbG9nVXNlckludGVyYWN0aW9uKGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIGxvZ0Nyb3NzU2l0ZUxvYWRXaXRo
TGlua0RlY29yYXRpb24oY29uc3QgTmF2aWdhdGVkRnJvbURvbWFpbiYsIGNvbnN0IE5hdmlnYXRl
ZFRvRG9tYWluJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>397729</attachid>
            <date>2020-04-27 13:43:58 -0700</date>
            <delta_ts>2020-04-27 13:58:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-211080-20200427134357.patch</filename>
            <type>text/plain</type>
            <size>12646</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNjA3NzMpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM4IEBACisyMDIwLTA0LTI3ICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgU3RvcCB3YWl0aW5n
IGZvciBhIEJpbmFyeVNlbWFwaG9yZSBvbiB0aGUgbWFpbiB0aHJlYWQgaW4gdGhlIE5ldHdvcmtQ
cm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MTEwODAKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzYyMzc3MzU3PgorCisgICAgICAgIFJldmll
d2VkIGJ5IERhcmluIEFkbGVyIGFuZCBDaHJpcyBEdW1lei4KKworICAgICAgICBUaGVyZSB3YXMg
YW4gb3V0LW9mLWRhdGUgY29tbWVudCBzdWdnZXN0aW5nIHdlIG5lZWRlZCB0byB1c2UgYSBzZW1h
cGhvcmUsIGJ1dCB3ZSd2ZSBzaW5jZSBhZGRlZCB0aGVzZSBpbiB0aGUgZGVzdHJ1Y3RvcjoKKyAg
ICAgICAgUkVMRUFTRV9BU1NFUlQoIW1fc3RhdGlzdGljc1N0b3JlKTsKKyAgICAgICAgUkVMRUFT
RV9BU1NFUlQoIW1fcGVyc2lzdGVudFN0b3JhZ2UpOworICAgICAgICBUaGlzIGluZGljYXRlcyB0
aGF0IGZsdXNoQW5kRGVzdHJveVBlcnNpc3RlbnRTdG9yZSBpcyBjYWxsZWQgYmVmb3JlIHRoZSBk
ZXN0cnVjdG9yLCBhdCB3aGljaCB0aW1lIGl0IGlzIHNhZmUgdG8gYWRkIGEgcmVmZXJlbmNlIHRv
IGtlZXAgaXQgYWxpdmUuCisgICAgICAgIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSBp
cyBhbHNvIG1hcmtlZCBhcyBXVEY6OkRlc3RydWN0aW9uVGhyZWFkOjpNYWluIHNvIHRoaXMgc2hv
dWxkIGRvIGV2ZXJ5dGhpbmcgd2UgbmVlZC4KKyAgICAgICAgV2UgYWxzbyBmbHVzaCB0aGVzZSBk
YXRhYmFzZXMgdG8gZGlzayBiZWZvcmUgY2xvc2luZyBsaWtlIHdlIGRpZCBjb29raWVzLgorCisg
ICAgICAgIEluIG9yZGVyIHRvIGtlZXAgdGVzdHMgd29ya2luZyBhcyB0aGV5IGFyZSwgSSBuZWVk
ZWQgdG8gbWFrZSByZWNyZWF0ZVJlc291cmNlTG9hZFN0YXRpc3RpY1N0b3JlIGhhdmUgYSBDb21w
bGV0aW9uSGFuZGxlciBhbmQgaGF2ZSBhbGwKKyAgICAgICAgV2ViUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlcyBzaGFyZSB0aGUgc2FtZSBxdWV1ZSB0byBzZXJpYWxpemUgYmFja2dyb3VuZCB0
YXNrcyBiZXR3ZWVuIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZXMgd2l0aCBhbmQgd2l0
aG91dCBkYXRhYmFzZSBzdG9yZXMKKyAgICAgICAgc2VxdWVudGlhbGx5IHRvIGF2b2lkIG9wZW5p
bmcgYSBTUUxpdGVEYXRhYmFzZSBiZWZvcmUgdGhlIHByZXZpb3VzIFdlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZSBoYWQgY2xvc2VkIGl0LgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
Q2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwOgorICAgICAgICAo
V2ViS2l0OjpzaGFyZWRTdGF0aXN0aWNzUXVldWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSk6
CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6ZGlkRGVz
dHJveU5ldHdvcmtTZXNzaW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlOjpmbHVzaEFuZERlc3Ryb3lQZXJzaXN0ZW50U3RvcmUpOgorICAgICAgICAo
V2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmFwcGxpY2F0aW9uV2lsbFRl
cm1pbmF0ZSk6IERlbGV0ZWQuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9X
ZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpk
aWRDbG9zZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbjo6fk5ldHdvcmtTZXNzaW9uKToKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb246OmRlc3Ryb3lSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb246OnNldFJlc291cmNlTG9hZFN0YXRp
c3RpY3NFbmFibGVkKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb246OnJlY3JlYXRl
UmVzb3VyY2VMb2FkU3RhdGlzdGljU3RvcmUpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05l
dHdvcmtTZXNzaW9uLmg6CisKIDIwMjAtMDQtMjcgIFBlciBBcm5lIFZvbGxhbiAgPHB2b2xsYW5A
YXBwbGUuY29tPgogCiAgICAgICAgIFtDb2NvYV0gQWZ0ZXIgcjI1ODg5MSwgcjI1NTExOSBjYW4g
YmUgcmV2ZXJ0ZWQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Byb2Nlc3MuY3BwCShyZXZpc2lvbiAyNjA3NjQpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjU5LDEwICsy
NTksMTggQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZGlkQ2xvc2UoSVBDOjpDb25uZQogewogICAg
IEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAKLSAgICAvLyBNYWtlIHN1cmUgd2UgZmx1c2gg
YWxsIGNvb2tpZXMgdG8gZGlzayBiZWZvcmUgZXhpdGluZy4KLSAgICBwbGF0Zm9ybVN5bmNBbGxD
b29raWVzKFt0aGlzXSB7CisgICAgYXV0byBjYWxsYmFja0FnZ3JlZ2F0b3IgPSBDYWxsYmFja0Fn
Z3JlZ2F0b3I6OmNyZWF0ZShbdGhpc10geworICAgICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWlu
KCkpOwogICAgICAgICBzdG9wUnVuTG9vcCgpOwogICAgIH0pOworCisgICAgLy8gTWFrZSBzdXJl
IHdlIGZsdXNoIGFsbCBjb29raWVzIGFuZCByZXNvdXJjZSBsb2FkIHN0YXRpc3RpY3MgdG8gZGlz
ayBiZWZvcmUgZXhpdGluZy4KKyNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQor
ICAgIGZvckVhY2hOZXR3b3JrU2Vzc2lvbihbJl0gKGF1dG8mIG5ldHdvcmtTZXNzaW9uKSB7Cisg
ICAgICAgIG5ldHdvcmtTZXNzaW9uLmRlc3Ryb3lSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKFtjYWxs
YmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3IuY29weVJlZigpXSB7IH0pOworICAg
IH0pOworI2VuZGlmCisgICAgcGxhdGZvcm1TeW5jQWxsQ29va2llcyhbY2FsbGJhY2tBZ2dyZWdh
dG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYoKV0geyB9KTsKIH0KIAogdm9pZCBOZXR3
b3JrUHJvY2Vzczo6ZGlkQ3JlYXRlRG93bmxvYWQoKQpJbmRleDogU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5jcHAJKHJldmlzaW9uIDI2MDc2NCkKKysr
IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xMzUsMTcgKzEzNSwxNyBAQCBOZXR3b3JrU2Vzc2lvbjo6TmV0d29ya1Nlc3Np
b24oTmV0d29ya1ByCiBOZXR3b3JrU2Vzc2lvbjo6fk5ldHdvcmtTZXNzaW9uKCkKIHsKICNpZiBF
TkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIGRlc3Ryb3lSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzKCk7CisgICAgZGVzdHJveVJlc291cmNlTG9hZFN0YXRpc3RpY3MoW10geyB9KTsK
ICNlbmRpZgogfQogCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLXZvaWQg
TmV0d29ya1Nlc3Npb246OmRlc3Ryb3lSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkKK3ZvaWQgTmV0
d29ya1Nlc3Npb246OmRlc3Ryb3lSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoIW1fcmVzb3VyY2VM
b2FkU3RhdGlzdGljcykKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gY29tcGxldGlv
bkhhbmRsZXIoKTsKIAotICAgIG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+ZGlkRGVzdHJveU5l
dHdvcmtTZXNzaW9uKCk7CisgICAgbV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5kaWREZXN0cm95
TmV0d29ya1Nlc3Npb24oV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgIG1fcmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcyA9IG51bGxwdHI7CiB9CiAjZW5kaWYKQEAgLTE3MCw3ICsxNzAsNyBA
QCB2b2lkIE5ldHdvcmtTZXNzaW9uOjpzZXRSZXNvdXJjZUxvYWRTdGF0CiAgICAgaWYgKGF1dG8q
IHN0b3JhZ2VTZXNzaW9uID0gbmV0d29ya1N0b3JhZ2VTZXNzaW9uKCkpCiAgICAgICAgIHN0b3Jh
Z2VTZXNzaW9uLT5zZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZChlbmFibGUpOwogICAg
IGlmICghZW5hYmxlKSB7Ci0gICAgICAgIGRlc3Ryb3lSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCk7
CisgICAgICAgIGRlc3Ryb3lSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKFtdIHsgfSk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKQEAgLTE5MSwxMyArMTkxLDE2IEBAIHZvaWQgTmV0d29ya1Nlc3Np
b246OnNldFJlc291cmNlTG9hZFN0YXQKIAogdm9pZCBOZXR3b3JrU2Vzc2lvbjo6cmVjcmVhdGVS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNTdG9yZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29t
cGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgZGVzdHJveVJlc291cmNlTG9hZFN0YXRpc3RpY3MoKTsK
LSAgICBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmU6OmNyZWF0ZSgqdGhpcywgbV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5LCBt
X3Nob3VsZEluY2x1ZGVMb2NhbGhvc3RJblJlc291cmNlTG9hZFN0YXRpc3RpY3MsIChtX3Nlc3Np
b25JRC5pc0VwaGVtZXJhbCgpID8gUmVzb3VyY2VMb2FkU3RhdGlzdGljczo6SXNFcGhlbWVyYWw6
OlllcyA6IFJlc291cmNlTG9hZFN0YXRpc3RpY3M6OklzRXBoZW1lcmFsOjpObykpOwotICAgIGZv
cndhcmRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU2V0dGluZ3MoKTsKLSAgICBpZiAoIW1fc2Vzc2lv
bklELmlzRXBoZW1lcmFsKCkpCi0gICAgICAgIG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+cG9w
dWxhdGVNZW1vcnlTdG9yZUZyb21EaXNrKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKLSAg
ICBlbHNlCi0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CisgICAgZGVzdHJveVJlc291cmNl
TG9hZFN0YXRpc3RpY3MoW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpLCBjb21w
bGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoKSBtdXRhYmxlIHsK
KyAgICAgICAgaWYgKCF3ZWFrVGhpcykKKyAgICAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFu
ZGxlcigpOworICAgICAgICBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBXZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmU6OmNyZWF0ZSgqdGhpcywgbV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RGlyZWN0b3J5LCBtX3Nob3VsZEluY2x1ZGVMb2NhbGhvc3RJblJlc291cmNlTG9hZFN0YXRpc3Rp
Y3MsIChtX3Nlc3Npb25JRC5pc0VwaGVtZXJhbCgpID8gUmVzb3VyY2VMb2FkU3RhdGlzdGljczo6
SXNFcGhlbWVyYWw6OlllcyA6IFJlc291cmNlTG9hZFN0YXRpc3RpY3M6OklzRXBoZW1lcmFsOjpO
bykpOworICAgICAgICBmb3J3YXJkUmVzb3VyY2VMb2FkU3RhdGlzdGljc1NldHRpbmdzKCk7Cisg
ICAgICAgIGlmICghbV9zZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSkKKyAgICAgICAgICAgIG1fcmVz
b3VyY2VMb2FkU3RhdGlzdGljcy0+cG9wdWxhdGVNZW1vcnlTdG9yZUZyb21EaXNrKFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIoKTsKKyAgICB9KTsKIH0KIAogdm9pZCBOZXR3b3JrU2Vzc2lvbjo6Zm9yd2FyZFJl
c291cmNlTG9hZFN0YXRpc3RpY3NTZXR0aW5ncygpCkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oCShyZXZpc2lvbiAyNjA3NjQpCisrKyBTb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmgJKHdvcmtpbmcgY29weSkK
QEAgLTEwNSw2ICsxMDUsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBzaG91bGREb3duZ3JhZGVSZWZl
cnJlcigpIGNvbnN0OwogICAgIHZvaWQgc2V0VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZShX
ZWJDb3JlOjpUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlKTsKICAgICB2b2lkIHNldFNob3Vs
ZEVuYmxlU2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVudChXZWJDb3JlOjpTYW1lU2l0ZVN0cmljdEVu
Zm9yY2VtZW50RW5hYmxlZCk7CisgICAgdm9pZCBkZXN0cm95UmVzb3VyY2VMb2FkU3RhdGlzdGlj
cyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogI2VuZGlmCiAgICAgCiAgICAgdmlydHVh
bCBib29sIGhhc0FwcEJvdW5kU2Vzc2lvbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CkBAIC0x
NDYsNyArMTQ3LDYgQEAgcHJvdGVjdGVkOgogICAgIE5ldHdvcmtTZXNzaW9uKE5ldHdvcmtQcm9j
ZXNzJiwgY29uc3QgTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMmKTsKIAogI2lmIEVO
QUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgdm9pZCBkZXN0cm95UmVzb3VyY2VM
b2FkU3RhdGlzdGljcygpOwogICAgIHZvaWQgZm9yd2FyZFJlc291cmNlTG9hZFN0YXRpc3RpY3NT
ZXR0aW5ncygpOwogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Q2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmUuY3BwCShyZXZpc2lvbiAyNjA3NjQpCisrKyBTb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTY0LDkgKzE2NCwxNSBAQCB2b2lkIFdlYlJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZTo6c2V0CiAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKIH0KIAor
c3RhdGljIFJlZjxXb3JrUXVldWU+IHNoYXJlZFN0YXRpc3RpY3NRdWV1ZSgpCit7CisgICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPFJlZjxXb3JrUXVldWU+PiBxdWV1ZShXb3JrUXVldWU6OmNyZWF0
ZSgiV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlIFByb2Nlc3MgRGF0YSBRdWV1ZSIsIFdv
cmtRdWV1ZTo6VHlwZTo6U2VyaWFsLCBXb3JrUXVldWU6OlFPUzo6VXRpbGl0eSkpOworICAgIHJl
dHVybiBxdWV1ZS5nZXQoKS5jb3B5UmVmKCk7Cit9CisKIFdlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZTo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlKE5ldHdvcmtTZXNzaW9uJiBu
ZXR3b3JrU2Vzc2lvbiwgY29uc3QgU3RyaW5nJiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0
b3J5LCBTaG91bGRJbmNsdWRlTG9jYWxob3N0IHNob3VsZEluY2x1ZGVMb2NhbGhvc3QsIFJlc291
cmNlTG9hZFN0YXRpc3RpY3M6OklzRXBoZW1lcmFsIGlzRXBoZW1lcmFsKQogICAgIDogbV9uZXR3
b3JrU2Vzc2lvbihtYWtlV2Vha1B0cihuZXR3b3JrU2Vzc2lvbikpCi0gICAgLCBtX3N0YXRpc3Rp
Y3NRdWV1ZShXb3JrUXVldWU6OmNyZWF0ZSgiV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
IFByb2Nlc3MgRGF0YSBRdWV1ZSIsIFdvcmtRdWV1ZTo6VHlwZTo6U2VyaWFsLCBXb3JrUXVldWU6
OlFPUzo6VXRpbGl0eSkpCisgICAgLCBtX3N0YXRpc3RpY3NRdWV1ZShzaGFyZWRTdGF0aXN0aWNz
UXVldWUoKSkKICAgICAsIG1fZGFpbHlUYXNrc1RpbWVyKFJ1bkxvb3A6Om1haW4oKSwgdGhpcywg
JldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cGVyZm9ybURhaWx5VGFza3MpCiAgICAg
LCBtX2lzRXBoZW1lcmFsKGlzRXBoZW1lcmFsKQogewpAQCAtMjA5LDEyICsyMTUsMTIgQEAgV2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjp+V2ViUmVzbwogICAgIFJFTEVBU0VfQVNTRVJU
KCFtX3BlcnNpc3RlbnRTdG9yYWdlKTsKIH0KIAotdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmU6OmRpZERlc3Ryb3lOZXR3b3JrU2Vzc2lvbigpCit2b2lkIFdlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZTo6ZGlkRGVzdHJveU5ldHdvcmtTZXNzaW9uKENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6
aXNNYWluKCkpOwogCiAgICAgbV9uZXR3b3JrU2Vzc2lvbiA9IG51bGxwdHI7Ci0gICAgZmx1c2hB
bmREZXN0cm95UGVyc2lzdGVudFN0b3JlKCk7CisgICAgZmx1c2hBbmREZXN0cm95UGVyc2lzdGVu
dFN0b3JlKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAogaW5saW5lIHZvaWQgV2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpwb3N0VGFzayhXVEY6OkZ1bmN0aW9uPHZvaWQo
KT4mJiB0YXNrKQpAQCAtMjM0LDIxICsyNDAsMTcgQEAgaW5saW5lIHZvaWQgV2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0bwogICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChXVEZNb3ZlKHJl
cGx5KSk7CiB9CiAKLXZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpmbHVzaEFu
ZERlc3Ryb3lQZXJzaXN0ZW50U3RvcmUoKQordm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmU6OmZsdXNoQW5kRGVzdHJveVBlcnNpc3RlbnRTdG9yZShDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQoUnVuTG9v
cDo6aXNNYWluKCkpOwogCi0gICAgLy8gTWFrZSBzdXJlIHdlIGRlc3Ryb3kgdGhlIHBlcnNpc3Rl
bnQgc3RvcmUgb24gdGhlIGJhY2tncm91bmQgcXVldWUgYW5kIHdhaXQgZm9yIGl0IHRvIGRpZQot
ICAgIC8vIHN5bmNocm9ub3VzbHkgc2luY2UgaXQgaGFzIGEgQysrIHJlZmVyZW5jZSB0byB1cy4g
QmxvY2tpbmcgbmF0dXJlIG9mIHRoaXMgdGFzayBhbGxvd3MgdXMKLSAgICAvLyB0byBub3QgbWFp
bnRhaW4gYSBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUgcmVmZXJlbmNlIGZvciB0aGUg
ZHVyYXRpb24gb2YgZGlzcGF0Y2gsCi0gICAgLy8gYXZvaWRpbmcgZG91YmxlLWRlbGV0aW9uIGlz
c3VlcyB3aGVuIHRoaXMgaXMgaW52b2tlZCBmcm9tIHRoZSBkZXN0cnVjdG9yLgotICAgIEJpbmFy
eVNlbWFwaG9yZSBzZW1hcGhvcmU7Ci0gICAgbV9zdGF0aXN0aWNzUXVldWUtPmRpc3BhdGNoKFsm
c2VtYXBob3JlLCB0aGlzXSB7CisgICAgLy8gTWFrZSBzdXJlIHdlIGRlc3Ryb3kgdGhlIHBlcnNp
c3RlbnQgc3RvcmUgb24gdGhlIGJhY2tncm91bmQgcXVldWUgYW5kIHN0YXkgYWxpdmUgdW50aWwg
aXQKKyAgICAvLyBpcyBkZXN0cm95ZWQgYmVjYXVzZSBpdCBoYXMgYSBDKysgcmVmZXJlbmNlIHRv
IHVzLgorICAgIG1fc3RhdGlzdGljc1F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhp
cyA9IG1ha2VSZWYoKnRoaXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpXSAoKSBtdXRhYmxlIHsKICAgICAgICAgbV9wZXJzaXN0ZW50U3RvcmFnZSA9IG51
bGxwdHI7CiAgICAgICAgIG1fc3RhdGlzdGljc1N0b3JlID0gbnVsbHB0cjsKLSAgICAgICAgc2Vt
YXBob3JlLnNpZ25hbCgpOworICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgIH0pOwotICAgIHNlbWFwaG9yZS53YWl0KCk7CiB9
CiAKIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpwb3B1bGF0ZU1lbW9yeVN0
b3JlRnJvbURpc2soQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQpAQCAtNjc4LDEzICs2ODAsNiBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZTo6cmVtCiAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKIH0KIAotdm9pZCBXZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmU6OmFwcGxpY2F0aW9uV2lsbFRlcm1pbmF0ZSgpCi17Ci0gICAgQVNT
RVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKLSAgICBpZiAoIWlzRXBoZW1lcmFsKCkpCi0gICAgICAg
IGZsdXNoQW5kRGVzdHJveVBlcnNpc3RlbnRTdG9yZSgpOwotfQotCiB2b2lkIFdlYlJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZTo6cGVyZm9ybURhaWx5VGFza3MoKQogewogICAgIEFTU0VSVChS
dW5Mb29wOjppc01haW4oKSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Ns
YXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZS5oCShyZXZpc2lvbiAyNjA3NjQpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTE5OCw3ICsxOTgsNyBAQCBzdHJ1Y3QgVGhpcmRQYXJ0eURhdGEgewog
ICAgIH0KIH07CiAKLSAgICB2b2lkIGRpZERlc3Ryb3lOZXR3b3JrU2Vzc2lvbigpOworICAgIHZv
aWQgZGlkRGVzdHJveU5ldHdvcmtTZXNzaW9uKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7
CiAKICAgICBzdGF0aWMgY29uc3QgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4mIG1vbml0b3Jl
ZERhdGFUeXBlcygpOwogCkBAIC0yMTIsOCArMjEyLDYgQEAgc3RydWN0IFRoaXJkUGFydHlEYXRh
IHsKIAogICAgIHZvaWQgZ3JhbnRTdG9yYWdlQWNjZXNzKGNvbnN0IFN1YkZyYW1lRG9tYWluJiwg
Y29uc3QgVG9wRnJhbWVEb21haW4mLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIFdlYkNvcmU6
OlBhZ2VJZGVudGlmaWVyLCBTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24sIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQsIFN0b3JhZ2VBY2Nlc3NQcm9tcHRX
YXNTaG93bik+JiYpOwogCi0gICAgdm9pZCBhcHBsaWNhdGlvbldpbGxUZXJtaW5hdGUoKTsKLQog
ICAgIHZvaWQgbG9nRnJhbWVOYXZpZ2F0aW9uKGNvbnN0IE5hdmlnYXRlZFRvRG9tYWluJiwgY29u
c3QgVG9wRnJhbWVEb21haW4mLCBjb25zdCBOYXZpZ2F0ZWRGcm9tRG9tYWluJiwgYm9vbCBpc1Jl
ZGlyZWN0LCBib29sIGlzTWFpbkZyYW1lLCBTZWNvbmRzIGRlbGF5QWZ0ZXJNYWluRnJhbWVEb2N1
bWVudExvYWQsIGJvb2wgd2FzUG90ZW50aWFsbHlJbml0aWF0ZWRCeVVzZXIpOwogICAgIHZvaWQg
bG9nVXNlckludGVyYWN0aW9uKGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIGxvZ0Nyb3NzU2l0ZUxvYWRXaXRoTGlua0RlY29yYXRp
b24oY29uc3QgTmF2aWdhdGVkRnJvbURvbWFpbiYsIGNvbnN0IE5hdmlnYXRlZFRvRG9tYWluJiwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKQEAgLTMxNyw3ICszMTUsNyBAQCBwcml2YXRl
OgogCiAgICAgU3RvcmFnZUFjY2Vzc1N0YXR1cyBzdG9yYWdlQWNjZXNzU3RhdHVzKGNvbnN0IFN0
cmluZyYgc3ViRnJhbWVQcmltYXJ5RG9tYWluLCBjb25zdCBTdHJpbmcmIHRvcEZyYW1lUHJpbWFy
eURvbWFpbik7CiAKLSAgICB2b2lkIGZsdXNoQW5kRGVzdHJveVBlcnNpc3RlbnRTdG9yZSgpOwor
ICAgIHZvaWQgZmx1c2hBbmREZXN0cm95UGVyc2lzdGVudFN0b3JlKENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJik7CiAKICAgICBXZWFrUHRyPE5ldHdvcmtTZXNzaW9uPiBtX25ldHdvcmtTZXNz
aW9uOwogICAgIFJlZjxXVEY6OldvcmtRdWV1ZT4gbV9zdGF0aXN0aWNzUXVldWU7Cg==
</data>
<flag name="review"
          id="413112"
          type_id="1"
          status="+"
          setter="cdumez"
    />
          </attachment>
      

    </bug>

</bugzilla>