<?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>225089</bug_id>
          
          <creation_ts>2021-04-26 23:07:10 -0700</creation_ts>
          <short_desc>HashTableConstIterator&apos;s consistency assertion fails while closing m_webIDBServers in NetworkProcess::didClose since r275846</short_desc>
          <delta_ts>2021-04-27 15:11:26 -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>WebKit2</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>224305</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Fujii Hironori">fujii</reporter>
          <assigned_to name="Fujii Hironori">fujii</assigned_to>
          <cc>achristensen</cc>
    
    <cc>cdumez</cc>
    
    <cc>darin</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>ggaren</cc>
    
    <cc>kkinnunen</cc>
    
    <cc>ryanhaddad</cc>
    
    <cc>sihui_liu</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1754498</commentid>
    <comment_count>0</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2021-04-26 23:07:10 -0700</bug_when>
    <thetext>HashTableConstIterator&apos;s consistency assertion fails while closing m_webIDBServers in NetworkProcess::didClose since r275846

WinCairo WK2 Debug
WebKitNetworkProcess.exe is crashing while running layout tests.

Callstack:

 # Child-SP          RetAddr           Call Site
00 00000033`2bfff380 00007ffc`3ba940c1 WTF!WTFCrash(void)+0x1f [C:\home\webkit\gc\Source\WTF\wtf\Assertions.cpp @ 305]
01 00000033`2bfff3b0 00007ffc`3c575d12 WebKit2!WTFCrashWithInfo(int __formal = 0n219, char * __formal = 0x00007ffc`418912e0 &quot;C:\home\webkit\gc\WebKitBuild\Debug\WTF\Headers\wtf/HashTable.h&quot;, char * __formal = 0x00007ffc`43a9bb10 &quot;WTF::HashTableConstIterator&lt;class WTF::HashTable&lt;class PAL::SessionID,struct WTF::KeyValuePair&lt;class PAL::SessionID,class WTF::RefPtr&lt;class WebKit::WebIDBServer,struct WTF::RawPtrTraits&lt;class WebKit::WebIDBServer&gt;,struct WTF::DefaultRefDerefTraits&lt;class WebKit::WebIDBServer&gt; &gt; &gt;,struct WTF::KeyValuePairKeyExtractor&lt;struct WTF::KeyValuePair&lt;class PAL::SessionID,class WTF::RefPtr&lt;class WebKit::WebIDBServer,struct WTF::RawPtrTraits&lt;class WebKit::WebIDBServer&gt;,struct WTF::DefaultRefDerefTraits&lt;class WebKit::WebIDBServer&gt; &gt; &gt; &gt;,struct WTF::DefaultHash&lt;class PAL::SessionID&gt;,struct WTF::HashMap&lt;class PAL::SessionID,class WTF::RefPtr&lt;class WebKit::WebIDBServer,struct WTF::RawPtrTraits&lt;class WebKit::WebIDBServer&gt;,struct WTF::DefaultRefDerefTraits&lt;class WebKit::WebIDBServer&gt; &gt;,struct WTF::DefaultHash&lt;class PAL::SessionID&gt;,struct WTF::HashTraits&lt;class PAL::SessionID&gt;,struct WTF::HashTraits&lt;class WTF::RefPtr&lt;class WebKit::WebIDBServer,struct WTF::RawPtrTraits&lt;class WebKit::WebIDBServer&gt;,struct WTF::DefaultRefDerefTraits&lt;class WebKit::WebIDBServer&gt; &gt; &gt;,struct WTF::HashTableTraits&gt;::KeyValuePairTraits,struct WTF::HashTraits&lt;class PAL::SessionID&gt; &gt;,class PAL::SessionID,struct WTF::KeyValuePair&lt;class PAL::SessionID,class WTF::RefPtr&lt;class WebKit::WebIDBServer,struct WTF::RawPtrTraits&lt;class WebKit::WebIDBServer&gt;,struct WTF::DefaultRefDerefTraits&lt;class WebKit::WebIDBServer&gt; &gt; &gt;,struct WTF::KeyValuePairKeyExtractor&lt;struct WTF::KeyValuePair&lt;class PAL::SessionID,class WTF::RefPtr&lt;class WebKit::WebIDBServer,struct WTF::RawPtrTraits&lt;class WebKit::WebIDBServer&gt;,struct WTF::DefaultRefDerefTraits&lt;class WebKit::WebIDBServer&gt; &gt; &gt; &gt;,struct WTF::DefaultHash&lt;class PAL::SessionID&gt;,struct WTF::HashMap&lt;class PAL::SessionID,class WTF::RefPtr&lt;class WebKit::WebIDBServer,struct WTF::RawPtrTraits&lt;class WebKit::WebIDBServer&gt;,struct WTF::DefaultRefDerefTraits&lt;class WebKit::WebIDBServer&gt; &gt;,struct WTF::DefaultHash&lt;class PAL::SessionID&gt;,struct WTF::HashTraits&lt;class PAL::SessionID&gt;,struct WTF::HashTraits&lt;class WTF::RefPtr&lt;class WebKit::WebIDBServer,struct WTF::RawPtrTraits&lt;class WebKit::WebIDBServer&gt;,struct WTF::DefaultRefDerefTraits&lt;class WebKit::WebIDBServer&gt; &gt; &gt;,struct WTF::HashTableTraits&gt;::KeyValuePairTraits,struct WTF::HashTraits&lt;class PAL::SessionID&gt; &gt;::checkValidity&quot;, int __formal = 0n72)+0x31 [C:\home\webkit\gc\WebKitBuild\Debug\WTF\Headers\wtf\Assertions.h @ 693]
02 00000033`2bfff3e0 00007ffc`3c561fd8 WebKit2!WTF::HashTableConstIterator&lt;WTF::HashTable&lt;PAL::SessionID,WTF::KeyValuePair&lt;PAL::SessionID,WTF::RefPtr&lt;WebKit::WebIDBServer,WTF::RawPtrTraits&lt;WebKit::WebIDBServer&gt;,WTF::DefaultRefDerefTraits&lt;WebKit::WebIDBServer&gt; &gt; &gt;,WTF::KeyValuePairKeyExtractor&lt;WTF::KeyValuePair&lt;PAL::SessionID,WTF::RefPtr&lt;WebKit::WebIDBServer,WTF::RawPtrTraits&lt;WebKit::WebIDBServer&gt;,WTF::DefaultRefDerefTraits&lt;WebKit::WebIDBServer&gt; &gt; &gt; &gt;,WTF::DefaultHash&lt;PAL::SessionID&gt;,WTF::HashMap&lt;PAL::SessionID,WTF::RefPtr&lt;WebKit::WebIDBServer,WTF::RawPtrTraits&lt;WebKit::WebIDBServer&gt;,WTF::DefaultRefDerefTraits&lt;WebKit::WebIDBServer&gt; &gt;,WTF::DefaultHash&lt;PAL::SessionID&gt;,WTF::HashTraits&lt;PAL::SessionID&gt;,WTF::HashTraits&lt;WTF::RefPtr&lt;WebKit::WebIDBServer,WTF::RawPtrTraits&lt;WebKit::WebIDBServer&gt;,WTF::DefaultRefDerefTraits&lt;WebKit::WebIDBServer&gt; &gt; &gt;,WTF::HashTableTraits&gt;::KeyValuePairTraits,WTF::HashTraits&lt;PAL::SessionID&gt; &gt;,PAL::SessionID,WTF::KeyValuePair&lt;PAL::SessionID,WTF::RefPtr&lt;WebKit::WebIDBServer,WTF::RawPtrTraits&lt;WebKit::WebIDBServer&gt;,WTF::DefaultRefDerefTraits&lt;WebKit::WebIDBServer&gt; &gt; &gt;,WTF::KeyValuePairKeyExtractor&lt;WTF::KeyValuePair&lt;PAL::SessionID,WTF::RefPtr&lt;WebKit::WebIDBServer,WTF::RawPtrTraits&lt;WebKit::WebIDBServer&gt;,WTF::DefaultRefDerefTraits&lt;WebKit::WebIDBServer&gt; &gt; &gt; &gt;,WTF::DefaultHash&lt;PAL::SessionID&gt;,WTF::HashMap&lt;PAL::SessionID,WTF::RefPtr&lt;WebKit::WebIDBServer,WTF::RawPtrTraits&lt;WebKit::WebIDBServer&gt;,WTF::DefaultRefDerefTraits&lt;WebKit::WebIDBServer&gt; &gt;,WTF::DefaultHash&lt;PAL::SessionID&gt;,WTF::HashTraits&lt;PAL::SessionID&gt;,WTF::HashTraits&lt;WTF::RefPtr&lt;WebKit::WebIDBServer,WTF::RawPtrTraits&lt;WebKit::WebIDBServer&gt;,WTF::DefaultRefDerefTraits&lt;WebKit::WebIDBServer&gt; &gt; &gt;,WTF::HashTableTraits&gt;::KeyValuePairTraits,WTF::HashTraits&lt;PAL::SessionID&gt; &gt;::checkValidity(void)+0x72 [C:\home\webkit\gc\WebKitBuild\Debug\WTF\Headers\wtf\HashTable.h @ 219]
03 00000033`2bfff410 00007ffc`3c56259b WebKit2!WTF::HashTableConstIterator&lt;WTF::HashTable&lt;PAL::SessionID,WTF::KeyValuePair&lt;PAL::SessionID,WTF::RefPtr&lt;WebKit::WebIDBServer,WTF::RawPtrTraits&lt;WebKit::WebIDBServer&gt;,WTF::DefaultRefDerefTraits&lt;WebKit::WebIDBServer&gt; &gt; &gt;,WTF::KeyValuePairKeyExtractor&lt;WTF::KeyValuePair&lt;PAL::SessionID,WTF::RefPtr&lt;WebKit::WebIDBServer,WTF::RawPtrTraits&lt;WebKit::WebIDBServer&gt;,WTF::DefaultRefDerefTraits&lt;WebKit::WebIDBServer&gt; &gt; &gt; &gt;,WTF::DefaultHash&lt;PAL::SessionID&gt;,WTF::HashMap&lt;PAL::SessionID,WTF::RefPtr&lt;WebKit::WebIDBServer,WTF::RawPtrTraits&lt;WebKit::WebIDBServer&gt;,WTF::DefaultRefDerefTraits&lt;WebKit::WebIDBServer&gt; &gt;,WTF::DefaultHash&lt;PAL::SessionID&gt;,WTF::HashTraits&lt;PAL::SessionID&gt;,WTF::HashTraits&lt;WTF::RefPtr&lt;WebKit::WebIDBServer,WTF::RawPtrTraits&lt;WebKit::WebIDBServer&gt;,WTF::DefaultRefDerefTraits&lt;WebKit::WebIDBServer&gt; &gt; &gt;,WTF::HashTableTraits&gt;::KeyValuePairTraits,WTF::HashTraits&lt;PAL::SessionID&gt; &gt;,PAL::SessionID,WTF::KeyValuePair&lt;PAL::SessionID,WTF::RefPtr&lt;WebKit::WebIDBServer,WTF::RawPtrTraits&lt;WebKit::WebIDBServer&gt;,WTF::DefaultRefDerefTraits&lt;WebKit::WebIDBServer&gt; &gt; &gt;,WTF::KeyValuePairKeyExtractor&lt;WTF::KeyValuePair&lt;PAL::SessionID,WTF::RefPtr&lt;WebKit::WebIDBServer,WTF::RawPtrTraits&lt;WebKit::WebIDBServer&gt;,WTF::DefaultRefDerefTraits&lt;WebKit::WebIDBServer&gt; &gt; &gt; &gt;,WTF::DefaultHash&lt;PAL::SessionID&gt;,WTF::HashMap&lt;PAL::SessionID,WTF::RefPtr&lt;WebKit::WebIDBServer,WTF::RawPtrTraits&lt;WebKit::WebIDBServer&gt;,WTF::DefaultRefDerefTraits&lt;WebKit::WebIDBServer&gt; &gt;,WTF::DefaultHash&lt;PAL::SessionID&gt;,WTF::HashTraits&lt;PAL::SessionID&gt;,WTF::HashTraits&lt;WTF::RefPtr&lt;WebKit::WebIDBServer,WTF::RawPtrTraits&lt;WebKit::WebIDBServer&gt;,WTF::DefaultRefDerefTraits&lt;WebKit::WebIDBServer&gt; &gt; &gt;,WTF::HashTableTraits&gt;::KeyValuePairTraits,WTF::HashTraits&lt;PAL::SessionID&gt; &gt;::operator++(void)+0x28 [C:\home\webkit\gc\WebKitBuild\Debug\WTF\Headers\wtf\HashTable.h @ 187]
04 00000033`2bfff440 00007ffc`3c5627db WebKit2!WTF::HashTableIterator&lt;WTF::HashTable&lt;PAL::SessionID,WTF::KeyValuePair&lt;PAL::SessionID,WTF::RefPtr&lt;WebKit::WebIDBServer,WTF::RawPtrTraits&lt;WebKit::WebIDBServer&gt;,WTF::DefaultRefDerefTraits&lt;WebKit::WebIDBServer&gt; &gt; &gt;,WTF::KeyValuePairKeyExtractor&lt;WTF::KeyValuePair&lt;PAL::SessionID,WTF::RefPtr&lt;WebKit::WebIDBServer,WTF::RawPtrTraits&lt;WebKit::WebIDBServer&gt;,WTF::DefaultRefDerefTraits&lt;WebKit::WebIDBServer&gt; &gt; &gt; &gt;,WTF::DefaultHash&lt;PAL::SessionID&gt;,WTF::HashMap&lt;PAL::SessionID,WTF::RefPtr&lt;WebKit::WebIDBServer,WTF::RawPtrTraits&lt;WebKit::WebIDBServer&gt;,WTF::DefaultRefDerefTraits&lt;WebKit::WebIDBServer&gt; &gt;,WTF::DefaultHash&lt;PAL::SessionID&gt;,WTF::HashTraits&lt;PAL::SessionID&gt;,WTF::HashTraits&lt;WTF::RefPtr&lt;WebKit::WebIDBServer,WTF::RawPtrTraits&lt;WebKit::WebIDBServer&gt;,WTF::DefaultRefDerefTraits&lt;WebKit::WebIDBServer&gt; &gt; &gt;,WTF::HashTableTraits&gt;::KeyValuePairTraits,WTF::HashTraits&lt;PAL::SessionID&gt; &gt;,PAL::SessionID,WTF::KeyValuePair&lt;PAL::SessionID,WTF::RefPtr&lt;WebKit::WebIDBServer,WTF::RawPtrTraits&lt;WebKit::WebIDBServer&gt;,WTF::DefaultRefDerefTraits&lt;WebKit::WebIDBServer&gt; &gt; &gt;,WTF::KeyValuePairKeyExtractor&lt;WTF::KeyValuePair&lt;PAL::SessionID,WTF::RefPtr&lt;WebKit::WebIDBServer,WTF::RawPtrTraits&lt;WebKit::WebIDBServer&gt;,WTF::DefaultRefDerefTraits&lt;WebKit::WebIDBServer&gt; &gt; &gt; &gt;,WTF::DefaultHash&lt;PAL::SessionID&gt;,WTF::HashMap&lt;PAL::SessionID,WTF::RefPtr&lt;WebKit::WebIDBServer,WTF::RawPtrTraits&lt;WebKit::WebIDBServer&gt;,WTF::DefaultRefDerefTraits&lt;WebKit::WebIDBServer&gt; &gt;,WTF::DefaultHash&lt;PAL::SessionID&gt;,WTF::HashTraits&lt;PAL::SessionID&gt;,WTF::HashTraits&lt;WTF::RefPtr&lt;WebKit::WebIDBServer,WTF::RawPtrTraits&lt;WebKit::WebIDBServer&gt;,WTF::DefaultRefDerefTraits&lt;WebKit::WebIDBServer&gt; &gt; &gt;,WTF::HashTableTraits&gt;::KeyValuePairTraits,WTF::HashTraits&lt;PAL::SessionID&gt; &gt;::operator++(void)+0x2b [C:\home\webkit\gc\WebKitBuild\Debug\WTF\Headers\wtf\HashTable.h @ 273]
05 00000033`2bfff470 00007ffc`3c5629db WebKit2!WTF::HashTableIteratorAdapter&lt;WTF::HashTable&lt;PAL::SessionID,WTF::KeyValuePair&lt;PAL::SessionID,WTF::RefPtr&lt;WebKit::WebIDBServer,WTF::RawPtrTraits&lt;WebKit::WebIDBServer&gt;,WTF::DefaultRefDerefTraits&lt;WebKit::WebIDBServer&gt; &gt; &gt;,WTF::KeyValuePairKeyExtractor&lt;WTF::KeyValuePair&lt;PAL::SessionID,WTF::RefPtr&lt;WebKit::WebIDBServer,WTF::RawPtrTraits&lt;WebKit::WebIDBServer&gt;,WTF::DefaultRefDerefTraits&lt;WebKit::WebIDBServer&gt; &gt; &gt; &gt;,WTF::DefaultHash&lt;PAL::SessionID&gt;,WTF::HashMap&lt;PAL::SessionID,WTF::RefPtr&lt;WebKit::WebIDBServer,WTF::RawPtrTraits&lt;WebKit::WebIDBServer&gt;,WTF::DefaultRefDerefTraits&lt;WebKit::WebIDBServer&gt; &gt;,WTF::DefaultHash&lt;PAL::SessionID&gt;,WTF::HashTraits&lt;PAL::SessionID&gt;,WTF::HashTraits&lt;WTF::RefPtr&lt;WebKit::WebIDBServer,WTF::RawPtrTraits&lt;WebKit::WebIDBServer&gt;,WTF::DefaultRefDerefTraits&lt;WebKit::WebIDBServer&gt; &gt; &gt;,WTF::HashTableTraits&gt;::KeyValuePairTraits,WTF::HashTraits&lt;PAL::SessionID&gt; &gt;,WTF::KeyValuePair&lt;PAL::SessionID,WTF::RefPtr&lt;WebKit::WebIDBServer,WTF::RawPtrTraits&lt;WebKit::WebIDBServer&gt;,WTF::DefaultRefDerefTraits&lt;WebKit::WebIDBServer&gt; &gt; &gt; &gt;::operator++(void)+0x2b [C:\home\webkit\gc\WebKitBuild\Debug\WTF\Headers\wtf\HashIterators.h @ 80]
06 00000033`2bfff4a0 00007ffc`3c4cdb37 WebKit2!WTF::HashTableValuesIterator&lt;WTF::HashTable&lt;PAL::SessionID,WTF::KeyValuePair&lt;PAL::SessionID,WTF::RefPtr&lt;WebKit::WebIDBServer,WTF::RawPtrTraits&lt;WebKit::WebIDBServer&gt;,WTF::DefaultRefDerefTraits&lt;WebKit::WebIDBServer&gt; &gt; &gt;,WTF::KeyValuePairKeyExtractor&lt;WTF::KeyValuePair&lt;PAL::SessionID,WTF::RefPtr&lt;WebKit::WebIDBServer,WTF::RawPtrTraits&lt;WebKit::WebIDBServer&gt;,WTF::DefaultRefDerefTraits&lt;WebKit::WebIDBServer&gt; &gt; &gt; &gt;,WTF::DefaultHash&lt;PAL::SessionID&gt;,WTF::HashMap&lt;PAL::SessionID,WTF::RefPtr&lt;WebKit::WebIDBServer,WTF::RawPtrTraits&lt;WebKit::WebIDBServer&gt;,WTF::DefaultRefDerefTraits&lt;WebKit::WebIDBServer&gt; &gt;,WTF::DefaultHash&lt;PAL::SessionID&gt;,WTF::HashTraits&lt;PAL::SessionID&gt;,WTF::HashTraits&lt;WTF::RefPtr&lt;WebKit::WebIDBServer,WTF::RawPtrTraits&lt;WebKit::WebIDBServer&gt;,WTF::DefaultRefDerefTraits&lt;WebKit::WebIDBServer&gt; &gt; &gt;,WTF::HashTableTraits&gt;::KeyValuePairTraits,WTF::HashTraits&lt;PAL::SessionID&gt; &gt;,PAL::SessionID,WTF::RefPtr&lt;WebKit::WebIDBServer,WTF::RawPtrTraits&lt;WebKit::WebIDBServer&gt;,WTF::DefaultRefDerefTraits&lt;WebKit::WebIDBServer&gt; &gt; &gt;::operator++(void)+0x2b [C:\home\webkit\gc\WebKitBuild\Debug\WTF\Headers\wtf\HashIterators.h @ 163]
07 00000033`2bfff4d0 00007ffc`3c7cc2be WebKit2!WebKit::NetworkProcess::didClose(class IPC::Connection * __formal = 0x000001b5`0afb1bb0)+0x197 [C:\home\webkit\gc\Source\WebKit\NetworkProcess\NetworkProcess.cpp @ 277]
08 00000033`2bfff670 00007ffc`3c7cef0f WebKit2!&lt;lambda_6f468efff3d3d300976f9a19a0593f24&gt;::operator()(void)+0x9e [C:\home\webkit\gc\Source\WebKit\Platform\IPC\Connection.cpp @ 895]
09 00000033`2bfff6c0 00007ffc`6cc89cb7 WebKit2!WTF::Detail::CallableWrapper&lt;&lt;lambda_6f468efff3d3d300976f9a19a0593f24&gt;,void&gt;::call(void)+0x2f [C:\home\webkit\gc\WebKitBuild\Debug\WTF\Headers\wtf\Function.h @ 52]
0a 00000033`2bfff6f0 00007ffc`6ccffe87 WTF!WTF::Function&lt;void __cdecl(void)+0xa7 [C:\home\webkit\gc\Source\WTF\wtf\Function.h @ 84]
0b 00000033`2bfff730 00007ffc`6cdf37c5 WTF!WTF::RunLoop::performWork(void)+0x187 [C:\home\webkit\gc\Source\WTF\wtf\RunLoop.cpp @ 134]
0c 00000033`2bfff830 00007ffc`6cdf3718 WTF!WTF::RunLoop::wndProc(struct HWND__ * hWnd = 0x00000000`00740d62, unsigned int message = 0x401, unsigned int64 wParam = 0x000001b5`0af93060, int64 lParam = 0n0)+0x55 [C:\home\webkit\gc\Source\WTF\wtf\win\RunLoopWin.cpp @ 57]
0d 00000033`2bfff870 00007ffc`b318e858 WTF!WTF::RunLoop::RunLoopWndProc(struct HWND__ * hWnd = 0x00000000`00740d62, unsigned int message = 0x401, unsigned int64 wParam = 0x000001b5`0af93060, int64 lParam = 0n0)+0x68 [C:\home\webkit\gc\Source\WTF\wtf\win\RunLoopWin.cpp @ 39]
0e 00000033`2bfff8c0 00007ffc`b318e299 USER32!UserCallWinProcCheckWow+0x2f8
0f 00000033`2bfffa50 00007ffc`6cdf2b54 USER32!DispatchMessageWorker+0x249
10 00000033`2bfffad0 00007ffc`3bb2496f WTF!WTF::RunLoop::run(void)+0x64 [C:\home\webkit\gc\Source\WTF\wtf\win\RunLoopWin.cpp @ 74]
11 00000033`2bfffb60 00007ffc`3bb24091 WebKit2!WebKit::AuxiliaryProcessMainBase&lt;WebKit::NetworkProcess,0&gt;::run(int argc = 0n7, char ** argv = 0x000001b5`0af9d880)+0xbf [C:\home\webkit\gc\Source\WebKit\Shared\AuxiliaryProcessMain.h @ 71]
12 00000033`2bfffbb0 00007ffc`3bb23f9f WebKit2!WebKit::AuxiliaryProcessMain&lt;WebKit::NetworkProcessMainCurl&gt;(int argc = 0n7, char ** argv = 0x000001b5`0af9d880)+0x71 [C:\home\webkit\gc\Source\WebKit\Shared\AuxiliaryProcessMain.h @ 97]
13 00000033`2bfffc80 00007ff6`ec5e1030 WebKit2!WebKit::NetworkProcessMain(int argc = 0n7, char ** argv = 0x000001b5`0af9d880)+0x2f [C:\home\webkit\gc\Source\WebKit\NetworkProcess\curl\NetworkProcessMainCurl.cpp @ 45]
14 00000033`2bfffcb0 00007ff6`ec5e1270 WebKitNetworkProcess!main(int argc = 0n7, char ** argv = 0x000001b5`0af9d880)+0x30 [C:\home\webkit\gc\Source\WebKit\NetworkProcess\EntryPoint\win\NetworkProcessMain.cpp @ 35]
15 (Inline Function) --------`-------- WebKitNetworkProcess!invoke_main(void)+0x22 [D:\a01\_work\26\s\src\vctools\crt\vcstartup\src\startup\exe_common.inl @ 78]
16 00000033`2bfffce0 00007ffc`b30d7034 WebKitNetworkProcess!__scrt_common_main_seh(void)+0x10c [D:\a01\_work\26\s\src\vctools\crt\vcstartup\src\startup\exe_common.inl @ 288]
17 00000033`2bfffd20 00007ffc`b4862651 KERNEL32!BaseThreadInitThunk+0x14
18 00000033`2bfffd50 00000000`00000000 ntdll!RtlUserThreadStart+0x21</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1754507</commentid>
    <comment_count>1</comment_count>
      <attachid>427124</attachid>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2021-04-26 23:35:33 -0700</bug_when>
    <thetext>Created attachment 427124
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1754614</commentid>
    <comment_count>2</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-04-27 08:21:26 -0700</bug_when>
    <thetext>&lt;rdar://problem/77210724&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1754621</commentid>
    <comment_count>3</comment_count>
      <attachid>427124</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2021-04-27 08:38:01 -0700</bug_when>
    <thetext>Comment on attachment 427124
Patch

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

&gt; Source/WebKit/NetworkProcess/NetworkProcess.cpp:-278
&gt; -    for (auto&amp; server : m_webIDBServers.values())
&gt; -        server-&gt;close();

Nice catch! Can we replace this with something like:

for (auto&amp; sessionID : copyToVector(m_webIDBServers.keys()))
        m_webIDBServers.get(sessionID)-&gt;close();

So we are sure the loop will only run limited times (even when logic of close() changes not).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1754622</commentid>
    <comment_count>4</comment_count>
      <attachid>427124</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-04-27 08:40:32 -0700</bug_when>
    <thetext>Comment on attachment 427124
Patch

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

&gt;&gt; Source/WebKit/NetworkProcess/NetworkProcess.cpp:-278
&gt;&gt; -        server-&gt;close();
&gt; 
&gt; Nice catch! Can we replace this with something like:
&gt; 
&gt; for (auto&amp; sessionID : copyToVector(m_webIDBServers.keys()))
&gt;         m_webIDBServers.get(sessionID)-&gt;close();
&gt; 
&gt; So we are sure the loop will only run limited times (even when logic of close() changes not).

Sihui, would you mind explaining why your proposal is better than one Fujii proposed? I kinda like his proposal because:
1. No need for a copy to a vector
2. No hash table look-up of IDs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1754623</commentid>
    <comment_count>5</comment_count>
      <attachid>427124</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-04-27 08:44:01 -0700</bug_when>
    <thetext>Comment on attachment 427124
Patch

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

&gt;&gt;&gt; Source/WebKit/NetworkProcess/NetworkProcess.cpp:-278
&gt;&gt;&gt; -        server-&gt;close();
&gt;&gt; 
&gt;&gt; Nice catch! Can we replace this with something like:
&gt;&gt; 
&gt;&gt; for (auto&amp; sessionID : copyToVector(m_webIDBServers.keys()))
&gt;&gt;         m_webIDBServers.get(sessionID)-&gt;close();
&gt;&gt; 
&gt;&gt; So we are sure the loop will only run limited times (even when logic of close() changes not).
&gt; 
&gt; Sihui, would you mind explaining why your proposal is better than one Fujii proposed? I kinda like his proposal because:
&gt; 1. No need for a copy to a vector
&gt; 2. No hash table look-up of IDs.

Not to mention that the dereference of m_webIDBServers.get(sessionID) looks potentially unsafe here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1754629</commentid>
    <comment_count>6</comment_count>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2021-04-27 09:09:09 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #5)
&gt; Comment on attachment 427124 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=427124&amp;action=review
&gt; 
&gt; &gt;&gt;&gt; Source/WebKit/NetworkProcess/NetworkProcess.cpp:-278
&gt; &gt;&gt;&gt; -        server-&gt;close();
&gt; &gt;&gt; 
&gt; &gt;&gt; Nice catch! Can we replace this with something like:
&gt; &gt;&gt; 
&gt; &gt;&gt; for (auto&amp; sessionID : copyToVector(m_webIDBServers.keys()))
&gt; &gt;&gt;         m_webIDBServers.get(sessionID)-&gt;close();
&gt; &gt;&gt; 
&gt; &gt;&gt; So we are sure the loop will only run limited times (even when logic of close() changes not).
&gt; &gt; 
&gt; &gt; Sihui, would you mind explaining why your proposal is better than one Fujii proposed? I kinda like his proposal because:
&gt; &gt; 1. No need for a copy to a vector
&gt; &gt; 2. No hash table look-up of IDs.
&gt; 
&gt; Not to mention that the dereference of m_webIDBServers.get(sessionID) looks
&gt; potentially unsafe here.

Yes, should better check if m_webIDBServers contains sessionID first.

I suggested that just because it makes sure the loop ends no matter what WebIDBServer::close() does.

I guess adding an assert to current implementation to make sure the value does not exist in map after close() will also do.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1754634</commentid>
    <comment_count>7</comment_count>
      <attachid>427124</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-04-27 09:13:38 -0700</bug_when>
    <thetext>Comment on attachment 427124
Patch

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

&gt;&gt;&gt;&gt; Source/WebKit/NetworkProcess/NetworkProcess.cpp:-278
&gt;&gt;&gt;&gt; -        server-&gt;close();
&gt;&gt;&gt; 
&gt;&gt;&gt; Nice catch! Can we replace this with something like:
&gt;&gt;&gt; 
&gt;&gt;&gt; for (auto&amp; sessionID : copyToVector(m_webIDBServers.keys()))
&gt;&gt;&gt;         m_webIDBServers.get(sessionID)-&gt;close();
&gt;&gt;&gt; 
&gt;&gt;&gt; So we are sure the loop will only run limited times (even when logic of close() changes not).
&gt;&gt; 
&gt;&gt; Sihui, would you mind explaining why your proposal is better than one Fujii proposed? I kinda like his proposal because:
&gt;&gt; 1. No need for a copy to a vector
&gt;&gt; 2. No hash table look-up of IDs.
&gt; 
&gt; Not to mention that the dereference of m_webIDBServers.get(sessionID) looks potentially unsafe here.

I agree with Chris that Fujii’s original is better than the suggested replacement. I have two thoughts:

1) It’s a *little* scary that the server is removed indirectly through the call to close. This code relies on it happening synchronously and 100% reliably in that function.

2) There is a function named &quot;random()&quot; that does the same thing as begin(), more efficiently. Its name makes it sound less apropos than begin, but it’s probably better for a case like this, for just selecting one item from a hash table to operate on without preference.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1754635</commentid>
    <comment_count>8</comment_count>
      <attachid>427124</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-04-27 09:14:54 -0700</bug_when>
    <thetext>Comment on attachment 427124
Patch

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

&gt;&gt;&gt;&gt;&gt; Source/WebKit/NetworkProcess/NetworkProcess.cpp:-278
&gt;&gt;&gt;&gt;&gt; -        server-&gt;close();
&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt; Nice catch! Can we replace this with something like:
&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt; for (auto&amp; sessionID : copyToVector(m_webIDBServers.keys()))
&gt;&gt;&gt;&gt;         m_webIDBServers.get(sessionID)-&gt;close();
&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt; So we are sure the loop will only run limited times (even when logic of close() changes not).
&gt;&gt;&gt; 
&gt;&gt;&gt; Sihui, would you mind explaining why your proposal is better than one Fujii proposed? I kinda like his proposal because:
&gt;&gt;&gt; 1. No need for a copy to a vector
&gt;&gt;&gt; 2. No hash table look-up of IDs.
&gt;&gt; 
&gt;&gt; Not to mention that the dereference of m_webIDBServers.get(sessionID) looks potentially unsafe here.
&gt; 
&gt; Yes, should better check if m_webIDBServers contains sessionID first.
&gt; 
&gt; I suggested that just because it makes sure the loop ends no matter what WebIDBServer::close() does.
&gt; 
&gt; I guess adding an assert to current implementation to make sure the value does not exist in map after close() will also do.

To be safe and make sure we cannot end up in an infinite loop, I guess the best approach is to tweak Sihui&apos;s proposal like so then:
```
for (auto&amp; sessionID : copyToVector(m_webIDBServers.keys())) {
    if (auto* server = m_webIDBServers.get(sessionID))
        server-&gt;close();
}
```

I think the following would be a bit more efficient and concise though:
```
for (auto&amp; server : copyToVector(m_webIDBServers.values()))
    server-&gt;close();
```</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1754637</commentid>
    <comment_count>9</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-04-27 09:18:31 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #7)
&gt; Comment on attachment 427124 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=427124&amp;action=review
&gt; 
&gt; &gt;&gt;&gt;&gt; Source/WebKit/NetworkProcess/NetworkProcess.cpp:-278
&gt; &gt;&gt;&gt;&gt; -        server-&gt;close();
&gt; &gt;&gt;&gt; 
&gt; &gt;&gt;&gt; Nice catch! Can we replace this with something like:
&gt; &gt;&gt;&gt; 
&gt; &gt;&gt;&gt; for (auto&amp; sessionID : copyToVector(m_webIDBServers.keys()))
&gt; &gt;&gt;&gt;         m_webIDBServers.get(sessionID)-&gt;close();
&gt; &gt;&gt;&gt; 
&gt; &gt;&gt;&gt; So we are sure the loop will only run limited times (even when logic of close() changes not).
&gt; &gt;&gt; 
&gt; &gt;&gt; Sihui, would you mind explaining why your proposal is better than one Fujii proposed? I kinda like his proposal because:
&gt; &gt;&gt; 1. No need for a copy to a vector
&gt; &gt;&gt; 2. No hash table look-up of IDs.
&gt; &gt; 
&gt; &gt; Not to mention that the dereference of m_webIDBServers.get(sessionID) looks potentially unsafe here.
&gt; 
&gt; I agree with Chris that Fujii’s original is better than the suggested
&gt; replacement. I have two thoughts:
&gt; 
&gt; 1) It’s a *little* scary that the server is removed indirectly through the
&gt; call to close. This code relies on it happening synchronously and 100%
&gt; reliably in that function.
&gt; 
&gt; 2) There is a function named &quot;random()&quot; that does the same thing as begin(),
&gt; more efficiently. Its name makes it sound less apropos than begin, but it’s
&gt; probably better for a case like this, for just selecting one item from a
&gt; hash table to operate on without preference.

I looked at the implementation of random() and it does not look more efficient than begin() to me?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1754639</commentid>
    <comment_count>10</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-04-27 09:19:16 -0700</bug_when>
    <thetext>By the way, I did not mean to overwrite Darin&apos;s r+. I had a bugzilla conflict :/ Sorry about that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1754643</commentid>
    <comment_count>11</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-04-27 09:30:53 -0700</bug_when>
    <thetext>Wow, I was totally wrong about random(); please don’t switch to it. I was confusing it with takeAny().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1754645</commentid>
    <comment_count>12</comment_count>
      <attachid>427124</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-04-27 09:33:12 -0700</bug_when>
    <thetext>Comment on attachment 427124
Patch

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

Restoring r+, I personally think the patch is fine as is. Each WebIDBServer has a closeCallback that get passed to it when constructed and which removes the WebIDBServer from m_webIDBServers.

&gt; Source/WebKit/NetworkProcess/NetworkProcess.cpp:278
&gt; +        m_webIDBServers.values().begin()-&gt;get()-&gt;close();

I am surprised you really need the `-&gt;get()` here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1754709</commentid>
    <comment_count>13</comment_count>
      <attachid>427124</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2021-04-27 11:16:27 -0700</bug_when>
    <thetext>Comment on attachment 427124
Patch

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

&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; Source/WebKit/NetworkProcess/NetworkProcess.cpp:-278
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; -        server-&gt;close();
&gt;&gt;&gt;&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt;&gt;&gt;&gt; Nice catch! Can we replace this with something like:
&gt;&gt;&gt;&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt;&gt;&gt;&gt; for (auto&amp; sessionID : copyToVector(m_webIDBServers.keys()))
&gt;&gt;&gt;&gt;&gt;&gt;&gt;         m_webIDBServers.get(sessionID)-&gt;close();
&gt;&gt;&gt;&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt;&gt;&gt;&gt; So we are sure the loop will only run limited times (even when logic of close() changes not).
&gt;&gt;&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt;&gt;&gt; Sihui, would you mind explaining why your proposal is better than one Fujii proposed? I kinda like his proposal because:
&gt;&gt;&gt;&gt;&gt;&gt; 1. No need for a copy to a vector
&gt;&gt;&gt;&gt;&gt;&gt; 2. No hash table look-up of IDs.
&gt;&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt;&gt; Not to mention that the dereference of m_webIDBServers.get(sessionID) looks potentially unsafe here.
&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt; Yes, should better check if m_webIDBServers contains sessionID first.
&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt; I suggested that just because it makes sure the loop ends no matter what WebIDBServer::close() does.
&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt; I guess adding an assert to current implementation to make sure the value does not exist in map after close() will also do.
&gt;&gt;&gt; 
&gt;&gt;&gt; I agree with Chris that Fujii’s original is better than the suggested replacement. I have two thoughts:
&gt;&gt;&gt; 
&gt;&gt;&gt; 1) It’s a *little* scary that the server is removed indirectly through the call to close. This code relies on it happening synchronously and 100% reliably in that function.
&gt;&gt;&gt; 
&gt;&gt;&gt; 2) There is a function named &quot;random()&quot; that does the same thing as begin(), more efficiently. Its name makes it sound less apropos than begin, but it’s probably better for a case like this, for just selecting one item from a hash table to operate on without preference.
&gt;&gt; 
&gt;&gt; To be safe and make sure we cannot end up in an infinite loop, I guess the best approach is to tweak Sihui&apos;s proposal like so then:
&gt;&gt; ```
&gt;&gt; for (auto&amp; sessionID : copyToVector(m_webIDBServers.keys())) {
&gt;&gt;     if (auto* server = m_webIDBServers.get(sessionID))
&gt;&gt;         server-&gt;close();
&gt;&gt; }
&gt;&gt; ```
&gt;&gt; 
&gt;&gt; I think the following would be a bit more efficient and concise though:
&gt;&gt; ```
&gt;&gt; for (auto&amp; server : copyToVector(m_webIDBServers.values()))
&gt;&gt;     server-&gt;close();
&gt;&gt; ```
&gt; 
&gt; I looked at the implementation of random() and it does not look more efficient than begin() to me?

A downside to removing begin() repeatedly is that computing begin() requires iterating from the start of the table to find an in-use bucket, and that iteration becomes increasingly long as you remove what you find. In the worst case this would be O(N^2); however, the hash table eventually saves you by rehashing as it shrinks.

In theory, removing random() could result in a less lopsided pattern of iteration and removal, possibly saving some time.

I think the ideal behavior would move the existing table into a temporary, and then iterate the temporary calling close() (without removing from it). That saves all the rehashing commotion, and any need to copy. Not sure if it&apos;s valid to effectively remove an entry before calling close() in this case, though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1754770</commentid>
    <comment_count>14</comment_count>
      <attachid>427191</attachid>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2021-04-27 13:46:41 -0700</bug_when>
    <thetext>Created attachment 427191
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1754772</commentid>
    <comment_count>15</comment_count>
      <attachid>427191</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-04-27 13:51:37 -0700</bug_when>
    <thetext>Comment on attachment 427191
Patch

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

&gt; Source/WebKit/NetworkProcess/NetworkProcess.cpp:277
&gt; +    auto servers = WTFMove(m_webIDBServers);

We prefer `std::exchange(m_webIDBServers, { })` in such cases, since  m_webIDBServers may get used later on.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1754773</commentid>
    <comment_count>16</comment_count>
      <attachid>427191</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-04-27 13:52:40 -0700</bug_when>
    <thetext>Comment on attachment 427191
Patch

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

&gt; Source/WebKit/NetworkProcess/NetworkProcess.cpp:278
&gt; +    for (auto&amp; server : servers.values())

Also, this can be done on a single line:
```
for (auto&amp; server : std::exchange(m_webIDBServers, { }))
    server-&gt;close();
```</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1754783</commentid>
    <comment_count>17</comment_count>
      <attachid>427191</attachid>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2021-04-27 14:11:54 -0700</bug_when>
    <thetext>Comment on attachment 427191
Patch

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

&gt;&gt; Source/WebKit/NetworkProcess/NetworkProcess.cpp:278
&gt;&gt; +    for (auto&amp; server : servers.values())
&gt; 
&gt; Also, this can be done on a single line:
&gt; ```
&gt; for (auto&amp; server : std::exchange(m_webIDBServers, { }))
&gt;     server-&gt;close();
&gt; ```

Unfortunately, the single line approach still causes the assertion failure.
for (auto&amp; server : std::exchange(m_webIDBServers, { }).values())
It seems that I should ensure the HashMap is alive for the &apos;for&apos; statement.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1754784</commentid>
    <comment_count>18</comment_count>
      <attachid>427195</attachid>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2021-04-27 14:12:29 -0700</bug_when>
    <thetext>Created attachment 427195
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1754785</commentid>
    <comment_count>19</comment_count>
      <attachid>427195</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-04-27 14:28:51 -0700</bug_when>
    <thetext>Comment on attachment 427195
Patch

Oh yes. That&apos;s because of the `.values()` call. My bad.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1754794</commentid>
    <comment_count>20</comment_count>
      <attachid>427195</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-04-27 14:49:57 -0700</bug_when>
    <thetext>Comment on attachment 427195
Patch

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

&gt; Source/WebKit/NetworkProcess/NetworkProcess.cpp:278
&gt; +    auto servers = std::exchange(m_webIDBServers, { });
&gt; +    for (auto&amp; server : servers.values())

So annoying, this difference between function calls (temporaries last until the end of the full expression) and things like the range-based for statement (temporaries last only until the end of the expression and are destroyed before we start iterating the loop).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1754804</commentid>
    <comment_count>21</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-04-27 15:11:24 -0700</bug_when>
    <thetext>Committed r276671 (237090@main): &lt;https://commits.webkit.org/237090@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 427195.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>427124</attachid>
            <date>2021-04-26 23:35:33 -0700</date>
            <delta_ts>2021-04-27 13:46:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-225089-20210427153531.patch</filename>
            <type>text/plain</type>
            <size>1623</size>
            <attacher name="Fujii Hironori">fujii</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc2NjE2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDk0NGRjM2NjZjI1NGYwYmZi
ZTcxYTIxZGUyODUxZDViMmFmNGNlYmEuLjRkOWJlZmRjNTBjMzI5ZTgwMmZmOTMyNGU2ZWI3ZDE5
ODY1MGZlOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMjEtMDQtMjYgIEZ1amlpIEhp
cm9ub3JpICA8SGlyb25vcmkuRnVqaWlAc29ueS5jb20+CisKKyAgICAgICAgSGFzaFRhYmxlQ29u
c3RJdGVyYXRvcidzIGNvbnNpc3RlbmN5IGFzc2VydGlvbiBmYWlscyB3aGlsZSBjbG9zaW5nIG1f
d2ViSURCU2VydmVycyBpbiBOZXR3b3JrUHJvY2Vzczo6ZGlkQ2xvc2Ugc2luY2UgcjI3NTg0Ngor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI1MDg5CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIGl0ZW1z
IG9mIG1fd2ViSURCU2VydmVycyB3ZXJlIHJlbW92ZWQgd2hpbGUgaXRlcmF0aW5nCisgICAgICAg
IG1fd2ViSURCU2VydmVycy4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmRpZENsb3NlKTogQ2xv
c2UgdGhlIGl0ZW1zIG9mCisgICAgICAgIG1fd2ViSURCU2VydmVycyB3aXRob3V0IHVzaW5nIHRo
ZSBpdGVyYXRvci4KKwogMjAyMS0wNC0yNiAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNl
bkB3ZWJraXQub3JnPgogCiAgICAgICAgIFVwZGF0ZSBNYWMtc3BlY2lmaWMgQ01ha2UgZmlsZXMK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3Mu
Y3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKaW5k
ZXggYmVhMWNhY2I0NDI0ZTJjZjAyMjg0NzQ3OWM1MmI0ZjEzODMyMzVkOS4uNTQ3OTg5MTgxYzk4
YzgyZGM1ZGEwZWNlZWJiZDlmOGQ1Y2VmZWQ0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKQEAgLTI3NCw4ICsyNzQsOCBAQCB2b2lkIE5l
dHdvcmtQcm9jZXNzOjpkaWRDbG9zZShJUEM6OkNvbm5lY3Rpb24mKQogICAgIH0pOwogCiAgICAg
Ly8gTWFrZSBzdXJlIHJlZmVyZW5jZXMgdG8gTmV0d29ya1Byb2Nlc3MgaW4gc3BhY2VSZXF1ZXN0
ZXIgYW5kIGNsb3NlSGFuZGxlciBpcyByZW1vdmVkLgotICAgIGZvciAoYXV0byYgc2VydmVyIDog
bV93ZWJJREJTZXJ2ZXJzLnZhbHVlcygpKQotICAgICAgICBzZXJ2ZXItPmNsb3NlKCk7CisgICAg
d2hpbGUgKCFtX3dlYklEQlNlcnZlcnMuaXNFbXB0eSgpKQorICAgICAgICBtX3dlYklEQlNlcnZl
cnMudmFsdWVzKCkuYmVnaW4oKS0+Z2V0KCktPmNsb3NlKCk7CiB9CiAKIHZvaWQgTmV0d29ya1By
b2Nlc3M6OmRpZENyZWF0ZURvd25sb2FkKCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>427191</attachid>
            <date>2021-04-27 13:46:41 -0700</date>
            <delta_ts>2021-04-27 13:57:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-225089-20210428054639.patch</filename>
            <type>text/plain</type>
            <size>1588</size>
            <attacher name="Fujii Hironori">fujii</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc2NjU1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDk1NWM4YzcxY2Y3YjFkNDFk
YjEyZjcxY2E4ZmJkMGU1ZjI4NGM1MWUuLjQyNzFjYTI3ZDJmYmFhMzkyNWY4NzdhNDFhMzNmZGQx
NGI3NzdiYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMjEtMDQtMjcgIEZ1amlpIEhp
cm9ub3JpICA8SGlyb25vcmkuRnVqaWlAc29ueS5jb20+CisKKyAgICAgICAgSGFzaFRhYmxlQ29u
c3RJdGVyYXRvcidzIGNvbnNpc3RlbmN5IGFzc2VydGlvbiBmYWlscyB3aGlsZSBjbG9zaW5nIG1f
d2ViSURCU2VydmVycyBpbiBOZXR3b3JrUHJvY2Vzczo6ZGlkQ2xvc2Ugc2luY2UgcjI3NTg0Ngor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI1MDg5CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgQ2hyaXMgRHVtZXouCisKKyAgICAgICAgVGhlIGl0ZW1zIG9m
IG1fd2ViSURCU2VydmVycyB3ZXJlIHJlbW92ZWQgd2hpbGUgaXRlcmF0aW5nCisgICAgICAgIG1f
d2ViSURCU2VydmVycy4KKworICAgICAgICBNb3ZlIG1fd2ViSURCU2VydmVycyB0byBhIHRlbXBv
cmFyeSBIYXNoTWFwIGJlZm9yZSBpdGVyYXRpbmcuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpk
aWRDbG9zZSk6IAorCiAyMDIxLTA0LTI3ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+
CiAKICAgICAgICAgRG9uJ3Qga2VlcCBsb2NhbCBzdG9yYWdlIGRhdGEgaW4gbWVtb3J5IGluIHRo
ZSBOZXR3b3JrUHJvY2VzcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtQcm9jZXNzLmNwcAppbmRleCAzZWEwYWFiNDQ5ZjYyZGZlODdkZmVjYzFmMTUxYjgwN2FiYTRh
ZjcxLi4xNjAzMGYwYWYzZjU4YjFmYWFkNzgyZDhiOWNhYmMyMDI4NjAwMTE5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcApAQCAtMjc0LDcg
KzI3NCw4IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmRpZENsb3NlKElQQzo6Q29ubmVjdGlvbiYp
CiAgICAgfSk7CiAKICAgICAvLyBNYWtlIHN1cmUgcmVmZXJlbmNlcyB0byBOZXR3b3JrUHJvY2Vz
cyBpbiBzcGFjZVJlcXVlc3RlciBhbmQgY2xvc2VIYW5kbGVyIGlzIHJlbW92ZWQuCi0gICAgZm9y
IChhdXRvJiBzZXJ2ZXIgOiBtX3dlYklEQlNlcnZlcnMudmFsdWVzKCkpCisgICAgYXV0byBzZXJ2
ZXJzID0gV1RGTW92ZShtX3dlYklEQlNlcnZlcnMpOworICAgIGZvciAoYXV0byYgc2VydmVyIDog
c2VydmVycy52YWx1ZXMoKSkKICAgICAgICAgc2VydmVyLT5jbG9zZSgpOwogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>427195</attachid>
            <date>2021-04-27 14:12:29 -0700</date>
            <delta_ts>2021-04-27 15:11:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-225089-20210428061228.patch</filename>
            <type>text/plain</type>
            <size>1598</size>
            <attacher name="Fujii Hironori">fujii</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc2NjU1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDk1NWM4YzcxY2Y3YjFkNDFk
YjEyZjcxY2E4ZmJkMGU1ZjI4NGM1MWUuLjUxZTIwZGMwMTRiY2U2OTMzOTY2MzEyOGI2MjQ2OTMz
ODIxMTE4MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMjEtMDQtMjcgIEZ1amlpIEhp
cm9ub3JpICA8SGlyb25vcmkuRnVqaWlAc29ueS5jb20+CisKKyAgICAgICAgSGFzaFRhYmxlQ29u
c3RJdGVyYXRvcidzIGNvbnNpc3RlbmN5IGFzc2VydGlvbiBmYWlscyB3aGlsZSBjbG9zaW5nIG1f
d2ViSURCU2VydmVycyBpbiBOZXR3b3JrUHJvY2Vzczo6ZGlkQ2xvc2Ugc2luY2UgcjI3NTg0Ngor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI1MDg5CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgQ2hyaXMgRHVtZXouCisKKyAgICAgICAgVGhlIGl0ZW1zIG9m
IG1fd2ViSURCU2VydmVycyB3ZXJlIHJlbW92ZWQgd2hpbGUgaXRlcmF0aW5nCisgICAgICAgIG1f
d2ViSURCU2VydmVycy4KKworICAgICAgICBNb3ZlIG1fd2ViSURCU2VydmVycyB0byBhIHRlbXBv
cmFyeSBIYXNoTWFwIGJlZm9yZSBpdGVyYXRpbmcuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpk
aWRDbG9zZSk6CisKIDIwMjEtMDQtMjcgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4K
IAogICAgICAgICBEb24ndCBrZWVwIGxvY2FsIHN0b3JhZ2UgZGF0YSBpbiBtZW1vcnkgaW4gdGhl
IE5ldHdvcmtQcm9jZXNzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Byb2Nlc3MuY3BwCmluZGV4IDNlYTBhYWI0NDlmNjJkZmU4N2RmZWNjMWYxNTFiODA3YWJhNGFm
NzEuLjYxYjk2MjMzMGU0NGVkMzcyNjgwNWNlNDYwOWIxOTFmMjRhNWVkOGUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCkBAIC0yNzQsNyAr
Mjc0LDggQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZGlkQ2xvc2UoSVBDOjpDb25uZWN0aW9uJikK
ICAgICB9KTsKIAogICAgIC8vIE1ha2Ugc3VyZSByZWZlcmVuY2VzIHRvIE5ldHdvcmtQcm9jZXNz
IGluIHNwYWNlUmVxdWVzdGVyIGFuZCBjbG9zZUhhbmRsZXIgaXMgcmVtb3ZlZC4KLSAgICBmb3Ig
KGF1dG8mIHNlcnZlciA6IG1fd2ViSURCU2VydmVycy52YWx1ZXMoKSkKKyAgICBhdXRvIHNlcnZl
cnMgPSBzdGQ6OmV4Y2hhbmdlKG1fd2ViSURCU2VydmVycywgeyB9KTsKKyAgICBmb3IgKGF1dG8m
IHNlcnZlciA6IHNlcnZlcnMudmFsdWVzKCkpCiAgICAgICAgIHNlcnZlci0+Y2xvc2UoKTsKIH0K
IAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>