<?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>224755</bug_id>
          
          <creation_ts>2021-04-19 06:59:53 -0700</creation_ts>
          <short_desc>URL::URL(HashTableDeletedValueType) triggers -Wuninitialized warnings with GCC 11</short_desc>
          <delta_ts>2021-04-23 07:36:06 -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>Web Template Framework</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=224889</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=224975</see_also>
          <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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Michael Catanzaro">mcatanzaro</reporter>
          <assigned_to name="Michael Catanzaro">mcatanzaro</assigned_to>
          <cc>achristensen</cc>
    
    <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>darin</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1751761</commentid>
    <comment_count>0</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2021-04-19 06:59:53 -0700</bug_when>
    <thetext>[2920/5456] Building CXX object Source/WebCore/CMakeFiles...vedSources/unified-sources/UnifiedSource-f74e0903-7.cpp.o
In file included from ../../Source/WebCore/page/SecurityOriginData.h:28,
                 from ../../Source/WebCore/workers/service/ServiceWorkerRegistrationKey.h:30,
                 from ../../Source/WebCore/workers/service/server/SWScriptStorage.cpp:32,
                 from WebCore/DerivedSources/unified-sources/UnifiedSource-f74e0903-7.cpp:1:
In member function ‘WTF::URL&amp; WTF::URL::operator=(WTF::URL&amp;&amp;)’,
    inlined from ‘void WebCore::ServiceWorkerRegistrationKey::setScope(WTF::URL&amp;&amp;)’ at ../../Source/WebCore/workers/service/ServiceWorkerRegistrationKey.h:52:44,
    inlined from ‘static void WTF::HashTraits&lt;WebCore::ServiceWorkerRegistrationKey&gt;::constructDeletedValue(WebCore::ServiceWorkerRegistrationKey&amp;)’ at ../../Source/WebCore/workers/service/ServiceWorkerRegistrationKey.h:109:99,
    inlined from ‘typename std::enable_if&lt;(! WTF::HashTraitHasCustomDelete&lt;Traits, T&gt;::value)&gt;::type WTF::hashTraitsDeleteBucket(T&amp;) [with Traits = WTF::HashTraits&lt;WebCore::ServiceWorkerRegistrationKey&gt;; T = WebCore::ServiceWorkerRegistrationKey]’ at WTF/Headers/wtf/HashTraits.h:305:34,
    inlined from ‘static void WTF::KeyValuePairHashTraits&lt;KeyTraitsArg, ValueTraitsArg&gt;::customDeleteBucket(WTF::KeyValuePairHashTraits&lt;KeyTraitsArg, ValueTraitsArg&gt;::TraitType&amp;) [with KeyTraitsArg = WTF::HashTraits&lt;WebCore::ServiceWorkerRegistrationKey&gt;; ValueTraitsArg = WTF::HashTraits&lt;WTF::WeakPtr&lt;WebCore::SWServerRegistration&gt; &gt;]’ at WTF/Headers/wtf/HashTraits.h:378:42,
    inlined from ‘typename std::enable_if&lt;WTF::HashTraitHasCustomDelete&lt;Traits, T&gt;::value&gt;::type WTF::hashTraitsDeleteBucket(T&amp;) [with Traits = WTF::HashMap&lt;WebCore::ServiceWorkerRegistrationKey, WTF::WeakPtr&lt;WebCore::SWServerRegistration&gt; &gt;::KeyValuePairTraits; T = WTF::KeyValuePair&lt;WebCore::ServiceWorkerRegistrationKey, WTF::WeakPtr&lt;WebCore::SWServerRegistration&gt; &gt;]’ at WTF/Headers/wtf/HashTraits.h:297:31,
    inlined from ‘static void WTF::HashTable&lt;Key, Value, Extractor, HashFunctions, Traits, KeyTraits&gt;::deleteBucket(WTF::HashTable&lt;Key, Value, Extractor, HashFunctions, Traits, KeyTraits&gt;::ValueType&amp;) [with Key = WebCore::ServiceWorkerRegistrationKey; Value = WTF::KeyValuePair&lt;WebCore::ServiceWorkerRegistrationKey, WTF::WeakPtr&lt;WebCore::SWServerRegistration&gt; &gt;; Extractor = WTF::KeyValuePairKeyExtractor&lt;WTF::KeyValuePair&lt;WebCore::ServiceWorkerRegistrationKey, WTF::WeakPtr&lt;WebCore::SWServerRegistration&gt; &gt; &gt;; HashFunctions = WTF::DefaultHash&lt;WebCore::ServiceWorkerRegistrationKey&gt;; Traits = WTF::HashMap&lt;WebCore::ServiceWorkerRegistrationKey, WTF::WeakPtr&lt;WebCore::SWServerRegistration&gt; &gt;::KeyValuePairTraits; KeyTraits = WTF::HashTraits&lt;WebCore::ServiceWorkerRegistrationKey&gt;]’ at WTF/Headers/wtf/HashTable.h:549:85,
    inlined from ‘void WTF::HashTable&lt;Key, Value, Extractor, HashFunctions, Traits, KeyTraits&gt;::remove(WTF::HashTable&lt;Key, Value, Extractor, HashFunctions, Traits, KeyTraits&gt;::ValueType*) [with Key = WebCore::ServiceWorkerRegistrationKey; Value = WTF::KeyValuePair&lt;WebCore::ServiceWorkerRegistrationKey, WTF::WeakPtr&lt;WebCore::SWServerRegistration&gt; &gt;; Extractor = WTF::KeyValuePairKeyExtractor&lt;WTF::KeyValuePair&lt;WebCore::ServiceWorkerRegistrationKey, WTF::WeakPtr&lt;WebCore::SWServerRegistration&gt; &gt; &gt;; HashFunctions = WTF::DefaultHash&lt;WebCore::ServiceWorkerRegistrationKey&gt;; Traits = WTF::HashMap&lt;WebCore::ServiceWorkerRegistrationKey, WTF::WeakPtr&lt;WebCore::SWServerRegistration&gt; &gt;::KeyValuePairTraits; KeyTraits = WTF::HashTraits&lt;WebCore::ServiceWorkerRegistrationKey&gt;]’ at WTF/Headers/wtf/HashTable.h:1127:21:
WTF/Headers/wtf/URL.h:56:7: warning: ‘*(long unsigned int*)((char*)&amp;&lt;unnamed&gt; + offsetof(WTF::URL, WTF::URL::m_isValid))’ is used uninitialized [-Wuninitialized]
   56 | class URL {
      |       ^~~
In file included from ../../Source/WebCore/workers/service/server/SWScriptStorage.cpp:32,
                 from WebCore/DerivedSources/unified-sources/UnifiedSource-f74e0903-7.cpp:1:
../../Source/WebCore/workers/service/ServiceWorkerRegistrationKey.h: In member function ‘void WTF::HashTable&lt;Key, Value, Extractor, HashFunctions, Traits, KeyTraits&gt;::remove(WTF::HashTable&lt;Key, Value, Extractor, HashFunctions, Traits, KeyTraits&gt;::ValueType*) [with Key = WebCore::ServiceWorkerRegistrationKey; Value = WTF::KeyValuePair&lt;WebCore::ServiceWorkerRegistrationKey, WTF::WeakPtr&lt;WebCore::SWServerRegistration&gt; &gt;; Extractor = WTF::KeyValuePairKeyExtractor&lt;WTF::KeyValuePair&lt;WebCore::ServiceWorkerRegistrationKey, WTF::WeakPtr&lt;WebCore::SWServerRegistration&gt; &gt; &gt;; HashFunctions = WTF::DefaultHash&lt;WebCore::ServiceWorkerRegistrationKey&gt;; Traits = WTF::HashMap&lt;WebCore::ServiceWorkerRegistrationKey, WTF::WeakPtr&lt;WebCore::SWServerRegistration&gt; &gt;::KeyValuePairTraits; KeyTraits = WTF::HashTraits&lt;WebCore::ServiceWorkerRegistrationKey&gt;]’:
../../Source/WebCore/workers/service/ServiceWorkerRegistrationKey.h:109:125: note: ‘&lt;anonymous&gt;’ declared here
  109 |     static void constructDeletedValue(WebCore::ServiceWorkerRegistrationKey&amp; slot) { slot.setScope(URL(HashTableDeletedValue)); }
      |                                                                                                                             ^
In file included from ../../Source/WebCore/page/SecurityOriginData.h:28,
                 from ../../Source/WebCore/workers/service/ServiceWorkerRegistrationKey.h:30,
                 from ../../Source/WebCore/workers/service/server/SWScriptStorage.cpp:32,
                 from WebCore/DerivedSources/unified-sources/UnifiedSource-f74e0903-7.cpp:1:
In member function ‘WTF::URL&amp; WTF::URL::operator=(WTF::URL&amp;&amp;)’,
    inlined from ‘void WebCore::ServiceWorkerRegistrationKey::setScope(WTF::URL&amp;&amp;)’ at ../../Source/WebCore/workers/service/ServiceWorkerRegistrationKey.h:52:44,
    inlined from ‘static void WTF::HashTraits&lt;WebCore::ServiceWorkerRegistrationKey&gt;::constructDeletedValue(WebCore::ServiceWorkerRegistrationKey&amp;)’ at ../../Source/WebCore/workers/service/ServiceWorkerRegistrationKey.h:109:99,
    inlined from ‘typename std::enable_if&lt;(! WTF::HashTraitHasCustomDelete&lt;Traits, T&gt;::value)&gt;::type WTF::hashTraitsDeleteBucket(T&amp;) [with Traits = WTF::HashTraits&lt;WebCore::ServiceWorkerRegistrationKey&gt;; T = WebCore::ServiceWorkerRegistrationKey]’ at WTF/Headers/wtf/HashTraits.h:305:34,
    inlined from ‘static void WTF::KeyValuePairHashTraits&lt;KeyTraitsArg, ValueTraitsArg&gt;::customDeleteBucket(WTF::KeyValuePairHashTraits&lt;KeyTraitsArg, ValueTraitsArg&gt;::TraitType&amp;) [with KeyTraitsArg = WTF::HashTraits&lt;WebCore::ServiceWorkerRegistrationKey&gt;; ValueTraitsArg = WTF::HashTraits&lt;WTF::WeakPtr&lt;WebCore::SWServerRegistration&gt; &gt;]’ at WTF/Headers/wtf/HashTraits.h:378:42,
    inlined from ‘typename std::enable_if&lt;WTF::HashTraitHasCustomDelete&lt;Traits, T&gt;::value&gt;::type WTF::hashTraitsDeleteBucket(T&amp;) [with Traits = WTF::HashMap&lt;WebCore::ServiceWorkerRegistrationKey, WTF::WeakPtr&lt;WebCore::SWServerRegistration&gt; &gt;::KeyValuePairTraits; T = WTF::KeyValuePair&lt;WebCore::ServiceWorkerRegistrationKey, WTF::WeakPtr&lt;WebCore::SWServerRegistration&gt; &gt;]’ at WTF/Headers/wtf/HashTraits.h:297:31,
    inlined from ‘static void WTF::HashTable&lt;Key, Value, Extractor, HashFunctions, Traits, KeyTraits&gt;::deleteBucket(WTF::HashTable&lt;Key, Value, Extractor, HashFunctions, Traits, KeyTraits&gt;::ValueType&amp;) [with Key = WebCore::ServiceWorkerRegistrationKey; Value = WTF::KeyValuePair&lt;WebCore::ServiceWorkerRegistrationKey, WTF::WeakPtr&lt;WebCore::SWServerRegistration&gt; &gt;; Extractor = WTF::KeyValuePairKeyExtractor&lt;WTF::KeyValuePair&lt;WebCore::ServiceWorkerRegistrationKey, WTF::WeakPtr&lt;WebCore::SWServerRegistration&gt; &gt; &gt;; HashFunctions = WTF::DefaultHash&lt;WebCore::ServiceWorkerRegistrationKey&gt;; Traits = WTF::HashMap&lt;WebCore::ServiceWorkerRegistrationKey, WTF::WeakPtr&lt;WebCore::SWServerRegistration&gt; &gt;::KeyValuePairTraits; KeyTraits = WTF::HashTraits&lt;WebCore::ServiceWorkerRegistrationKey&gt;]’ at WTF/Headers/wtf/HashTable.h:549:85,
    inlined from ‘void WTF::HashTable&lt;Key, Value, Extractor, HashFunctions, Traits, KeyTraits&gt;::remove(WTF::HashTable&lt;Key, Value, Extractor, HashFunctions, Traits, KeyTraits&gt;::ValueType*) [with Key = WebCore::ServiceWorkerRegistrationKey; Value = WTF::KeyValuePair&lt;WebCore::ServiceWorkerRegistrationKey, WTF::WeakPtr&lt;WebCore::SWServerRegistration&gt; &gt;; Extractor = WTF::KeyValuePairKeyExtractor&lt;WTF::KeyValuePair&lt;WebCore::ServiceWorkerRegistrationKey, WTF::WeakPtr&lt;WebCore::SWServerRegistration&gt; &gt; &gt;; HashFunctions = WTF::DefaultHash&lt;WebCore::ServiceWorkerRegistrationKey&gt;; Traits = WTF::HashMap&lt;WebCore::ServiceWorkerRegistrationKey, WTF::WeakPtr&lt;WebCore::SWServerRegistration&gt; &gt;::KeyValuePairTraits; KeyTraits = WTF::HashTraits&lt;WebCore::ServiceWorkerRegistrationKey&gt;]’ at WTF/Headers/wtf/HashTable.h:1127:21:
WTF/Headers/wtf/URL.h:56:7: warning: ‘*(long unsigned int*)((char*)&amp;&lt;unnamed&gt; + offsetof(WTF::URL, WTF::URL::m_userEnd))’ is used uninitialized [-Wuninitialized]
   56 | class URL {
      |       ^~~
In file included from ../../Source/WebCore/workers/service/server/SWScriptStorage.cpp:32,
                 from WebCore/DerivedSources/unified-sources/UnifiedSource-f74e0903-7.cpp:1:
../../Source/WebCore/workers/service/ServiceWorkerRegistrationKey.h: In member function ‘void WTF::HashTable&lt;Key, Value, Extractor, HashFunctions, Traits, KeyTraits&gt;::remove(WTF::HashTable&lt;Key, Value, Extractor, HashFunctions, Traits, KeyTraits&gt;::ValueType*) [with Key = WebCore::ServiceWorkerRegistrationKey; Value = WTF::KeyValuePair&lt;WebCore::ServiceWorkerRegistrationKey, WTF::WeakPtr&lt;WebCore::SWServerRegistration&gt; &gt;; Extractor = WTF::KeyValuePairKeyExtractor&lt;WTF::KeyValuePair&lt;WebCore::ServiceWorkerRegistrationKey, WTF::WeakPtr&lt;WebCore::SWServerRegistration&gt; &gt; &gt;; HashFunctions = WTF::DefaultHash&lt;WebCore::ServiceWorkerRegistrationKey&gt;; Traits = WTF::HashMap&lt;WebCore::ServiceWorkerRegistrationKey, WTF::WeakPtr&lt;WebCore::SWServerRegistration&gt; &gt;::KeyValuePairTraits; KeyTraits = WTF::HashTraits&lt;WebCore::ServiceWorkerRegistrationKey&gt;]’:
../../Source/WebCore/workers/service/ServiceWorkerRegistrationKey.h:109:125: note: ‘&lt;anonymous&gt;’ declared here
  109 |     static void constructDeletedValue(WebCore::ServiceWorkerRegistrationKey&amp; slot) { slot.setScope(URL(HashTableDeletedValue)); }
      |                                                                                                                             ^
In file included from ../../Source/WebCore/page/SecurityOriginData.h:28,
                 from ../../Source/WebCore/workers/service/ServiceWorkerRegistrationKey.h:30,
                 from ../../Source/WebCore/workers/service/server/SWScriptStorage.cpp:32,
                 from WebCore/DerivedSources/unified-sources/UnifiedSource-f74e0903-7.cpp:1:
In member function ‘WTF::URL&amp; WTF::URL::operator=(WTF::URL&amp;&amp;)’,
    inlined from ‘void WebCore::ServiceWorkerRegistrationKey::setScope(WTF::URL&amp;&amp;)’ at ../../Source/WebCore/workers/service/ServiceWorkerRegistrationKey.h:52:44,
    inlined from ‘static void WTF::HashTraits&lt;WebCore::ServiceWorkerRegistrationKey&gt;::constructDeletedValue(WebCore::ServiceWorkerRegistrationKey&amp;)’ at ../../Source/WebCore/workers/service/ServiceWorkerRegistrationKey.h:109:99,
    inlined from ‘typename std::enable_if&lt;(! WTF::HashTraitHasCustomDelete&lt;Traits, T&gt;::value)&gt;::type WTF::hashTraitsDeleteBucket(T&amp;) [with Traits = WTF::HashTraits&lt;WebCore::ServiceWorkerRegistrationKey&gt;; T = WebCore::ServiceWorkerRegistrationKey]’ at WTF/Headers/wtf/HashTraits.h:305:34,
    inlined from ‘static void WTF::KeyValuePairHashTraits&lt;KeyTraitsArg, ValueTraitsArg&gt;::customDeleteBucket(WTF::KeyValuePairHashTraits&lt;KeyTraitsArg, ValueTraitsArg&gt;::TraitType&amp;) [with KeyTraitsArg = WTF::HashTraits&lt;WebCore::ServiceWorkerRegistrationKey&gt;; ValueTraitsArg = WTF::HashTraits&lt;WTF::WeakPtr&lt;WebCore::SWServerRegistration&gt; &gt;]’ at WTF/Headers/wtf/HashTraits.h:378:42,
    inlined from ‘typename std::enable_if&lt;WTF::HashTraitHasCustomDelete&lt;Traits, T&gt;::value&gt;::type WTF::hashTraitsDeleteBucket(T&amp;) [with Traits = WTF::HashMap&lt;WebCore::ServiceWorkerRegistrationKey, WTF::WeakPtr&lt;WebCore::SWServerRegistration&gt; &gt;::KeyValuePairTraits; T = WTF::KeyValuePair&lt;WebCore::ServiceWorkerRegistrationKey, WTF::WeakPtr&lt;WebCore::SWServerRegistration&gt; &gt;]’ at WTF/Headers/wtf/HashTraits.h:297:31,
    inlined from ‘static void WTF::HashTable&lt;Key, Value, Extractor, HashFunctions, Traits, KeyTraits&gt;::deleteBucket(WTF::HashTable&lt;Key, Value, Extractor, HashFunctions, Traits, KeyTraits&gt;::ValueType&amp;) [with Key = WebCore::ServiceWorkerRegistrationKey; Value = WTF::KeyValuePair&lt;WebCore::ServiceWorkerRegistrationKey, WTF::WeakPtr&lt;WebCore::SWServerRegistration&gt; &gt;; Extractor = WTF::KeyValuePairKeyExtractor&lt;WTF::KeyValuePair&lt;WebCore::ServiceWorkerRegistrationKey, WTF::WeakPtr&lt;WebCore::SWServerRegistration&gt; &gt; &gt;; HashFunctions = WTF::DefaultHash&lt;WebCore::ServiceWorkerRegistrationKey&gt;; Traits = WTF::HashMap&lt;WebCore::ServiceWorkerRegistrationKey, WTF::WeakPtr&lt;WebCore::SWServerRegistration&gt; &gt;::KeyValuePairTraits; KeyTraits = WTF::HashTraits&lt;WebCore::ServiceWorkerRegistrationKey&gt;]’ at WTF/Headers/wtf/HashTable.h:549:85,
    inlined from ‘void WTF::HashTable&lt;Key, Value, Extractor, HashFunctions, Traits, KeyTraits&gt;::remove(WTF::HashTable&lt;Key, Value, Extractor, HashFunctions, Traits, KeyTraits&gt;::ValueType*) [with Key = WebCore::ServiceWorkerRegistrationKey; Value = WTF::KeyValuePair&lt;WebCore::ServiceWorkerRegistrationKey, WTF::WeakPtr&lt;WebCore::SWServerRegistration&gt; &gt;; Extractor = WTF::KeyValuePairKeyExtractor&lt;WTF::KeyValuePair&lt;WebCore::ServiceWorkerRegistrationKey, WTF::WeakPtr&lt;WebCore::SWServerRegistration&gt; &gt; &gt;; HashFunctions = WTF::DefaultHash&lt;WebCore::ServiceWorkerRegistrationKey&gt;; Traits = WTF::HashMap&lt;WebCore::ServiceWorkerRegistrationKey, WTF::WeakPtr&lt;WebCore::SWServerRegistration&gt; &gt;::KeyValuePairTraits; KeyTraits = WTF::HashTraits&lt;WebCore::ServiceWorkerRegistrationKey&gt;]’ at WTF/Headers/wtf/HashTable.h:1127:21:
WTF/Headers/wtf/URL.h:56:7: warning: ‘*(long unsigned int*)((char*)&amp;&lt;unnamed&gt; + offsetof(WTF::URL, WTF::URL::m_hostEnd))’ is used uninitialized [-Wuninitialized]
   56 | class URL {
      |       ^~~
In file included from ../../Source/WebCore/workers/service/server/SWScriptStorage.cpp:32,
                 from WebCore/DerivedSources/unified-sources/UnifiedSource-f74e0903-7.cpp:1:
../../Source/WebCore/workers/service/ServiceWorkerRegistrationKey.h: In member function ‘void WTF::HashTable&lt;Key, Value, Extractor, HashFunctions, Traits, KeyTraits&gt;::remove(WTF::HashTable&lt;Key, Value, Extractor, HashFunctions, Traits, KeyTraits&gt;::ValueType*) [with Key = WebCore::ServiceWorkerRegistrationKey; Value = WTF::KeyValuePair&lt;WebCore::ServiceWorkerRegistrationKey, WTF::WeakPtr&lt;WebCore::SWServerRegistration&gt; &gt;; Extractor = WTF::KeyValuePairKeyExtractor&lt;WTF::KeyValuePair&lt;WebCore::ServiceWorkerRegistrationKey, WTF::WeakPtr&lt;WebCore::SWServerRegistration&gt; &gt; &gt;; HashFunctions = WTF::DefaultHash&lt;WebCore::ServiceWorkerRegistrationKey&gt;; Traits = WTF::HashMap&lt;WebCore::ServiceWorkerRegistrationKey, WTF::WeakPtr&lt;WebCore::SWServerRegistration&gt; &gt;::KeyValuePairTraits; KeyTraits = WTF::HashTraits&lt;WebCore::ServiceWorkerRegistrationKey&gt;]’:
../../Source/WebCore/workers/service/ServiceWorkerRegistrationKey.h:109:125: note: ‘&lt;anonymous&gt;’ declared here
  109 |     static void constructDeletedValue(WebCore::ServiceWorkerRegistrationKey&amp; slot) { slot.setScope(URL(HashTableDeletedValue)); }
      |                                                                                                                             ^
In file included from ../../Source/WebCore/page/SecurityOriginData.h:28,
                 from ../../Source/WebCore/workers/service/ServiceWorkerRegistrationKey.h:30,
                 from ../../Source/WebCore/workers/service/server/SWScriptStorage.cpp:32,
                 from WebCore/DerivedSources/unified-sources/UnifiedSource-f74e0903-7.cpp:1:
In member function ‘WTF::URL&amp; WTF::URL::operator=(WTF::URL&amp;&amp;)’,
    inlined from ‘void WebCore::ServiceWorkerRegistrationKey::setScope(WTF::URL&amp;&amp;)’ at ../../Source/WebCore/workers/service/ServiceWorkerRegistrationKey.h:52:44,
    inlined from ‘static void WTF::HashTraits&lt;WebCore::ServiceWorkerRegistrationKey&gt;::constructDeletedValue(WebCore::ServiceWorkerRegistrationKey&amp;)’ at ../../Source/WebCore/workers/service/ServiceWorkerRegistrationKey.h:109:99,
    inlined from ‘typename std::enable_if&lt;(! WTF::HashTraitHasCustomDelete&lt;Traits, T&gt;::value)&gt;::type WTF::hashTraitsDeleteBucket(T&amp;) [with Traits = WTF::HashTraits&lt;WebCore::ServiceWorkerRegistrationKey&gt;; T = WebCore::ServiceWorkerRegistrationKey]’ at WTF/Headers/wtf/HashTraits.h:305:34,
    inlined from ‘static void WTF::KeyValuePairHashTraits&lt;KeyTraitsArg, ValueTraitsArg&gt;::customDeleteBucket(WTF::KeyValuePairHashTraits&lt;KeyTraitsArg, ValueTraitsArg&gt;::TraitType&amp;) [with KeyTraitsArg = WTF::HashTraits&lt;WebCore::ServiceWorkerRegistrationKey&gt;; ValueTraitsArg = WTF::HashTraits&lt;WTF::WeakPtr&lt;WebCore::SWServerRegistration&gt; &gt;]’ at WTF/Headers/wtf/HashTraits.h:378:42,
    inlined from ‘typename std::enable_if&lt;WTF::HashTraitHasCustomDelete&lt;Traits, T&gt;::value&gt;::type WTF::hashTraitsDeleteBucket(T&amp;) [with Traits = WTF::HashMap&lt;WebCore::ServiceWorkerRegistrationKey, WTF::WeakPtr&lt;WebCore::SWServerRegistration&gt; &gt;::KeyValuePairTraits; T = WTF::KeyValuePair&lt;WebCore::ServiceWorkerRegistrationKey, WTF::WeakPtr&lt;WebCore::SWServerRegistration&gt; &gt;]’ at WTF/Headers/wtf/HashTraits.h:297:31,
    inlined from ‘static void WTF::HashTable&lt;Key, Value, Extractor, HashFunctions, Traits, KeyTraits&gt;::deleteBucket(WTF::HashTable&lt;Key, Value, Extractor, HashFunctions, Traits, KeyTraits&gt;::ValueType&amp;) [with Key = WebCore::ServiceWorkerRegistrationKey; Value = WTF::KeyValuePair&lt;WebCore::ServiceWorkerRegistrationKey, WTF::WeakPtr&lt;WebCore::SWServerRegistration&gt; &gt;; Extractor = WTF::KeyValuePairKeyExtractor&lt;WTF::KeyValuePair&lt;WebCore::ServiceWorkerRegistrationKey, WTF::WeakPtr&lt;WebCore::SWServerRegistration&gt; &gt; &gt;; HashFunctions = WTF::DefaultHash&lt;WebCore::ServiceWorkerRegistrationKey&gt;; Traits = WTF::HashMap&lt;WebCore::ServiceWorkerRegistrationKey, WTF::WeakPtr&lt;WebCore::SWServerRegistration&gt; &gt;::KeyValuePairTraits; KeyTraits = WTF::HashTraits&lt;WebCore::ServiceWorkerRegistrationKey&gt;]’ at WTF/Headers/wtf/HashTable.h:549:85,
    inlined from ‘void WTF::HashTable&lt;Key, Value, Extractor, HashFunctions, Traits, KeyTraits&gt;::remove(WTF::HashTable&lt;Key, Value, Extractor, HashFunctions, Traits, KeyTraits&gt;::ValueType*) [with Key = WebCore::ServiceWorkerRegistrationKey; Value = WTF::KeyValuePair&lt;WebCore::ServiceWorkerRegistrationKey, WTF::WeakPtr&lt;WebCore::SWServerRegistration&gt; &gt;; Extractor = WTF::KeyValuePairKeyExtractor&lt;WTF::KeyValuePair&lt;WebCore::ServiceWorkerRegistrationKey, WTF::WeakPtr&lt;WebCore::SWServerRegistration&gt; &gt; &gt;; HashFunctions = WTF::DefaultHash&lt;WebCore::ServiceWorkerRegistrationKey&gt;; Traits = WTF::HashMap&lt;WebCore::ServiceWorkerRegistrationKey, WTF::WeakPtr&lt;WebCore::SWServerRegistration&gt; &gt;::KeyValuePairTraits; KeyTraits = WTF::HashTraits&lt;WebCore::ServiceWorkerRegistrationKey&gt;]’ at WTF/Headers/wtf/HashTable.h:1127:21:
WTF/Headers/wtf/URL.h:56:7: warning: ‘*(long unsigned int*)((char*)&amp;&lt;unnamed&gt; + offsetof(WTF::URL, WTF::URL::m_pathEnd))’ is used uninitialized [-Wuninitialized]
   56 | class URL {
      |       ^~~
In file included from ../../Source/WebCore/workers/service/server/SWScriptStorage.cpp:32,
                 from WebCore/DerivedSources/unified-sources/UnifiedSource-f74e0903-7.cpp:1:
../../Source/WebCore/workers/service/ServiceWorkerRegistrationKey.h: In member function ‘void WTF::HashTable&lt;Key, Value, Extractor, HashFunctions, Traits, KeyTraits&gt;::remove(WTF::HashTable&lt;Key, Value, Extractor, HashFunctions, Traits, KeyTraits&gt;::ValueType*) [with Key = WebCore::ServiceWorkerRegistrationKey; Value = WTF::KeyValuePair&lt;WebCore::ServiceWorkerRegistrationKey, WTF::WeakPtr&lt;WebCore::SWServerRegistration&gt; &gt;; Extractor = WTF::KeyValuePairKeyExtractor&lt;WTF::KeyValuePair&lt;WebCore::ServiceWorkerRegistrationKey, WTF::WeakPtr&lt;WebCore::SWServerRegistration&gt; &gt; &gt;; HashFunctions = WTF::DefaultHash&lt;WebCore::ServiceWorkerRegistrationKey&gt;; Traits = WTF::HashMap&lt;WebCore::ServiceWorkerRegistrationKey, WTF::WeakPtr&lt;WebCore::SWServerRegistration&gt; &gt;::KeyValuePairTraits; KeyTraits = WTF::HashTraits&lt;WebCore::ServiceWorkerRegistrationKey&gt;]’:
../../Source/WebCore/workers/service/ServiceWorkerRegistrationKey.h:109:125: note: ‘&lt;anonymous&gt;’ declared here
  109 |     static void constructDeletedValue(WebCore::ServiceWorkerRegistrationKey&amp; slot) { slot.setScope(URL(HashTableDeletedValue)); }
      |                                                                                                                             ^

From bug #224381, Alex says:

&quot;Very interesting, although unrelated to this change.  It looks like it&apos;s complaining that URL::URL(HashTableDeletedValueType) doesn&apos;t initialize any members but m_string.  That&apos;s fine because only m_string is used for hash-table-deleted-entry-URLs and probably preferred because it does fewer write operations. Maybe there&apos;s a way to silence those warnings or initialize all the members only in builds that would see those warnings.&quot;

I dunno, it&apos;s more robust to just always initialize everything. The warning is complaining because the partially-uninitialized URL gets passed to ServiceWorkerRegistrationKey&apos;s copy assignment operator, so the uninitialized data does get used to initialize another URL. It might be harmless if the data is really never read, but now ServiceWorkerRegistrationKey::scope is going to return a partially-initialized URL. I guess it&apos;s probably OK because it&apos;s only ever used as the HashTableDeletedValueType, but I think initializing everything is the safer way to go in this case. I doubt there will be any noticeable performance impact.

Alternatively, we could simply silence the warning, which is probably easy to do.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1751903</commentid>
    <comment_count>1</comment_count>
      <attachid>426455</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2021-04-19 12:15:42 -0700</bug_when>
    <thetext>Created attachment 426455
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1751904</commentid>
    <comment_count>2</comment_count>
      <attachid>426455</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2021-04-19 12:16:21 -0700</bug_when>
    <thetext>Comment on attachment 426455
Patch

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

&gt; Source/WTF/wtf/URL.h:343
&gt;  inline URL::URL(HashTableDeletedValueType)
&gt;      : m_string(HashTableDeletedValue)
&gt;  {
&gt; +    invalidate();
&gt;  }

Does this look OK, Alex?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1751909</commentid>
    <comment_count>3</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2021-04-19 12:19:16 -0700</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #0)
&gt; Alternatively, we could simply silence the warning, which is probably easy
&gt; to do.

I&apos;m not sure. If Alex doesn&apos;t like my invalidate() patch, then I will need to investigate more to be certain, but I *think* the warning would have to be suppressed in the copy constructor of ServiceWorkerRegistrationKey, which is far from the URL constructor where the uninitialized data is coming from. So it doesn&apos;t seem like a great solution.

Another option would be to call invalidate() only on Linux, if you really want to avoid fully-initializing the URL on Apple platforms, but this seems like the worst option.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1751927</commentid>
    <comment_count>4</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-04-19 13:05:45 -0700</bug_when>
    <thetext>Would it work instead to add a constructor to ServiceWorkerRegistrationKey that takes a HashTableDeletedValue and call that instead?  This adds an unnecessary function call that writes 0&apos;s unnecessarily in possibly hot code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1751995</commentid>
    <comment_count>5</comment_count>
      <attachid>426455</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-04-19 15:03:16 -0700</bug_when>
    <thetext>Comment on attachment 426455
Patch

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

&gt;&gt; Source/WTF/wtf/URL.h:343
&gt;&gt;  }
&gt; 
&gt; Does this look OK, Alex?

This is bad for performance and should be unnecessary. We should suppress the warning instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1751998</commentid>
    <comment_count>6</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-04-19 15:03:47 -0700</bug_when>
    <thetext>I like Alex’s suggestion.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1752002</commentid>
    <comment_count>7</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2021-04-19 15:12:36 -0700</bug_when>
    <thetext>(In reply to Alex Christensen from comment #4)
&gt; Would it work instead to add a constructor to ServiceWorkerRegistrationKey
&gt; that takes a HashTableDeletedValue and call that instead?

TODO: I will try this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1752517</commentid>
    <comment_count>8</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2021-04-20 17:01:44 -0700</bug_when>
    <thetext>(In reply to Alex Christensen from comment #4)
&gt; Would it work instead to add a constructor to ServiceWorkerRegistrationKey
&gt; that takes a HashTableDeletedValue and call that instead?

I got something similar to work, though it doesn&apos;t involve a constructor.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1752521</commentid>
    <comment_count>9</comment_count>
      <attachid>426619</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2021-04-20 17:06:34 -0700</bug_when>
    <thetext>Created attachment 426619
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1752530</commentid>
    <comment_count>10</comment_count>
      <attachid>426619</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2021-04-20 17:41:05 -0700</bug_when>
    <thetext>Comment on attachment 426619
Patch

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

&gt; Source/WebCore/workers/service/ServiceWorkerRegistrationKey.h:69
&gt; +    friend class HashTraits&lt;WebCore::ServiceWorkerRegistrationKey&gt;;

Looks like Clang doesn&apos;t like &apos;friend class&apos; since HashTraits is a struct, oops. I&apos;m surprised that GCC allowed it.

Anyway, I bet &apos;friend struct&apos; will work.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1752533</commentid>
    <comment_count>11</comment_count>
      <attachid>426623</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2021-04-20 17:42:00 -0700</bug_when>
    <thetext>Created attachment 426623
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1752547</commentid>
    <comment_count>12</comment_count>
      <attachid>426623</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-04-20 18:04:57 -0700</bug_when>
    <thetext>Comment on attachment 426623
Patch

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

&gt; Source/WebCore/workers/service/ServiceWorkerRegistrationKey.h:73
&gt; +    bool m_isHashTableDeletedValue;

This needs to be initialized to false!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1752550</commentid>
    <comment_count>13</comment_count>
      <attachid>426623</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2021-04-20 18:11:25 -0700</bug_when>
    <thetext>Comment on attachment 426623
Patch

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

&gt;&gt; Source/WebCore/workers/service/ServiceWorkerRegistrationKey.h:73
&gt;&gt; +    bool m_isHashTableDeletedValue;
&gt; 
&gt; This needs to be initialized to false!

Ugh, of course, sorry....</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1752551</commentid>
    <comment_count>14</comment_count>
      <attachid>426626</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2021-04-20 18:13:02 -0700</bug_when>
    <thetext>Created attachment 426626
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1752552</commentid>
    <comment_count>15</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2021-04-20 18:13:37 -0700</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #13)
&gt; Ugh, of course, sorry....

Especially embarrassing when the goal of the patch was to avoid an uninitialized data copy. I had only one job here....</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1752555</commentid>
    <comment_count>16</comment_count>
      <attachid>426626</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-04-20 18:16:43 -0700</bug_when>
    <thetext>Comment on attachment 426626
Patch

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

&gt; Source/WebCore/workers/service/ServiceWorkerRegistrationKey.h:73
&gt; +    friend struct HashTraits&lt;WebCore::ServiceWorkerRegistrationKey&gt;;
&gt; +
&gt;      SecurityOriginData m_topOrigin;
&gt;      URL m_scope;
&gt; +    bool m_isHashTableDeletedValue { false };

This will enlarge sizeof(ServiceWorkerRegistrationKey) and allocation used in HashMap&lt;ServiceWorkerRegistrationKey, XXX&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1752556</commentid>
    <comment_count>17</comment_count>
      <attachid>426626</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-04-20 18:17:54 -0700</bug_when>
    <thetext>Comment on attachment 426626
Patch

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

&gt;&gt; Source/WebCore/workers/service/ServiceWorkerRegistrationKey.h:73
&gt;&gt; +    bool m_isHashTableDeletedValue { false };
&gt; 
&gt; This will enlarge sizeof(ServiceWorkerRegistrationKey) and allocation used in HashMap&lt;ServiceWorkerRegistrationKey, XXX&gt;.

How much will it enlarge it?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1752557</commentid>
    <comment_count>18</comment_count>
      <attachid>426626</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-04-20 18:18:29 -0700</bug_when>
    <thetext>Comment on attachment 426626
Patch

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

&gt;&gt;&gt; Source/WebCore/workers/service/ServiceWorkerRegistrationKey.h:73
&gt;&gt;&gt; +    bool m_isHashTableDeletedValue { false };
&gt;&gt; 
&gt;&gt; This will enlarge sizeof(ServiceWorkerRegistrationKey) and allocation used in HashMap&lt;ServiceWorkerRegistrationKey, XXX&gt;.
&gt; 
&gt; How much will it enlarge it?

It is a shame because enlarging it is unnecessary. Instead we can use any unused bit anywhere else in the object.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1752558</commentid>
    <comment_count>19</comment_count>
      <attachid>426626</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-04-20 18:19:28 -0700</bug_when>
    <thetext>Comment on attachment 426626
Patch

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

&gt;&gt;&gt; Source/WebCore/workers/service/ServiceWorkerRegistrationKey.h:73
&gt;&gt;&gt; +    bool m_isHashTableDeletedValue { false };
&gt;&gt; 
&gt;&gt; This will enlarge sizeof(ServiceWorkerRegistrationKey) and allocation used in HashMap&lt;ServiceWorkerRegistrationKey, XXX&gt;.
&gt; 
&gt; How much will it enlarge it?

8 byte because of alignment. 64 =&gt; 72. I don&apos;t think we should pay a memory cost to suppress warnings.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1752566</commentid>
    <comment_count>20</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-04-20 18:31:57 -0700</bug_when>
    <thetext>Change to review- then.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1752569</commentid>
    <comment_count>21</comment_count>
      <attachid>426626</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-04-20 18:34:41 -0700</bug_when>
    <thetext>Comment on attachment 426626
Patch

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

&gt;&gt;&gt;&gt;&gt; Source/WebCore/workers/service/ServiceWorkerRegistrationKey.h:73
&gt;&gt;&gt;&gt;&gt; +    bool m_isHashTableDeletedValue { false };
&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt; This will enlarge sizeof(ServiceWorkerRegistrationKey) and allocation used in HashMap&lt;ServiceWorkerRegistrationKey, XXX&gt;.
&gt;&gt;&gt; 
&gt;&gt;&gt; How much will it enlarge it?
&gt;&gt; 
&gt;&gt; It is a shame because enlarging it is unnecessary. Instead we can use any unused bit anywhere else in the object.
&gt; 
&gt; 8 byte because of alignment. 64 =&gt; 72. I don&apos;t think we should pay a memory cost to suppress warnings.

Seems indeed unfortunate to add a data member just for this purpose. If the url constructor from a hash table deleting value is no good, then maybe we can use the one of SecurityOriginData (since this is the type of our other data member)?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1752571</commentid>
    <comment_count>22</comment_count>
      <attachid>426626</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-04-20 18:37:17 -0700</bug_when>
    <thetext>Comment on attachment 426626
Patch

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

&gt; Source/WebCore/workers/service/ServiceWorkerRegistrationKey.h:-109
&gt; -    static void constructDeletedValue(WebCore::ServiceWorkerRegistrationKey&amp; slot) { slot.setScope(URL(HashTableDeletedValue)); }

Would this silence your warning?
static void constructDeletedValue(WebCore::ServiceWorkerRegistrationKey&amp; slot) { slot.m_topOrigin = SecurityOriginData { HashTableDeletedValue }; }</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1752577</commentid>
    <comment_count>23</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-04-20 18:44:59 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #22)
&gt; Comment on attachment 426626 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=426626&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/workers/service/ServiceWorkerRegistrationKey.h:-109
&gt; &gt; -    static void constructDeletedValue(WebCore::ServiceWorkerRegistrationKey&amp; slot) { slot.setScope(URL(HashTableDeletedValue)); }
&gt; 
&gt; Would this silence your warning?
&gt; static void constructDeletedValue(WebCore::ServiceWorkerRegistrationKey&amp;
&gt; slot) { slot.m_topOrigin = SecurityOriginData { HashTableDeletedValue }; }

BTW, the warning is about the URL constructor from a HashTableDeletedValue. Fixing it by avoiding to call that constructor doesn&apos;t seem like a great fix to me, especially if it is by adding an extra data member to the class where it is used.

I would be fine using the SecurityOriginData constructor from a HashTableDeletedValue instead since it does not make the ServiceWorkerRegistrationKey worse in any way and it likely silences your warning.

However, the root of the issue is URL. I think we either need to make the URL(HashTableDeletedValue) constructor initialize its data member properly OR decide that it is OK for this particular constructor to not initialize those members (since we don&apos;t need them for this particular use case and initializing may hurt perf). In the latter case, it seems silencing the warning at compiler level would be an appropriate fix?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1752581</commentid>
    <comment_count>24</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2021-04-20 19:05:56 -0700</bug_when>
    <thetext>(In reply to Yusuke Suzuki from comment #19)
&gt; 8 byte because of alignment. 64 =&gt; 72. I don&apos;t think we should pay a memory
&gt; cost to suppress warnings.

Hm, well the warning is there for a reason: we really *are* copying uninitialized data. In this case, I think it&apos;s harmless, because it *should* never be read, because the ServiceWorkerRegistrationKey object should only contain a partially-uninitialized URL if the ServiceWorkerRegistrationKey is itself a HashTableDeletedValue, and it seems unlikely that code would try to access ServiceWorkerRegistrationKey::scope on a ServiceWorkerRegistrationKey that is a HashTableDeletedValue. But there is robustness benefit to avoiding this, so code changes are justified IMO.

But I think Chris is right, we probably don&apos;t need to pay the cost in this particular case.

(In reply to Chris Dumez from comment #23)
&gt; I would be fine using the SecurityOriginData constructor from a
&gt; HashTableDeletedValue instead since it does not make the
&gt; ServiceWorkerRegistrationKey worse in any way and it likely silences your
&gt; warning.

Good point, I didn&apos;t notice that. I could certainly try using the SecurityOriginData instead. That would probably work fine. I think it makes sense to rely on the HashTableDeletedValue of any child object when possible.

&gt; However, the root of the issue is URL. I think we either need to make the
&gt; URL(HashTableDeletedValue) constructor initialize its data member properly

Alex is quite opposed to this.

&gt; OR decide that it is OK for this particular constructor to not initialize
&gt; those members (since we don&apos;t need them for this particular use case and
&gt; initializing may hurt perf). In the latter case, it seems silencing the
&gt; warning at compiler level would be an appropriate fix?

In theory, it&apos;s safe to leave the data uninitialized, because the HashTableDeletedValue URL should never be copied. But this warning indicates it *does* actually get copied by ServiceWorkerRegistrationKey::operator=. Suppressing the warning in URL itself would potentially hide errors elsewhere. So I think I prefer to try using SecurityOriginData instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1752582</commentid>
    <comment_count>25</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2021-04-20 19:12:48 -0700</bug_when>
    <thetext>(Note: I&apos;m uploading a revised patch for review now, but I still need to test a build tomorrow to ensure the warning is truly gone before landing.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1752584</commentid>
    <comment_count>26</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-04-20 19:13:18 -0700</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #24)
&gt; (In reply to Yusuke Suzuki from comment #19)
&gt; &gt; 8 byte because of alignment. 64 =&gt; 72. I don&apos;t think we should pay a memory
&gt; &gt; cost to suppress warnings.
&gt; 
&gt; Hm, well the warning is there for a reason: we really *are* copying
&gt; uninitialized data. In this case, I think it&apos;s harmless, because it *should*
&gt; never be read, because the ServiceWorkerRegistrationKey object should only
&gt; contain a partially-uninitialized URL if the ServiceWorkerRegistrationKey is
&gt; itself a HashTableDeletedValue, and it seems unlikely that code would try to
&gt; access ServiceWorkerRegistrationKey::scope on a ServiceWorkerRegistrationKey
&gt; that is a HashTableDeletedValue. But there is robustness benefit to avoiding
&gt; this, so code changes are justified IMO.
&gt; 
&gt; But I think Chris is right, we probably don&apos;t need to pay the cost in this
&gt; particular case.
&gt; 
&gt; (In reply to Chris Dumez from comment #23)
&gt; &gt; I would be fine using the SecurityOriginData constructor from a
&gt; &gt; HashTableDeletedValue instead since it does not make the
&gt; &gt; ServiceWorkerRegistrationKey worse in any way and it likely silences your
&gt; &gt; warning.
&gt; 
&gt; Good point, I didn&apos;t notice that. I could certainly try using the
&gt; SecurityOriginData instead. That would probably work fine. I think it makes
&gt; sense to rely on the HashTableDeletedValue of any child object when possible.
&gt; 
&gt; &gt; However, the root of the issue is URL. I think we either need to make the
&gt; &gt; URL(HashTableDeletedValue) constructor initialize its data member properly
&gt; 
&gt; Alex is quite opposed to this.
&gt; 
&gt; &gt; OR decide that it is OK for this particular constructor to not initialize
&gt; &gt; those members (since we don&apos;t need them for this particular use case and
&gt; &gt; initializing may hurt perf). In the latter case, it seems silencing the
&gt; &gt; warning at compiler level would be an appropriate fix?
&gt; 
&gt; In theory, it&apos;s safe to leave the data uninitialized, because the
&gt; HashTableDeletedValue URL should never be copied. But this warning indicates
&gt; it *does* actually get copied by ServiceWorkerRegistrationKey::operator=.
&gt; Suppressing the warning in URL itself would potentially hide errors
&gt; elsewhere. So I think I prefer to try using SecurityOriginData instead.

The compiler output is a bit hard to head but it wasn&apos;t obvious to me that the issue was with ServiceWorkerRegistrationKey::operator=() copying. It looked to me that the issue was calling the move constructor of URL: WTF::URL::operator=(WTF::URL&amp;&amp;)
here:
slot.setScope(URL(HashTableDeletedValue));

I see. I missed that this was due to ServiceWorkerRegistrationKey copying. Shouldn&apos;t we be able to move such URL constructed from HashTableDeletedValue?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1752585</commentid>
    <comment_count>27</comment_count>
      <attachid>426632</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2021-04-20 19:14:32 -0700</bug_when>
    <thetext>Created attachment 426632
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1752586</commentid>
    <comment_count>28</comment_count>
      <attachid>426632</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-04-20 19:16:24 -0700</bug_when>
    <thetext>Comment on attachment 426632
Patch

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

&gt; Source/WebCore/workers/service/ServiceWorkerRegistrationKey.h:111
&gt; +    static void constructDeletedValue(WebCore::ServiceWorkerRegistrationKey&amp; slot) { slot.m_topOrigin = SecurityOriginData(HashTableDeletedValue); }

WebCore::SecurityOriginData</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1752590</commentid>
    <comment_count>29</comment_count>
      <attachid>426635</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2021-04-20 19:27:06 -0700</bug_when>
    <thetext>Created attachment 426635
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1752591</commentid>
    <comment_count>30</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2021-04-20 19:27:38 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #26)
&gt; The compiler output is a bit hard to head but it wasn&apos;t obvious to me that
&gt; the issue was with ServiceWorkerRegistrationKey::operator=() copying. It
&gt; looked to me that the issue was calling the move constructor of URL:
&gt; WTF::URL::operator=(WTF::URL&amp;&amp;)
&gt; here:
&gt; slot.setScope(URL(HashTableDeletedValue));

Well I think you&apos;re right, it&apos;s not a copy at all, it&apos;s a move. You&apos;re better at squinting at obtuse warnings than I am.
 
&gt; I see. I missed that this was due to ServiceWorkerRegistrationKey copying.

Well... squinting at the warning, I guess it&apos;s not. 

&gt; Shouldn&apos;t we be able to move such URL constructed from HashTableDeletedValue?

Well, I agree. My opinion is that objects in WebKit should never have uninitialized data unless we are able to demonstrate a real performance improvement caused by leaving the data uninitialized, which I assume will be very rare. Uninitialized data is dangerous for robustness because programmers do not expect data to be uninitialized.

But Alex is worried about performance. I have no doubt that hash tables containing URLs are performance-sensitive, though I do doubt that leaving URLs partially-initialized is really a significant optimization. Anyway, my patches to ServiceWorkerRegistrationKey only make sense if patches to fully-initialize URL will not be accepted.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1752595</commentid>
    <comment_count>31</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-04-20 19:34:49 -0700</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #30)
&gt; (In reply to Chris Dumez from comment #26)
&gt; &gt; The compiler output is a bit hard to head but it wasn&apos;t obvious to me that
&gt; &gt; the issue was with ServiceWorkerRegistrationKey::operator=() copying. It
&gt; &gt; looked to me that the issue was calling the move constructor of URL:
&gt; &gt; WTF::URL::operator=(WTF::URL&amp;&amp;)
&gt; &gt; here:
&gt; &gt; slot.setScope(URL(HashTableDeletedValue));
&gt; 
&gt; Well I think you&apos;re right, it&apos;s not a copy at all, it&apos;s a move. You&apos;re
&gt; better at squinting at obtuse warnings than I am.
&gt;  
&gt; &gt; I see. I missed that this was due to ServiceWorkerRegistrationKey copying.
&gt; 
&gt; Well... squinting at the warning, I guess it&apos;s not. 
&gt; 
&gt; &gt; Shouldn&apos;t we be able to move such URL constructed from HashTableDeletedValue?
&gt; 
&gt; Well, I agree. My opinion is that objects in WebKit should never have
&gt; uninitialized data unless we are able to demonstrate a real performance
&gt; improvement caused by leaving the data uninitialized, which I assume will be
&gt; very rare. Uninitialized data is dangerous for robustness because
&gt; programmers do not expect data to be uninitialized.
&gt; 
&gt; But Alex is worried about performance. I have no doubt that hash tables
&gt; containing URLs are performance-sensitive, though I do doubt that leaving
&gt; URLs partially-initialized is really a significant optimization. Anyway, my
&gt; patches to ServiceWorkerRegistrationKey only make sense if patches to
&gt; fully-initialize URL will not be accepted.

I think this latest patch is completely fine. It does not make things worse in anyway. I have a feeling though that this will bite us again in the future in other places if we don&apos;t fix it at URL level. I could buy that URL construction from HashTableDeletedValue may be hot enough that we don&apos;t want to initialize those members. That is why I suggested that maybe we want to silence this at compiler level, at URL layer. The move constructor for URL will do the right thing, even if constructed from HashTableDeletedValue. Yes, it will copy some data members that are garbage, but this is fine. It will copy the data member we properly initialized and URL.isDeletedHashTableValue() will still be true. Anyway, something to consider in a follow-up maybe?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1752599</commentid>
    <comment_count>32</comment_count>
      <attachid>426635</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-04-20 19:40:25 -0700</bug_when>
    <thetext>Comment on attachment 426635
Patch

r=me. If we see this issue in other places, maybe we&apos;ll consider silencing the warning at URL layer instead?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1752600</commentid>
    <comment_count>33</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2021-04-20 19:49:28 -0700</bug_when>
    <thetext>Thanks for reviewing.

(In reply to Chris Dumez from comment #32)
&gt; r=me. If we see this issue in other places, maybe we&apos;ll consider silencing
&gt; the warning at URL layer instead?

I haven&apos;t tried, but I think we could do this in URL.h:

IGNORE_WARNINGS_BEGIN(uninitialized)
class URL {
IGNORE_WARNING_END

That&apos;s the line that&apos;s ultimately associated with the warning, so I think that&apos;s where the suppression would need to be. That seems non-ideal.

Alternatively, we could remove SWScriptStorage.cpp from unified build and suppress -Wuninitialized for the entire file, which seems worse, and is punitive to SWScriptStorage.cpp, which isn&apos;t doing anything objectionable at all.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1752601</commentid>
    <comment_count>34</comment_count>
      <attachid>426635</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-04-20 20:01:00 -0700</bug_when>
    <thetext>Comment on attachment 426635
Patch

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

&gt; Source/WebCore/workers/service/ServiceWorkerRegistrationKey.h:111
&gt; +    static void constructDeletedValue(WebCore::ServiceWorkerRegistrationKey&amp; slot) { slot.m_topOrigin = WebCore::SecurityOriginData(HashTableDeletedValue); }

This isn’t quite right. What we want to do is to use placement new to put SecurityOriginData(HashTableDeletedValue) on top of m_topOrigin, not do an assignment to replace an existing value. We don&apos;t want to destroy the existing value that is there. The whole point of &quot;constructDeletedValue&quot; is that it makes a deleted value out of uninitialized memory, not on top of an already valid object.

It would be better to get this right. There are lots of other examples of how to use the placement new syntax to do this correctly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1752603</commentid>
    <comment_count>35</comment_count>
      <attachid>426635</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-04-20 20:18:45 -0700</bug_when>
    <thetext>Comment on attachment 426635
Patch

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

&gt;&gt; Source/WebCore/workers/service/ServiceWorkerRegistrationKey.h:111
&gt;&gt; +    static void constructDeletedValue(WebCore::ServiceWorkerRegistrationKey&amp; slot) { slot.m_topOrigin = WebCore::SecurityOriginData(HashTableDeletedValue); }
&gt; 
&gt; This isn’t quite right. What we want to do is to use placement new to put SecurityOriginData(HashTableDeletedValue) on top of m_topOrigin, not do an assignment to replace an existing value. We don&apos;t want to destroy the existing value that is there. The whole point of &quot;constructDeletedValue&quot; is that it makes a deleted value out of uninitialized memory, not on top of an already valid object.
&gt; 
&gt; It would be better to get this right. There are lots of other examples of how to use the placement new syntax to do this correctly.

Ok. I didn&apos;t know that. Looking at existing examples, seems like we want this then?
```
static void constructDeletedValue(WebCore::ServiceWorkerRegistrationKey&amp; slot)
{
    new (NotNull, &amp;slot) WebCore::ServiceWorkerRegistrationKey { WebCore::SecurityOriginData { WTF::HashTableDeletedValue }, { } };
}
```</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1752605</commentid>
    <comment_count>36</comment_count>
      <attachid>426635</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2021-04-20 20:18:55 -0700</bug_when>
    <thetext>Comment on attachment 426635
Patch

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

&gt;&gt; Source/WebCore/workers/service/ServiceWorkerRegistrationKey.h:111
&gt;&gt; +    static void constructDeletedValue(WebCore::ServiceWorkerRegistrationKey&amp; slot) { slot.m_topOrigin = WebCore::SecurityOriginData(HashTableDeletedValue); }
&gt; 
&gt; This isn’t quite right. What we want to do is to use placement new to put SecurityOriginData(HashTableDeletedValue) on top of m_topOrigin, not do an assignment to replace an existing value. We don&apos;t want to destroy the existing value that is there. The whole point of &quot;constructDeletedValue&quot; is that it makes a deleted value out of uninitialized memory, not on top of an already valid object.
&gt; 
&gt; It would be better to get this right. There are lots of other examples of how to use the placement new syntax to do this correctly.

OK, sure. I&apos;ll look closer tomorrow.

Note that the original code does not do that, it assumes that the ServiceWorkerRegistrationKey it is passed is already valid and calls setScope on it, which does a move assignment:

void setScope(URL&amp;&amp; scope) { m_scope = WTFMove(scope); }</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1752610</commentid>
    <comment_count>37</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-04-20 20:23:52 -0700</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #36)
&gt; Comment on attachment 426635 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=426635&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebCore/workers/service/ServiceWorkerRegistrationKey.h:111
&gt; &gt;&gt; +    static void constructDeletedValue(WebCore::ServiceWorkerRegistrationKey&amp; slot) { slot.m_topOrigin = WebCore::SecurityOriginData(HashTableDeletedValue); }
&gt; &gt; 
&gt; &gt; This isn’t quite right. What we want to do is to use placement new to put SecurityOriginData(HashTableDeletedValue) on top of m_topOrigin, not do an assignment to replace an existing value. We don&apos;t want to destroy the existing value that is there. The whole point of &quot;constructDeletedValue&quot; is that it makes a deleted value out of uninitialized memory, not on top of an already valid object.
&gt; &gt; 
&gt; &gt; It would be better to get this right. There are lots of other examples of how to use the placement new syntax to do this correctly.
&gt; 
&gt; OK, sure. I&apos;ll look closer tomorrow.
&gt; 
&gt; Note that the original code does not do that, it assumes that the
&gt; ServiceWorkerRegistrationKey it is passed is already valid and calls
&gt; setScope on it, which does a move assignment:
&gt; 
&gt; void setScope(URL&amp;&amp; scope) { m_scope = WTFMove(scope); }

Yes, your new code is not worse than the existing one as far as I can tell. I probably wrote the original code and did not know about this. Looking at our code base, I see a lot of them using placement new and a lot of them using what we had. Anyway, I&apos;ll make sure to get this right from now on.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1752611</commentid>
    <comment_count>38</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-04-20 20:28:30 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #35)
&gt; Comment on attachment 426635 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=426635&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebCore/workers/service/ServiceWorkerRegistrationKey.h:111
&gt; &gt;&gt; +    static void constructDeletedValue(WebCore::ServiceWorkerRegistrationKey&amp; slot) { slot.m_topOrigin = WebCore::SecurityOriginData(HashTableDeletedValue); }
&gt; &gt; 
&gt; &gt; This isn’t quite right. What we want to do is to use placement new to put SecurityOriginData(HashTableDeletedValue) on top of m_topOrigin, not do an assignment to replace an existing value. We don&apos;t want to destroy the existing value that is there. The whole point of &quot;constructDeletedValue&quot; is that it makes a deleted value out of uninitialized memory, not on top of an already valid object.
&gt; &gt; 
&gt; &gt; It would be better to get this right. There are lots of other examples of how to use the placement new syntax to do this correctly.
&gt; 
&gt; Ok. I didn&apos;t know that. Looking at existing examples, seems like we want
&gt; this then?
&gt; ```
&gt; static void constructDeletedValue(WebCore::ServiceWorkerRegistrationKey&amp;
&gt; slot)
&gt; {
&gt;     new (NotNull, &amp;slot) WebCore::ServiceWorkerRegistrationKey {
&gt; WebCore::SecurityOriginData { WTF::HashTableDeletedValue }, { } };
&gt; }
&gt; ```

Or maybe even better:
```
static void constructDeletedValue(WebCore:: ServiceWorkerRegistrationKey&amp; slot) { new (NotNull, &amp;slot.m_topOrigin) WebCore::SecurityOriginData(WTF::HashTableDeletedValue); }
```</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1752613</commentid>
    <comment_count>39</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-04-20 20:37:43 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #38)
&gt; static void constructDeletedValue(WebCore:: ServiceWorkerRegistrationKey&amp;
&gt; slot) { new (NotNull, &amp;slot.m_topOrigin)
&gt; WebCore::SecurityOriginData(WTF::HashTableDeletedValue); }

Yes, that looks pretty good.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1752614</commentid>
    <comment_count>40</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-04-20 20:39:13 -0700</bug_when>
    <thetext>By the way, there may be some more modern way to do this with &quot;emplace&quot; or something like that; I didn’t really keep up with this aspect of C++ as it evolved, but I have some vague idea that there is a way to do this without using &quot;new&quot; in more modern code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1752619</commentid>
    <comment_count>41</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2021-04-20 20:51:33 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #35)
&gt; Ok. I didn&apos;t know that. Looking at existing examples, seems like we want
&gt; this then?
&gt; ```
&gt; static void constructDeletedValue(WebCore::ServiceWorkerRegistrationKey&amp;
&gt; slot)
&gt; {
&gt;     new (NotNull, &amp;slot) WebCore::ServiceWorkerRegistrationKey {
&gt; WebCore::SecurityOriginData { WTF::HashTableDeletedValue }, { } };
&gt; }
&gt; ```

The only place I&apos;ve seen placement new used before is to implement boxed types in the GLib public APIs. One gotcha is that when the object is deallocated, its destructor will not be called, so you have to do that manually. I suppose we are fine with that never happening for HashTableDeletedValues.

I have not seen a placement new with more than one argument before. I got curious and eventually found we have our own special placement new in StdLibExtras.h to assert that the location is non-null, which seems like a good idea. That was hard to find!

&gt; By the way, there may be some more modern way to do this with &quot;emplace&quot; or something like that; I didn’t really keep up with this aspect of C++ as it evolved, but I have some vague idea that there is a way to do this without using &quot;new&quot; in more modern code.

Hm, I&apos;m not sure about that. At least, I don&apos;t know how else to do it other than with placement new.

emplace operations are defined for containers, e.g. std::vector::emplace_back is similar to push_back. It forwards its args to placement new, instead of copying like a push operation would do. Useful when you&apos;re constructing data and then immediately adding it to a container, but internally it is just doing placement new, and we aren&apos;t operating on a container in our example case here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1752621</commentid>
    <comment_count>42</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-04-20 20:55:57 -0700</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #41)
&gt; One gotcha is that when the object is
&gt; deallocated, its destructor will not be called, so you have to do that
&gt; manually. I suppose we are fine with that never happening for
&gt; HashTableDeletedValues.

That&apos;s right. The design of HashTable is that a deleted slot is never destroyed and is only constructed by calling the constructDeletedValue function. The thing you need to be able to do with a deleted slot is to return true from the isDeletedValue trait function and return false for actual valid constructed objects.

&gt; Hm, I&apos;m not sure about that.

You&apos;re right. I was wrong to think &quot;emplace&quot; had anything to do with this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1752703</commentid>
    <comment_count>43</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2021-04-21 04:46:23 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #42)
&gt; That&apos;s right. The design of HashTable is that a deleted slot is never
&gt; destroyed and is only constructed by calling the constructDeletedValue
&gt; function. The thing you need to be able to do with a deleted slot is to
&gt; return true from the isDeletedValue trait function and return false for
&gt; actual valid constructed objects.

So with this in mind, I think Chris and I were both wrong about the value of fully-initializing the URL. Our solution for ServiceWorkerRegistrationKey using placement new is not going to be fully-initialized anyway, since we&apos;re now only initializing m_topOrigin.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1752704</commentid>
    <comment_count>44</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2021-04-21 04:51:24 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #38)
&gt; static void constructDeletedValue(WebCore:: ServiceWorkerRegistrationKey&amp;
&gt; slot) { new (NotNull, &amp;slot.m_topOrigin)
&gt; WebCore::SecurityOriginData(WTF::HashTableDeletedValue); }
&gt; ```

That only constructs the SecurityOriginData data member, though, leaving it in memory allocated for a ServiceWorkerRegistrationKey but not constructing a ServiceWorkerRegistrationKey. We probably need to construct a real ServiceWorkerRegistrationKey. I think this can be done by adding a constructor that takes HashTableDeletedValueType, as you originally suggested. Let&apos;s see....</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1752711</commentid>
    <comment_count>45</comment_count>
      <attachid>426674</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2021-04-21 06:06:35 -0700</bug_when>
    <thetext>Created attachment 426674
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1752744</commentid>
    <comment_count>46</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-04-21 08:01:23 -0700</bug_when>
    <thetext>Committed r276361 (236839@main): &lt;https://commits.webkit.org/236839@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 426674.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1752907</commentid>
    <comment_count>47</comment_count>
      <attachid>426674</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-04-21 13:43:35 -0700</bug_when>
    <thetext>Comment on attachment 426674
Patch

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

&gt; Source/WebCore/workers/service/ServiceWorkerRegistrationKey.h:79
&gt; +inline ServiceWorkerRegistrationKey::ServiceWorkerRegistrationKey(WTF::HashTableDeletedValueType)
&gt; +    : m_topOrigin(WTF::HashTableDeletedValue)
&gt; +{
&gt; +}

This is OK. However, here’s a note for the future:

From a hash table implementation point of view, the goal when implementing constructDeletedValue is *not* to construct a valid object. All we want to do is to set a bit indicating that something is a deleted value. We would like to leave the rest of the object uninitialized, for performance reasons.

The only operations that will be done on a &quot;deleted value&quot; in a slot are:

1) calls to the isDeletedValue function
2) call to the == function iff safeToCompareToEmptyOrDeleted is set in the hash function traits

In particular: these objects are never destroyed, so it’s critical that the constructor not do anything that needs to be un-done.

This means that often we want to do something like just set a single bit or a set of bits to a value that we know will never be set that way for any valid value.

Thus &quot;not initializing everything&quot; is often a goal, not a bug. Initializing things creates a risk of allocating something that needs to be destroyed, and also means we are writing things we will never read, with a small but unnecessary performance cost.

We sometimes do find it handy to implement the constructDeletedValue operation with a constructor, but it really has different requirements that most constructors. We don’t want to initialize things like vtable pointers, and we don’t want to do more than minimum initialization. So I’m not sure that the pattern of using a special constructor is necessarily going to be the best over time.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1753371</commentid>
    <comment_count>48</comment_count>
      <attachid>426674</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-04-22 17:05:21 -0700</bug_when>
    <thetext>Comment on attachment 426674
Patch

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

&gt; Source/WebCore/workers/service/ServiceWorkerRegistrationKey.h:77
&gt; +inline ServiceWorkerRegistrationKey::ServiceWorkerRegistrationKey(WTF::HashTableDeletedValueType)
&gt; +    : m_topOrigin(WTF::HashTableDeletedValue)

This unnecessarily initializes m_scope to a null URL. A more efficient approach is to not touch m_scope at all and we should consider that refinement in future.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1753475</commentid>
    <comment_count>49</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-04-23 00:13:22 -0700</bug_when>
    <thetext>&lt;rdar://problem/77059533&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1753577</commentid>
    <comment_count>50</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2021-04-23 07:36:06 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #48)
&gt; This unnecessarily initializes m_scope to a null URL. A more efficient
&gt; approach is to not touch m_scope at all and we should consider that
&gt; refinement in future.

Bug #224975</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>426455</attachid>
            <date>2021-04-19 12:15:42 -0700</date>
            <delta_ts>2021-04-20 17:06:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-224755-20210419141541.patch</filename>
            <type>text/plain</type>
            <size>1270</size>
            <attacher name="Michael Catanzaro">mcatanzaro</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc2MjQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDYyMGZkYzY1YmE3Yzg5YWIzYzg0Mzc0
ZDE1NzI3ZjQyOTcyZmY4MDUuLjY1OGVkN2ViMmY5MGY1YjNjNGMyMDk1ODNhOGM5ZGY2NzVlMjY5
MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjEtMDQtMTkgIE1pY2hhZWwgQ2F0YW56YXJvICA8
bWNhdGFuemFyb0Bnbm9tZS5vcmc+CisKKyAgICAgICAgVVJMOjpVUkwoSGFzaFRhYmxlRGVsZXRl
ZFZhbHVlVHlwZSkgdHJpZ2dlcnMgLVd1bmluaXRpYWxpemVkIHdhcm5pbmdzIHdpdGggR0NDIDEx
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjQ3NTUK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbnZhbGlk
YXRlIHRoZSBuZXdseS1jb25zdHJ1Y3RlZCBVUkwgdG8gZW5zdXJlIGl0cyBtZW1iZXIgdmFyaWFi
bGVzIGFyZSB6ZXJvLWluaXRpYWxpemVkLgorICAgICAgICBUaGlzIHNlbWFudGljYWxseSBtYWtl
cyBzZW5zZSBiZWNhdXNlIGEgaGFzaCB0YWJsZSBkZWxldGVkIHZhbHVlIGlzIG5vdCBhIHZhbGlk
IFVSTC4KKworICAgICAgICAqIHd0Zi9VUkwuaDoKKyAgICAgICAgKFdURjo6VVJMOjpVUkwpOgor
CiAyMDIxLTA0LTE3ICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KIAogICAgICAgICBN
b3ZlIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXMgdG8gU2V0dGluZ3MgKFBhcnQgMSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL1VSTC5oIGIvU291cmNlL1dURi93dGYvVVJMLmgKaW5kZXggYjIy
NTkzNWViZDk0ZjcyNjZlNWUzNmM5MjdiYzZmOTE2ZDBlYjRkMC4uMDk5MGNkNzgxMjdkODVmNWVk
ODU1NzdkNzg5ZTA0YmM3NmYzOGUzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvVVJMLmgK
KysrIGIvU291cmNlL1dURi93dGYvVVJMLmgKQEAgLTMzOSw2ICszMzksNyBAQCBpbmxpbmUgYm9v
bCBvcGVyYXRvciE9KGNvbnN0IFN0cmluZyYgYSwgY29uc3QgVVJMJiBiKQogaW5saW5lIFVSTDo6
VVJMKEhhc2hUYWJsZURlbGV0ZWRWYWx1ZVR5cGUpCiAgICAgOiBtX3N0cmluZyhIYXNoVGFibGVE
ZWxldGVkVmFsdWUpCiB7CisgICAgaW52YWxpZGF0ZSgpOwogfQogCiBpbmxpbmUgYm9vbCBVUkw6
OmlzTnVsbCgpIGNvbnN0Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>426619</attachid>
            <date>2021-04-20 17:06:34 -0700</date>
            <delta_ts>2021-04-20 17:42:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-224755-20210420190634.patch</filename>
            <type>text/plain</type>
            <size>3012</size>
            <attacher name="Michael Catanzaro">mcatanzaro</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc2MzI1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTM3OGUyN2UzN2I4MjUx
ZTUzZmM0Nzk5OTBhNTAxYzU3OTZmYjI2MS4uOTkwMjI5MDk2NWVhZDA5OWZiZGE1NDM1YTA1MDk4
OTI5NWIzMDQwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDIxLTA0LTIwICBNaWNo
YWVsIENhdGFuemFybyAgPG1jYXRhbnphcm9AZ25vbWUub3JnPgorCisgICAgICAgIFVSTDo6VVJM
KEhhc2hUYWJsZURlbGV0ZWRWYWx1ZVR5cGUpIHRyaWdnZXJzIC1XdW5pbml0aWFsaXplZCB3YXJu
aW5ncyB3aXRoIEdDQyAxMQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjI0NzU1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgTXkgZmlyc3QgdGhvdWdodCBoZXJlIHdhcyB0byBqdXN0IGFsd2F5cyBmdWxseS1p
bml0aWFsaXplIHRoZSBVUkwgb2JqZWN0IHdoZW4gdXNlZCBhcyBhCisgICAgICAgIEhhc2hUYWJs
ZURlbGV0ZWRWYWx1ZSwgYnV0IEFsZXggaXMgY29uY2VybmVkIGl0IG1pZ2h0IGhhdmUgYSBwZXJm
b3JtYW5jZSBpbXBhY3QuIEluc3RlYWQsCisgICAgICAgIGxldCdzIGhhdmUgU2VydmljZVdvcmtl
clJlZ2lzdHJhdGlvbktleSB0cmFjayBmb3IgaXRzZWxmIHdoZXRoZXIgaXQgaXMgYQorICAgICAg
ICBIYXNoVGFibGVEZWxldGVkVmFsdWUgaW5zdGVhZCBvZiByZWx5aW5nIG9uIGl0cyBtX3Njb3Bl
IFVSTCB0byBkbyBzbyBmb3IgdXMuIFRoaXMgYXZvaWRzCisgICAgICAgIGNvcHlpbmcgdW5pbml0
aWFsaXplZCBkYXRhLCBhbmQgaXMgdW5saWtlbHkgdG8gcmVzdWx0IGluIHBlcmZvcm1hbmNlIGlt
cGFjdC4KKworICAgICAgICBUaGVyZSBzaG91bGQgYmUgbm8gYmVoYXZpb3IgY2hhbmdlLiAoQWx0
aG91Z2ggd2Ugd2VyZSBjb3B5aW5nIHVuaW5pdGlhbGl6ZWQgZGF0YSBiZWZvcmUsIGl0CisgICAg
ICAgIHdhcyBuZXZlciByZWFkLikKKworICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNl
V29ya2VyUmVnaXN0cmF0aW9uS2V5Lmg6CisgICAgICAgIChXVEY6Okhhc2hUcmFpdHM8V2ViQ29y
ZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleT46OmNvbnN0cnVjdERlbGV0ZWRWYWx1ZSk6
CisgICAgICAgIChXVEY6Okhhc2hUcmFpdHM8V2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvbktleT46OmlzRGVsZXRlZFZhbHVlKToKKwogMjAyMS0wNC0yMCAgQWRpdHlhIEtlZXJ0aGkg
IDxha2VlcnRoaUBhcHBsZS5jb20+CiAKICAgICAgICAgW2lPU11bRkNSXSBVcGRhdGUgZGF0ZS90
aW1lIHBpY2tlciBhcHBlYXJhbmNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2UvU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleS5oIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkuaAppbmRleCAyNzkx
MjEyMTg4YjYyNGQwNGU0NWRmOWJlM2E3Y2I3NzU5M2IzOGViLi4wZTUzYWQyMjMyODg1MjJlMjdm
ZjBlNThhYjg5OTk1MTBmMDVjMTE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2UvU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5LmgKQEAgLTY2
LDggKzY2LDExIEBAIHB1YmxpYzoKICNlbmRpZgogCiBwcml2YXRlOgorICAgIGZyaWVuZCBjbGFz
cyBIYXNoVHJhaXRzPFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXk+OworCiAg
ICAgU2VjdXJpdHlPcmlnaW5EYXRhIG1fdG9wT3JpZ2luOwogICAgIFVSTCBtX3Njb3BlOworICAg
IGJvb2wgbV9pc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZTsKIH07CiAKIHRlbXBsYXRlPGNsYXNzIEVu
Y29kZXI+CkBAIC0xMDYsOCArMTA5LDggQEAgc3RydWN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b25LZXlIYXNoIHsKIHRlbXBsYXRlPD4gc3RydWN0IEhhc2hUcmFpdHM8V2ViQ29yZTo6U2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbktleT4gOiBHZW5lcmljSGFzaFRyYWl0czxXZWJDb3JlOjpTZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5PiB7CiAgICAgc3RhdGljIFdlYkNvcmU6OlNlcnZpY2VX
b3JrZXJSZWdpc3RyYXRpb25LZXkgZW1wdHlWYWx1ZSgpIHsgcmV0dXJuIFdlYkNvcmU6OlNlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb25LZXk6OmVtcHR5S2V5KCk7IH0KIAotICAgIHN0YXRpYyB2b2lk
IGNvbnN0cnVjdERlbGV0ZWRWYWx1ZShXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
S2V5JiBzbG90KSB7IHNsb3Quc2V0U2NvcGUoVVJMKEhhc2hUYWJsZURlbGV0ZWRWYWx1ZSkpOyB9
Ci0gICAgc3RhdGljIGJvb2wgaXNEZWxldGVkVmFsdWUoY29uc3QgV2ViQ29yZTo6U2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvbktleSYgc2xvdCkgeyByZXR1cm4gc2xvdC5zY29wZSgpLmlzSGFzaFRh
YmxlRGVsZXRlZFZhbHVlKCk7IH0KKyAgICBzdGF0aWMgdm9pZCBjb25zdHJ1Y3REZWxldGVkVmFs
dWUoV2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYgc2xvdCkgeyBzbG90Lm1f
aXNIYXNoVGFibGVEZWxldGVkVmFsdWUgPSB0cnVlOyB9CisgICAgc3RhdGljIGJvb2wgaXNEZWxl
dGVkVmFsdWUoY29uc3QgV2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYgc2xv
dCkgeyByZXR1cm4gc2xvdC5tX2lzSGFzaFRhYmxlRGVsZXRlZFZhbHVlOyB9CiB9OwogCiB0ZW1w
bGF0ZTw+IHN0cnVjdCBEZWZhdWx0SGFzaDxXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9uS2V5PiA6IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXlIYXNoIHsgfTsK
</data>
<flag name="commit-queue"
          id="446964"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>426623</attachid>
            <date>2021-04-20 17:42:00 -0700</date>
            <delta_ts>2021-04-20 18:13:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-224755-20210420194159.patch</filename>
            <type>text/plain</type>
            <size>3013</size>
            <attacher name="Michael Catanzaro">mcatanzaro</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc2MzI1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTM3OGUyN2UzN2I4MjUx
ZTUzZmM0Nzk5OTBhNTAxYzU3OTZmYjI2MS4uOTkwMjI5MDk2NWVhZDA5OWZiZGE1NDM1YTA1MDk4
OTI5NWIzMDQwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDIxLTA0LTIwICBNaWNo
YWVsIENhdGFuemFybyAgPG1jYXRhbnphcm9AZ25vbWUub3JnPgorCisgICAgICAgIFVSTDo6VVJM
KEhhc2hUYWJsZURlbGV0ZWRWYWx1ZVR5cGUpIHRyaWdnZXJzIC1XdW5pbml0aWFsaXplZCB3YXJu
aW5ncyB3aXRoIEdDQyAxMQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjI0NzU1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgTXkgZmlyc3QgdGhvdWdodCBoZXJlIHdhcyB0byBqdXN0IGFsd2F5cyBmdWxseS1p
bml0aWFsaXplIHRoZSBVUkwgb2JqZWN0IHdoZW4gdXNlZCBhcyBhCisgICAgICAgIEhhc2hUYWJs
ZURlbGV0ZWRWYWx1ZSwgYnV0IEFsZXggaXMgY29uY2VybmVkIGl0IG1pZ2h0IGhhdmUgYSBwZXJm
b3JtYW5jZSBpbXBhY3QuIEluc3RlYWQsCisgICAgICAgIGxldCdzIGhhdmUgU2VydmljZVdvcmtl
clJlZ2lzdHJhdGlvbktleSB0cmFjayBmb3IgaXRzZWxmIHdoZXRoZXIgaXQgaXMgYQorICAgICAg
ICBIYXNoVGFibGVEZWxldGVkVmFsdWUgaW5zdGVhZCBvZiByZWx5aW5nIG9uIGl0cyBtX3Njb3Bl
IFVSTCB0byBkbyBzbyBmb3IgdXMuIFRoaXMgYXZvaWRzCisgICAgICAgIGNvcHlpbmcgdW5pbml0
aWFsaXplZCBkYXRhLCBhbmQgaXMgdW5saWtlbHkgdG8gcmVzdWx0IGluIHBlcmZvcm1hbmNlIGlt
cGFjdC4KKworICAgICAgICBUaGVyZSBzaG91bGQgYmUgbm8gYmVoYXZpb3IgY2hhbmdlLiAoQWx0
aG91Z2ggd2Ugd2VyZSBjb3B5aW5nIHVuaW5pdGlhbGl6ZWQgZGF0YSBiZWZvcmUsIGl0CisgICAg
ICAgIHdhcyBuZXZlciByZWFkLikKKworICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNl
V29ya2VyUmVnaXN0cmF0aW9uS2V5Lmg6CisgICAgICAgIChXVEY6Okhhc2hUcmFpdHM8V2ViQ29y
ZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleT46OmNvbnN0cnVjdERlbGV0ZWRWYWx1ZSk6
CisgICAgICAgIChXVEY6Okhhc2hUcmFpdHM8V2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvbktleT46OmlzRGVsZXRlZFZhbHVlKToKKwogMjAyMS0wNC0yMCAgQWRpdHlhIEtlZXJ0aGkg
IDxha2VlcnRoaUBhcHBsZS5jb20+CiAKICAgICAgICAgW2lPU11bRkNSXSBVcGRhdGUgZGF0ZS90
aW1lIHBpY2tlciBhcHBlYXJhbmNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2UvU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleS5oIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkuaAppbmRleCAyNzkx
MjEyMTg4YjYyNGQwNGU0NWRmOWJlM2E3Y2I3NzU5M2IzOGViLi4yNzhmZWZkYWQ3YzgzMmZhOTRj
YmYxM2FkNGNiOTQwZTc5OWJhNjQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2UvU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5LmgKQEAgLTY2
LDggKzY2LDExIEBAIHB1YmxpYzoKICNlbmRpZgogCiBwcml2YXRlOgorICAgIGZyaWVuZCBzdHJ1
Y3QgSGFzaFRyYWl0czxXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5PjsKKwog
ICAgIFNlY3VyaXR5T3JpZ2luRGF0YSBtX3RvcE9yaWdpbjsKICAgICBVUkwgbV9zY29wZTsKKyAg
ICBib29sIG1faXNIYXNoVGFibGVEZWxldGVkVmFsdWU7CiB9OwogCiB0ZW1wbGF0ZTxjbGFzcyBF
bmNvZGVyPgpAQCAtMTA2LDggKzEwOSw4IEBAIHN0cnVjdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9uS2V5SGFzaCB7CiB0ZW1wbGF0ZTw+IHN0cnVjdCBIYXNoVHJhaXRzPFdlYkNvcmU6OlNlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb25LZXk+IDogR2VuZXJpY0hhc2hUcmFpdHM8V2ViQ29yZTo6U2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbktleT4gewogICAgIHN0YXRpYyBXZWJDb3JlOjpTZXJ2aWNl
V29ya2VyUmVnaXN0cmF0aW9uS2V5IGVtcHR5VmFsdWUoKSB7IHJldHVybiBXZWJDb3JlOjpTZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5OjplbXB0eUtleSgpOyB9CiAKLSAgICBzdGF0aWMgdm9p
ZCBjb25zdHJ1Y3REZWxldGVkVmFsdWUoV2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlv
bktleSYgc2xvdCkgeyBzbG90LnNldFNjb3BlKFVSTChIYXNoVGFibGVEZWxldGVkVmFsdWUpKTsg
fQotICAgIHN0YXRpYyBib29sIGlzRGVsZXRlZFZhbHVlKGNvbnN0IFdlYkNvcmU6OlNlcnZpY2VX
b3JrZXJSZWdpc3RyYXRpb25LZXkmIHNsb3QpIHsgcmV0dXJuIHNsb3Quc2NvcGUoKS5pc0hhc2hU
YWJsZURlbGV0ZWRWYWx1ZSgpOyB9CisgICAgc3RhdGljIHZvaWQgY29uc3RydWN0RGVsZXRlZFZh
bHVlKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmIHNsb3QpIHsgc2xvdC5t
X2lzSGFzaFRhYmxlRGVsZXRlZFZhbHVlID0gdHJ1ZTsgfQorICAgIHN0YXRpYyBib29sIGlzRGVs
ZXRlZFZhbHVlKGNvbnN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmIHNs
b3QpIHsgcmV0dXJuIHNsb3QubV9pc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZTsgfQogfTsKIAogdGVt
cGxhdGU8PiBzdHJ1Y3QgRGVmYXVsdEhhc2g8V2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvbktleT4gOiBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5SGFzaCB7IH07Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>426626</attachid>
            <date>2021-04-20 18:13:02 -0700</date>
            <delta_ts>2021-04-20 19:14:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-224755-20210420201302.patch</filename>
            <type>text/plain</type>
            <size>3071</size>
            <attacher name="Michael Catanzaro">mcatanzaro</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc2MzQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmY5NmU5MjU5N2I5OGQz
NDQ1ZDk0OGNmMjBiNDM3ZTJjMmQzYjI3My4uZWRmMWFjNWY1NjY1ZjEzYWVlM2EwNzlhMmY2Yzg0
M2I2MjIxODRlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDIxLTA0LTIwICBNaWNo
YWVsIENhdGFuemFybyAgPG1jYXRhbnphcm9AZ25vbWUub3JnPgorCisgICAgICAgIFVSTDo6VVJM
KEhhc2hUYWJsZURlbGV0ZWRWYWx1ZVR5cGUpIHRyaWdnZXJzIC1XdW5pbml0aWFsaXplZCB3YXJu
aW5ncyB3aXRoIEdDQyAxMQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjI0NzU1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgTXkgZmlyc3QgdGhvdWdodCBoZXJlIHdhcyB0byBqdXN0IGFsd2F5cyBmdWxseS1p
bml0aWFsaXplIHRoZSBVUkwgb2JqZWN0IHdoZW4gdXNlZCBhcyBhCisgICAgICAgIEhhc2hUYWJs
ZURlbGV0ZWRWYWx1ZSwgYnV0IEFsZXggaXMgY29uY2VybmVkIGl0IG1pZ2h0IGhhdmUgYSBwZXJm
b3JtYW5jZSBpbXBhY3QuIEluc3RlYWQsCisgICAgICAgIGxldCdzIGhhdmUgU2VydmljZVdvcmtl
clJlZ2lzdHJhdGlvbktleSB0cmFjayBmb3IgaXRzZWxmIHdoZXRoZXIgaXQgaXMgYQorICAgICAg
ICBIYXNoVGFibGVEZWxldGVkVmFsdWUgaW5zdGVhZCBvZiByZWx5aW5nIG9uIGl0cyBtX3Njb3Bl
IFVSTCB0byBkbyBzbyBmb3IgdXMuIFRoaXMgYXZvaWRzCisgICAgICAgIGNvcHlpbmcgdW5pbml0
aWFsaXplZCBkYXRhLCBhbmQgaXMgdW5saWtlbHkgdG8gcmVzdWx0IGluIHBlcmZvcm1hbmNlIGlt
cGFjdC4KKworICAgICAgICBUaGVyZSBzaG91bGQgYmUgbm8gYmVoYXZpb3IgY2hhbmdlLiAoQWx0
aG91Z2ggd2Ugd2VyZSBjb3B5aW5nIHVuaW5pdGlhbGl6ZWQgZGF0YSBiZWZvcmUsIGl0CisgICAg
ICAgIHdhcyBuZXZlciByZWFkLikKKworICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNl
V29ya2VyUmVnaXN0cmF0aW9uS2V5Lmg6CisgICAgICAgIChXVEY6Okhhc2hUcmFpdHM8V2ViQ29y
ZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleT46OmNvbnN0cnVjdERlbGV0ZWRWYWx1ZSk6
CisgICAgICAgIChXVEY6Okhhc2hUcmFpdHM8V2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvbktleT46OmlzRGVsZXRlZFZhbHVlKToKKwogMjAyMS0wNC0yMCAgQnJlbnQgRnVsZ2hhbSAg
PGJmdWxnaGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBbQ29jb2FdIFByZXZlbnQgR1BVIGFuZCBX
ZWJDb250ZW50IHByb2Nlc3NlcyBmcm9tIGF0dGVtcHRpbmcgdG8gY29ubmVjdCB0byB0aGUgQXBw
U1NPIHNlcnZpY2UgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkuaAppbmRleCAyNzkxMjEyMTg4YjYy
NGQwNGU0NWRmOWJlM2E3Y2I3NzU5M2IzOGViLi5iYjNiZTQ1OTQwNDk0N2QyYzQzMWZlOWQ5Zjhl
YTNlYWY1YmM2ZWZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5LmgKQEAgLTY2LDggKzY2LDEx
IEBAIHB1YmxpYzoKICNlbmRpZgogCiBwcml2YXRlOgorICAgIGZyaWVuZCBzdHJ1Y3QgSGFzaFRy
YWl0czxXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5PjsKKwogICAgIFNlY3Vy
aXR5T3JpZ2luRGF0YSBtX3RvcE9yaWdpbjsKICAgICBVUkwgbV9zY29wZTsKKyAgICBib29sIG1f
aXNIYXNoVGFibGVEZWxldGVkVmFsdWUgeyBmYWxzZSB9OwogfTsKIAogdGVtcGxhdGU8Y2xhc3Mg
RW5jb2Rlcj4KQEAgLTEwNiw4ICsxMDksOCBAQCBzdHJ1Y3QgU2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvbktleUhhc2ggewogdGVtcGxhdGU8PiBzdHJ1Y3QgSGFzaFRyYWl0czxXZWJDb3JlOjpTZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5PiA6IEdlbmVyaWNIYXNoVHJhaXRzPFdlYkNvcmU6OlNl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXk+IHsKICAgICBzdGF0aWMgV2ViQ29yZTo6U2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbktleSBlbXB0eVZhbHVlKCkgeyByZXR1cm4gV2ViQ29yZTo6U2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbktleTo6ZW1wdHlLZXkoKTsgfQogCi0gICAgc3RhdGljIHZv
aWQgY29uc3RydWN0RGVsZXRlZFZhbHVlKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b25LZXkmIHNsb3QpIHsgc2xvdC5zZXRTY29wZShVUkwoSGFzaFRhYmxlRGVsZXRlZFZhbHVlKSk7
IH0KLSAgICBzdGF0aWMgYm9vbCBpc0RlbGV0ZWRWYWx1ZShjb25zdCBXZWJDb3JlOjpTZXJ2aWNl
V29ya2VyUmVnaXN0cmF0aW9uS2V5JiBzbG90KSB7IHJldHVybiBzbG90LnNjb3BlKCkuaXNIYXNo
VGFibGVEZWxldGVkVmFsdWUoKTsgfQorICAgIHN0YXRpYyB2b2lkIGNvbnN0cnVjdERlbGV0ZWRW
YWx1ZShXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiBzbG90KSB7IHNsb3Qu
bV9pc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSA9IHRydWU7IH0KKyAgICBzdGF0aWMgYm9vbCBpc0Rl
bGV0ZWRWYWx1ZShjb25zdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiBz
bG90KSB7IHJldHVybiBzbG90Lm1faXNIYXNoVGFibGVEZWxldGVkVmFsdWU7IH0KIH07CiAKIHRl
bXBsYXRlPD4gc3RydWN0IERlZmF1bHRIYXNoPFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb25LZXk+IDogU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleUhhc2ggeyB9Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>426632</attachid>
            <date>2021-04-20 19:14:32 -0700</date>
            <delta_ts>2021-04-20 19:29:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-224755-20210420211431.patch</filename>
            <type>text/plain</type>
            <size>3004</size>
            <attacher name="Michael Catanzaro">mcatanzaro</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc2MzQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmY5NmU5MjU5N2I5OGQz
NDQ1ZDk0OGNmMjBiNDM3ZTJjMmQzYjI3My4uZjJlZDM3OGZhMjIzZTY2NjdhYWI0MjU2YWI1ZDY1
NzA3ZjQzMTMyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDIxLTA0LTIwICBNaWNo
YWVsIENhdGFuemFybyAgPG1jYXRhbnphcm9AZ25vbWUub3JnPgorCisgICAgICAgIFVSTDo6VVJM
KEhhc2hUYWJsZURlbGV0ZWRWYWx1ZVR5cGUpIHRyaWdnZXJzIC1XdW5pbml0aWFsaXplZCB3YXJu
aW5ncyB3aXRoIEdDQyAxMQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjI0NzU1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkKKwor
ICAgICAgICBNeSBmaXJzdCB0aG91Z2h0IGhlcmUgd2FzIHRvIGp1c3QgYWx3YXlzIGZ1bGx5LWlu
aXRpYWxpemUgdGhlIFVSTCBvYmplY3Qgd2hlbiB1c2VkIGFzIGEKKyAgICAgICAgSGFzaFRhYmxl
RGVsZXRlZFZhbHVlLCBidXQgQWxleCBpcyBjb25jZXJuZWQgaXQgbWlnaHQgaGF2ZSBhIHBlcmZv
cm1hbmNlIGltcGFjdC4gSW5zdGVhZCwKKyAgICAgICAgQ2hyaXMgc3VnZ2VzdGVkIHdlIGNvdWxk
IHVzZSB0aGUgU2VjdXJpdHlPcmlnaW5EYXRhIHJhdGhlciB0aGFuIFVSTCB0byB0cmFjayB3aGV0
aGVyIHdlIGFyZQorICAgICAgICBhIEhhc2hUYWJsZURlbGV0ZWRWYWx1ZS4gVGhpcyBzZWVtcyBn
b29kIGJlY2F1c2UgaXQgYXZvaWRzIGFueSBzaXplIGluY3JlYXNlIGluCisgICAgICAgIFNlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb25LZXkuCisKKyAgICAgICAgVGhlcmUgc2hvdWxkIGJlIG5vIGJl
aGF2aW9yIGNoYW5nZS4gKEFsdGhvdWdoIHdlIHdlcmUgY29weWluZyB1bmluaXRpYWxpemVkIGRh
dGEgYmVmb3JlLCBpdAorICAgICAgICB3YXMgbmV2ZXIgcmVhZC4gSG9wZWZ1bGx5LikKKworICAg
ICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5Lmg6Cisg
ICAgICAgIChXVEY6Okhhc2hUcmFpdHM8V2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlv
bktleT46OmNvbnN0cnVjdERlbGV0ZWRWYWx1ZSk6CisgICAgICAgIChXVEY6Okhhc2hUcmFpdHM8
V2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleT46OmlzRGVsZXRlZFZhbHVlKToK
KwogMjAyMS0wNC0yMCAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KIAogICAg
ICAgICBbQ29jb2FdIFByZXZlbnQgR1BVIGFuZCBXZWJDb250ZW50IHByb2Nlc3NlcyBmcm9tIGF0
dGVtcHRpbmcgdG8gY29ubmVjdCB0byB0aGUgQXBwU1NPIHNlcnZpY2UgCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktl
eS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb25LZXkuaAppbmRleCAyNzkxMjEyMTg4YjYyNGQwNGU0NWRmOWJlM2E3Y2I3NzU5M2IzOGVi
Li5mM2Y3MGQ4ZjhhMzI5M2QyZDhiNTQ0YzFiYzk5NTkzZTVkNTE1MjE3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktl
eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9uS2V5LmgKQEAgLTY2LDYgKzY2LDggQEAgcHVibGljOgogI2VuZGlmCiAKIHByaXZh
dGU6CisgICAgZnJpZW5kIHN0cnVjdCBIYXNoVHJhaXRzPFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25LZXk+OworCiAgICAgU2VjdXJpdHlPcmlnaW5EYXRhIG1fdG9wT3JpZ2luOwog
ICAgIFVSTCBtX3Njb3BlOwogfTsKQEAgLTEwNiw4ICsxMDgsOCBAQCBzdHJ1Y3QgU2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvbktleUhhc2ggewogdGVtcGxhdGU8PiBzdHJ1Y3QgSGFzaFRyYWl0czxX
ZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5PiA6IEdlbmVyaWNIYXNoVHJhaXRz
PFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXk+IHsKICAgICBzdGF0aWMgV2Vi
Q29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSBlbXB0eVZhbHVlKCkgeyByZXR1cm4g
V2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleTo6ZW1wdHlLZXkoKTsgfQogCi0g
ICAgc3RhdGljIHZvaWQgY29uc3RydWN0RGVsZXRlZFZhbHVlKFdlYkNvcmU6OlNlcnZpY2VXb3Jr
ZXJSZWdpc3RyYXRpb25LZXkmIHNsb3QpIHsgc2xvdC5zZXRTY29wZShVUkwoSGFzaFRhYmxlRGVs
ZXRlZFZhbHVlKSk7IH0KLSAgICBzdGF0aWMgYm9vbCBpc0RlbGV0ZWRWYWx1ZShjb25zdCBXZWJD
b3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiBzbG90KSB7IHJldHVybiBzbG90LnNj
b3BlKCkuaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKTsgfQorICAgIHN0YXRpYyB2b2lkIGNvbnN0
cnVjdERlbGV0ZWRWYWx1ZShXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiBz
bG90KSB7IHNsb3QubV90b3BPcmlnaW4gPSBTZWN1cml0eU9yaWdpbkRhdGEoSGFzaFRhYmxlRGVs
ZXRlZFZhbHVlKTsgfQorICAgIHN0YXRpYyBib29sIGlzRGVsZXRlZFZhbHVlKGNvbnN0IFdlYkNv
cmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmIHNsb3QpIHsgcmV0dXJuIHNsb3QubV90
b3BPcmlnaW4uaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKTsgfQogfTsKIAogdGVtcGxhdGU8PiBz
dHJ1Y3QgRGVmYXVsdEhhc2g8V2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleT4g
OiBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5SGFzaCB7IH07Cg==
</data>
<flag name="commit-queue"
          id="446981"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>426635</attachid>
            <date>2021-04-20 19:27:06 -0700</date>
            <delta_ts>2021-04-21 06:06:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-224755-20210420212705.patch</filename>
            <type>text/plain</type>
            <size>3013</size>
            <attacher name="Michael Catanzaro">mcatanzaro</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc2MzQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmY5NmU5MjU5N2I5OGQz
NDQ1ZDk0OGNmMjBiNDM3ZTJjMmQzYjI3My4uZjJlZDM3OGZhMjIzZTY2NjdhYWI0MjU2YWI1ZDY1
NzA3ZjQzMTMyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDIxLTA0LTIwICBNaWNo
YWVsIENhdGFuemFybyAgPG1jYXRhbnphcm9AZ25vbWUub3JnPgorCisgICAgICAgIFVSTDo6VVJM
KEhhc2hUYWJsZURlbGV0ZWRWYWx1ZVR5cGUpIHRyaWdnZXJzIC1XdW5pbml0aWFsaXplZCB3YXJu
aW5ncyB3aXRoIEdDQyAxMQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjI0NzU1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkKKwor
ICAgICAgICBNeSBmaXJzdCB0aG91Z2h0IGhlcmUgd2FzIHRvIGp1c3QgYWx3YXlzIGZ1bGx5LWlu
aXRpYWxpemUgdGhlIFVSTCBvYmplY3Qgd2hlbiB1c2VkIGFzIGEKKyAgICAgICAgSGFzaFRhYmxl
RGVsZXRlZFZhbHVlLCBidXQgQWxleCBpcyBjb25jZXJuZWQgaXQgbWlnaHQgaGF2ZSBhIHBlcmZv
cm1hbmNlIGltcGFjdC4gSW5zdGVhZCwKKyAgICAgICAgQ2hyaXMgc3VnZ2VzdGVkIHdlIGNvdWxk
IHVzZSB0aGUgU2VjdXJpdHlPcmlnaW5EYXRhIHJhdGhlciB0aGFuIFVSTCB0byB0cmFjayB3aGV0
aGVyIHdlIGFyZQorICAgICAgICBhIEhhc2hUYWJsZURlbGV0ZWRWYWx1ZS4gVGhpcyBzZWVtcyBn
b29kIGJlY2F1c2UgaXQgYXZvaWRzIGFueSBzaXplIGluY3JlYXNlIGluCisgICAgICAgIFNlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb25LZXkuCisKKyAgICAgICAgVGhlcmUgc2hvdWxkIGJlIG5vIGJl
aGF2aW9yIGNoYW5nZS4gKEFsdGhvdWdoIHdlIHdlcmUgY29weWluZyB1bmluaXRpYWxpemVkIGRh
dGEgYmVmb3JlLCBpdAorICAgICAgICB3YXMgbmV2ZXIgcmVhZC4gSG9wZWZ1bGx5LikKKworICAg
ICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5Lmg6Cisg
ICAgICAgIChXVEY6Okhhc2hUcmFpdHM8V2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlv
bktleT46OmNvbnN0cnVjdERlbGV0ZWRWYWx1ZSk6CisgICAgICAgIChXVEY6Okhhc2hUcmFpdHM8
V2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleT46OmlzRGVsZXRlZFZhbHVlKToK
KwogMjAyMS0wNC0yMCAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KIAogICAg
ICAgICBbQ29jb2FdIFByZXZlbnQgR1BVIGFuZCBXZWJDb250ZW50IHByb2Nlc3NlcyBmcm9tIGF0
dGVtcHRpbmcgdG8gY29ubmVjdCB0byB0aGUgQXBwU1NPIHNlcnZpY2UgCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktl
eS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb25LZXkuaAppbmRleCAyNzkxMjEyMTg4YjYyNGQwNGU0NWRmOWJlM2E3Y2I3NzU5M2IzOGVi
Li5lZWUxNjQ5ZWE3ZDI5NjkxMTk5NDU3ZjFlZTdlOWUwMmNlMjJiZTZkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktl
eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9uS2V5LmgKQEAgLTY2LDYgKzY2LDggQEAgcHVibGljOgogI2VuZGlmCiAKIHByaXZh
dGU6CisgICAgZnJpZW5kIHN0cnVjdCBIYXNoVHJhaXRzPFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25LZXk+OworCiAgICAgU2VjdXJpdHlPcmlnaW5EYXRhIG1fdG9wT3JpZ2luOwog
ICAgIFVSTCBtX3Njb3BlOwogfTsKQEAgLTEwNiw4ICsxMDgsOCBAQCBzdHJ1Y3QgU2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvbktleUhhc2ggewogdGVtcGxhdGU8PiBzdHJ1Y3QgSGFzaFRyYWl0czxX
ZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5PiA6IEdlbmVyaWNIYXNoVHJhaXRz
PFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXk+IHsKICAgICBzdGF0aWMgV2Vi
Q29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSBlbXB0eVZhbHVlKCkgeyByZXR1cm4g
V2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleTo6ZW1wdHlLZXkoKTsgfQogCi0g
ICAgc3RhdGljIHZvaWQgY29uc3RydWN0RGVsZXRlZFZhbHVlKFdlYkNvcmU6OlNlcnZpY2VXb3Jr
ZXJSZWdpc3RyYXRpb25LZXkmIHNsb3QpIHsgc2xvdC5zZXRTY29wZShVUkwoSGFzaFRhYmxlRGVs
ZXRlZFZhbHVlKSk7IH0KLSAgICBzdGF0aWMgYm9vbCBpc0RlbGV0ZWRWYWx1ZShjb25zdCBXZWJD
b3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiBzbG90KSB7IHJldHVybiBzbG90LnNj
b3BlKCkuaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKTsgfQorICAgIHN0YXRpYyB2b2lkIGNvbnN0
cnVjdERlbGV0ZWRWYWx1ZShXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiBz
bG90KSB7IHNsb3QubV90b3BPcmlnaW4gPSBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEoSGFz
aFRhYmxlRGVsZXRlZFZhbHVlKTsgfQorICAgIHN0YXRpYyBib29sIGlzRGVsZXRlZFZhbHVlKGNv
bnN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmIHNsb3QpIHsgcmV0dXJu
IHNsb3QubV90b3BPcmlnaW4uaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKTsgfQogfTsKIAogdGVt
cGxhdGU8PiBzdHJ1Y3QgRGVmYXVsdEhhc2g8V2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvbktleT4gOiBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5SGFzaCB7IH07Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>426674</attachid>
            <date>2021-04-21 06:06:35 -0700</date>
            <delta_ts>2021-04-21 08:30:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-224755-20210421080634.patch</filename>
            <type>text/plain</type>
            <size>3832</size>
            <attacher name="Michael Catanzaro">mcatanzaro</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc2MzU1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWZhNjU3ZDEzYTlhMzA0
Y2I0YjkwYjZiOWQzMjJmMWRlMDA0MTgyMi4uMzY5YTE4ZmNjMjA3OTg5MjdlZjNkNzgwODlkMTE1
YTJlMGJmMTM3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDIxLTA0LTIxICBNaWNo
YWVsIENhdGFuemFybyAgPG1jYXRhbnphcm9AZ25vbWUub3JnPgorCisgICAgICAgIFVSTDo6VVJM
KEhhc2hUYWJsZURlbGV0ZWRWYWx1ZVR5cGUpIHRyaWdnZXJzIC1XdW5pbml0aWFsaXplZCB3YXJu
aW5ncyB3aXRoIEdDQyAxMQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjI0NzU1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQ2hyaXMgRHVtZXoKKworICAg
ICAgICBNeSBmaXJzdCB0aG91Z2h0IGhlcmUgd2FzIHRvIGp1c3QgYWx3YXlzIGZ1bGx5LWluaXRp
YWxpemUgdGhlIFVSTCBvYmplY3Qgd2hlbiB1c2VkIGFzIGEKKyAgICAgICAgSGFzaFRhYmxlRGVs
ZXRlZFZhbHVlLCBidXQgQWxleCBpcyBjb25jZXJuZWQgaXQgbWlnaHQgaGF2ZSBhIHBlcmZvcm1h
bmNlIGltcGFjdC4gSW5zdGVhZCwKKyAgICAgICAgQ2hyaXMgc3VnZ2VzdGVkIHdlIGNvdWxkIHVz
ZSB0aGUgU2VjdXJpdHlPcmlnaW5EYXRhIHJhdGhlciB0aGFuIFVSTCB0byB0cmFjayB3aGV0aGVy
IHdlIGFyZQorICAgICAgICBhIEhhc2hUYWJsZURlbGV0ZWRWYWx1ZS4gVGhpcyBzZWVtcyBnb29k
IGJlY2F1c2UgaXQgYXZvaWRzIGFueSBzaXplIGluY3JlYXNlIGluCisgICAgICAgIFNlcnZpY2VX
b3JrZXJSZWdpc3RyYXRpb25LZXkuIEFkZGl0aW9uYWxseSwgbGV0J3MgZm9sbG93IERhcmluJ3Mg
YWR2aWNlIHRvIGNvbnN0cnVjdCB0aGUKKyAgICAgICAgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlv
bktleSB1c2luZyBwbGFjZW1lbnQgbmV3IHJhdGhlciB0aGFuIHZpYSBhc3NpZ25tZW50IHRvIHRo
ZQorICAgICAgICB1bmluaXRpYWxpemVkIHN0b3JhZ2UuCisKKyAgICAgICAgVGhlcmUgc2hvdWxk
IGJlIG5vIGJlaGF2aW9yIGNoYW5nZS4gKEFsdGhvdWdoIHdlIHdlcmUgY29weWluZyB1bmluaXRp
YWxpemVkIGRhdGEgYmVmb3JlLCBpdAorICAgICAgICB3YXMgbmV2ZXIgcmVhZC4gSG9wZWZ1bGx5
LikKKworICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
S2V5Lmg6CisgICAgICAgIChXVEY6Okhhc2hUcmFpdHM8V2ViQ29yZTo6U2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvbktleT46OmNvbnN0cnVjdERlbGV0ZWRWYWx1ZSk6CisgICAgICAgIChXVEY6Okhh
c2hUcmFpdHM8V2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleT46OmlzRGVsZXRl
ZFZhbHVlKToKKwogMjAyMS0wNC0yMSAgTWFydGluIFJvYmluc29uICA8bXJvYmluc29uQHdlYmtp
dC5vcmc+CiAKICAgICAgICAgQWRkIGJhc2ljIChub24tbW9tZW50dW0pIHdoZWVsIGV2ZW50IGhh
bmRsaW5nIGZvciBzY3JvbGwgc25hcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkuaCBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5LmgKaW5kZXggMjc5
MTIxMjE4OGI2MjRkMDRlNDVkZjliZTNhN2NiNzc1OTNiMzhlYi4uYWQ5NTZkMTFhY2YzMTI4YjBk
NzA1OTE0YjAwZTNiMTMwMDdjNjUzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleS5oCkBAIC0z
NSw2ICszNSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFNlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb25LZXkgewogcHVibGljOgogICAgIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXko
KSA9IGRlZmF1bHQ7CisgICAgZXhwbGljaXQgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleShX
VEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZVR5cGUpOwogICAgIFdFQkNPUkVfRVhQT1JUIFNlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb25LZXkoU2VjdXJpdHlPcmlnaW5EYXRhJiYgdG9wT3JpZ2luLCBV
UkwmJiBzY29wZSk7CiAKICAgICBzdGF0aWMgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSBl
bXB0eUtleSgpOwpAQCAtNjUsMTEgKzY2LDE4IEBAIHB1YmxpYzoKICAgICBTdHJpbmcgbG9nZ2lu
Z1N0cmluZygpIGNvbnN0OwogI2VuZGlmCiAKKyAgICBib29sIGlzSGFzaFRhYmxlRGVsZXRlZFZh
bHVlKCkgY29uc3QgeyByZXR1cm4gbV90b3BPcmlnaW4uaXNIYXNoVGFibGVEZWxldGVkVmFsdWUo
KTsgfQorCiBwcml2YXRlOgogICAgIFNlY3VyaXR5T3JpZ2luRGF0YSBtX3RvcE9yaWdpbjsKICAg
ICBVUkwgbV9zY29wZTsKIH07CiAKK2lubGluZSBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5
OjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5KFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVl
VHlwZSkKKyAgICA6IG1fdG9wT3JpZ2luKFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlKQorewor
fQorCiB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgogdm9pZCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9uS2V5OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKQEAgLTEwNiw4ICsxMTQs
OCBAQCBzdHJ1Y3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleUhhc2ggewogdGVtcGxhdGU8
PiBzdHJ1Y3QgSGFzaFRyYWl0czxXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5
PiA6IEdlbmVyaWNIYXNoVHJhaXRzPFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25L
ZXk+IHsKICAgICBzdGF0aWMgV2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSBl
bXB0eVZhbHVlKCkgeyByZXR1cm4gV2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktl
eTo6ZW1wdHlLZXkoKTsgfQogCi0gICAgc3RhdGljIHZvaWQgY29uc3RydWN0RGVsZXRlZFZhbHVl
KFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmIHNsb3QpIHsgc2xvdC5zZXRT
Y29wZShVUkwoSGFzaFRhYmxlRGVsZXRlZFZhbHVlKSk7IH0KLSAgICBzdGF0aWMgYm9vbCBpc0Rl
bGV0ZWRWYWx1ZShjb25zdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiBz
bG90KSB7IHJldHVybiBzbG90LnNjb3BlKCkuaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKTsgfQor
ICAgIHN0YXRpYyB2b2lkIGNvbnN0cnVjdERlbGV0ZWRWYWx1ZShXZWJDb3JlOjpTZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uS2V5JiBzbG90KSB7IG5ldyAoTm90TnVsbCwgJnNsb3QpIFdlYkNvcmU6
OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkoSGFzaFRhYmxlRGVsZXRlZFZhbHVlKTsgfQor
ICAgIHN0YXRpYyBib29sIGlzRGVsZXRlZFZhbHVlKGNvbnN0IFdlYkNvcmU6OlNlcnZpY2VXb3Jr
ZXJSZWdpc3RyYXRpb25LZXkmIHNsb3QpIHsgcmV0dXJuIHNsb3QuaXNIYXNoVGFibGVEZWxldGVk
VmFsdWUoKTsgfQogfTsKIAogdGVtcGxhdGU8PiBzdHJ1Y3QgRGVmYXVsdEhhc2g8V2ViQ29yZTo6
U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleT4gOiBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
S2V5SGFzaCB7IH07Cg==
</data>
<flag name="commit-queue"
          id="447041"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
      

    </bug>

</bugzilla>