<html>
    <head>
      <base href="https://bugs.webkit.org/" />
    </head>
    <body><table border="1" cellspacing="0" cellpadding="8">
        <tr>
          <th>Bug ID</th>
          <td><a class="bz_bug_link 
          bz_status_NEW "
   title="NEW - [FreeType] ASSERTION FAILED: !lookupForWriting(Extractor::extract(entry)).second in FontCache::getVerticalData()"
   href="https://bugs.webkit.org/show_bug.cgi?id=157132">157132</a>
          </td>
        </tr>

        <tr>
          <th>Summary</th>
          <td>[FreeType] ASSERTION FAILED: !lookupForWriting(Extractor::extract(entry)).second in FontCache::getVerticalData()
          </td>
        </tr>

        <tr>
          <th>Classification</th>
          <td>Unclassified
          </td>
        </tr>

        <tr>
          <th>Product</th>
          <td>WebKit
          </td>
        </tr>

        <tr>
          <th>Version</th>
          <td>WebKit Local Build
          </td>
        </tr>

        <tr>
          <th>Hardware</th>
          <td>Unspecified
          </td>
        </tr>

        <tr>
          <th>OS</th>
          <td>Unspecified
          </td>
        </tr>

        <tr>
          <th>Status</th>
          <td>NEW
          </td>
        </tr>

        <tr>
          <th>Keywords</th>
          <td>Gtk, LayoutTestFailure
          </td>
        </tr>

        <tr>
          <th>Severity</th>
          <td>Normal
          </td>
        </tr>

        <tr>
          <th>Priority</th>
          <td>P2
          </td>
        </tr>

        <tr>
          <th>Component</th>
          <td>Platform
          </td>
        </tr>

        <tr>
          <th>Assignee</th>
          <td>webkit-unassigned&#64;lists.webkit.org
          </td>
        </tr>

        <tr>
          <th>Reporter</th>
          <td>cgarcia&#64;igalia.com
          </td>
        </tr>

        <tr>
          <th>CC</th>
          <td>bugs-noreply&#64;webkitgtk.org, darin&#64;apple.com, mmaxfield&#64;apple.com, mrobinson&#64;webkit.org
          </td>
        </tr></table>
      <p>
        <div>
        <pre>I've noticed that some tests fail randomly in the GTK+ debug bot due to an assertion in HashMap when getting vertical data from the FontCache. I don't know exactly what's wrong, but looks alike a problem with the FontVerticalDataCache hash traits implementation. Looking at the code, I've realized that we could simplify everything by reusing the FontDataCache hash and traits, since we are actually using the FontPlatformData::hash() in the end in both cases. Also, I don't see why we need to get the vertical data from the FontPlatformData while it's actually cached by the font cache. We could just using the FontCache directly passing only the FontPlatformData. These changes seem to fix the crashes and make the code a lot simpler.

See the full bt:

STDERR: ASSERTION FAILED: !lookupForWriting(Extractor::extract(entry)).second
STDERR: ../../Source/WTF/wtf/HashTable.h(985) : WTF::HashTable&lt;Key, Value, Extractor, HashFunctions, Traits, KeyTraits&gt;::ValueType* WTF::HashTable&lt;Key, Value, Extractor, HashFunctions, Traits, KeyTraits&gt;::reinsert(WTF::HashTable&lt;Key, Value, Extractor, HashFunctions, Traits, KeyTraits&gt;::ValueType&amp;&amp;) [with Key = WTF::AtomicString; Value = WTF::KeyValuePair&lt;WTF::AtomicString, WTF::RefPtr&lt;WebCore::OpenTypeVerticalData&gt; &gt;; Extractor = WTF::KeyValuePairKeyExtractor&lt;WTF::KeyValuePair&lt;WTF::AtomicString, WTF::RefPtr&lt;WebCore::OpenTypeVerticalData&gt; &gt; &gt;; HashFunctions = WebCore::FontVerticalDataCacheKeyHash; Traits = WTF::HashMap&lt;WTF::AtomicString, WTF::RefPtr&lt;WebCore::OpenTypeVerticalData&gt;, WebCore::FontVerticalDataCacheKeyHash, WebCore::FontVerticalDataCacheKeyTraits&gt;::KeyValuePairTraits; KeyTraits = WebCore::FontVerticalDataCacheKeyTraits; WTF::HashTable&lt;Key, Value, Extractor, HashFunctions, Traits, KeyTraits&gt;::ValueTyp
STDERR: 1   0x7fbc12a27fcd /home/slave/webkitgtk/gtk-linux-64-debug/build/WebKitBuild/Debug/lib/libjavascriptcoregtk-4.0.so.18(WTFCrash+0x1e) [0x7fbc12a27fcd]
STDERR: 2   0x7fbc19e2b07f /home/slave/webkitgtk/gtk-linux-64-debug/build/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37(WTF::HashTable&lt;WTF::AtomicString, WTF::KeyValuePair&lt;WTF::AtomicString, WTF::RefPtr&lt;WebCore::OpenTypeVerticalData&gt; &gt;, WTF::KeyValuePairKeyExtractor&lt;WTF::KeyValuePair&lt;WTF::AtomicString, WTF::RefPtr&lt;WebCore::OpenTypeVerticalData&gt; &gt; &gt;, WebCore::FontVerticalDataCacheKeyHash, WTF::HashMap&lt;WTF::AtomicString, WTF::RefPtr&lt;WebCore::OpenTypeVerticalData&gt;, WebCore::FontVerticalDataCacheKeyHash, WebCore::FontVerticalDataCacheKeyTraits, WTF::HashTraits&lt;WTF::RefPtr&lt;WebCore::OpenTypeVerticalData&gt; &gt; &gt;::KeyValuePairTraits, WebCore::FontVerticalDataCacheKeyTraits&gt;::reinsert(WTF::KeyValuePair&lt;WTF::AtomicString, WTF::RefPtr&lt;WebCore::OpenTypeVerticalData&gt; &gt;&amp;&amp;)+0x89) [0x7fbc19e2b07f]
STDERR: 3   0x7fbc19e2a2b5 /home/slave/webkitgtk/gtk-linux-64-debug/build/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37(WTF::HashTable&lt;WTF::AtomicString, WTF::KeyValuePair&lt;WTF::AtomicString, WTF::RefPtr&lt;WebCore::OpenTypeVerticalData&gt; &gt;, WTF::KeyValuePairKeyExtractor&lt;WTF::KeyValuePair&lt;WTF::AtomicString, WTF::RefPtr&lt;WebCore::OpenTypeVerticalData&gt; &gt; &gt;, WebCore::FontVerticalDataCacheKeyHash, WTF::HashMap&lt;WTF::AtomicString, WTF::RefPtr&lt;WebCore::OpenTypeVerticalData&gt;, WebCore::FontVerticalDataCacheKeyHash, WebCore::FontVerticalDataCacheKeyTraits, WTF::HashTraits&lt;WTF::RefPtr&lt;WebCore::OpenTypeVerticalData&gt; &gt; &gt;::KeyValuePairTraits, WebCore::FontVerticalDataCacheKeyTraits&gt;::rehash(unsigned int, WTF::KeyValuePair&lt;WTF::AtomicString, WTF::RefPtr&lt;WebCore::OpenTypeVerticalData&gt; &gt;*)+0xf1) [0x7fbc19e2a2b5]
STDERR: 4   0x7fbc19e28cad /home/slave/webkitgtk/gtk-linux-64-debug/build/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37(WTF::HashTable&lt;WTF::AtomicString, WTF::KeyValuePair&lt;WTF::AtomicString, WTF::RefPtr&lt;WebCore::OpenTypeVerticalData&gt; &gt;, WTF::KeyValuePairKeyExtractor&lt;WTF::KeyValuePair&lt;WTF::AtomicString, WTF::RefPtr&lt;WebCore::OpenTypeVerticalData&gt; &gt; &gt;, WebCore::FontVerticalDataCacheKeyHash, WTF::HashMap&lt;WTF::AtomicString, WTF::RefPtr&lt;WebCore::OpenTypeVerticalData&gt;, WebCore::FontVerticalDataCacheKeyHash, WebCore::FontVerticalDataCacheKeyTraits, WTF::HashTraits&lt;WTF::RefPtr&lt;WebCore::OpenTypeVerticalData&gt; &gt; &gt;::KeyValuePairTraits, WebCore::FontVerticalDataCacheKeyTraits&gt;::expand(WTF::KeyValuePair&lt;WTF::AtomicString, WTF::RefPtr&lt;WebCore::OpenTypeVerticalData&gt; &gt;*)+0x61) [0x7fbc19e28cad]
STDERR: 5   0x7fbc19e27268 /home/slave/webkitgtk/gtk-linux-64-debug/build/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37(WTF::HashTableAddResult&lt;WTF::HashTableIterator&lt;WTF::AtomicString, WTF::KeyValuePair&lt;WTF::AtomicString, WTF::RefPtr&lt;WebCore::OpenTypeVerticalData&gt; &gt;, WTF::KeyValuePairKeyExtractor&lt;WTF::KeyValuePair&lt;WTF::AtomicString, WTF::RefPtr&lt;WebCore::OpenTypeVerticalData&gt; &gt; &gt;, WebCore::FontVerticalDataCacheKeyHash, WTF::HashMap&lt;WTF::AtomicString, WTF::RefPtr&lt;WebCore::OpenTypeVerticalData&gt;, WebCore::FontVerticalDataCacheKeyHash, WebCore::FontVerticalDataCacheKeyTraits, WTF::HashTraits&lt;WTF::RefPtr&lt;WebCore::OpenTypeVerticalData&gt; &gt; &gt;::KeyValuePairTraits, WebCore::FontVerticalDataCacheKeyTraits&gt; &gt; WTF::HashTable&lt;WTF::AtomicString, WTF::KeyValuePair&lt;WTF::AtomicString, WTF::RefPtr&lt;WebCore::OpenTypeVerticalData&gt; &gt;, WTF::KeyValuePairKeyExtractor&lt;WTF::KeyValuePair&lt;WTF::AtomicString, WTF::RefPtr&lt;WebCor
STDERR: 6   0x7fbc19e24d26 /home/slave/webkitgtk/gtk-linux-64-debug/build/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37(WTF::HashTableAddResult&lt;WTF::HashTableIterator&lt;WTF::AtomicString, WTF::KeyValuePair&lt;WTF::AtomicString, WTF::RefPtr&lt;WebCore::OpenTypeVerticalData&gt; &gt;, WTF::KeyValuePairKeyExtractor&lt;WTF::KeyValuePair&lt;WTF::AtomicString, WTF::RefPtr&lt;WebCore::OpenTypeVerticalData&gt; &gt; &gt;, WebCore::FontVerticalDataCacheKeyHash, WTF::HashMap&lt;WTF::AtomicString, WTF::RefPtr&lt;WebCore::OpenTypeVerticalData&gt;, WebCore::FontVerticalDataCacheKeyHash, WebCore::FontVerticalDataCacheKeyTraits, WTF::HashTraits&lt;WTF::RefPtr&lt;WebCore::OpenTypeVerticalData&gt; &gt; &gt;::KeyValuePairTraits, WebCore::FontVerticalDataCacheKeyTraits&gt; &gt; WTF::HashMap&lt;WTF::AtomicString, WTF::RefPtr&lt;WebCore::OpenTypeVerticalData&gt;, WebCore::FontVerticalDataCacheKeyHash, WebCore::FontVerticalDataCacheKeyTraits, WTF::HashTraits&lt;WTF::RefPtr&lt;WebCore::OpenTypeVerticalDa
STDERR: 7   0x7fbc19e22836 /home/slave/webkitgtk/gtk-linux-64-debug/build/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37(WTF::HashTableAddResult&lt;WTF::HashTableIterator&lt;WTF::AtomicString, WTF::KeyValuePair&lt;WTF::AtomicString, WTF::RefPtr&lt;WebCore::OpenTypeVerticalData&gt; &gt;, WTF::KeyValuePairKeyExtractor&lt;WTF::KeyValuePair&lt;WTF::AtomicString, WTF::RefPtr&lt;WebCore::OpenTypeVerticalData&gt; &gt; &gt;, WebCore::FontVerticalDataCacheKeyHash, WTF::HashMap&lt;WTF::AtomicString, WTF::RefPtr&lt;WebCore::OpenTypeVerticalData&gt;, WebCore::FontVerticalDataCacheKeyHash, WebCore::FontVerticalDataCacheKeyTraits, WTF::HashTraits&lt;WTF::RefPtr&lt;WebCore::OpenTypeVerticalData&gt; &gt; &gt;::KeyValuePairTraits, WebCore::FontVerticalDataCacheKeyTraits&gt; &gt; WTF::HashMap&lt;WTF::AtomicString, WTF::RefPtr&lt;WebCore::OpenTypeVerticalData&gt;, WebCore::FontVerticalDataCacheKeyHash, WebCore::FontVerticalDataCacheKeyTraits, WTF::HashTraits&lt;WTF::RefPtr&lt;WebCore::OpenTypeVerticalDa
STDERR: 8   0x7fbc19e202bf /home/slave/webkitgtk/gtk-linux-64-debug/build/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37(WTF::HashTableAddResult&lt;WTF::HashTableIterator&lt;WTF::AtomicString, WTF::KeyValuePair&lt;WTF::AtomicString, WTF::RefPtr&lt;WebCore::OpenTypeVerticalData&gt; &gt;, WTF::KeyValuePairKeyExtractor&lt;WTF::KeyValuePair&lt;WTF::AtomicString, WTF::RefPtr&lt;WebCore::OpenTypeVerticalData&gt; &gt; &gt;, WebCore::FontVerticalDataCacheKeyHash, WTF::HashMap&lt;WTF::AtomicString, WTF::RefPtr&lt;WebCore::OpenTypeVerticalData&gt;, WebCore::FontVerticalDataCacheKeyHash, WebCore::FontVerticalDataCacheKeyTraits, WTF::HashTraits&lt;WTF::RefPtr&lt;WebCore::OpenTypeVerticalData&gt; &gt; &gt;::KeyValuePairTraits, WebCore::FontVerticalDataCacheKeyTraits&gt; &gt; WTF::HashMap&lt;WTF::AtomicString, WTF::RefPtr&lt;WebCore::OpenTypeVerticalData&gt;, WebCore::FontVerticalDataCacheKeyHash, WebCore::FontVerticalDataCacheKeyTraits, WTF::HashTraits&lt;WTF::RefPtr&lt;WebCore::OpenTypeVerticalDa
STDERR: 9   0x7fbc19e1d566 /home/slave/webkitgtk/gtk-linux-64-debug/build/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37(WebCore::FontCache::getVerticalData(WTF::AtomicString const&amp;, WebCore::FontPlatformData const&amp;)+0x144) [0x7fbc19e1d566]
STDERR: 10  0x7fbc1a7446a5 /home/slave/webkitgtk/gtk-linux-64-debug/build/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37(WebCore::FontPlatformData::verticalData() const+0x95) [0x7fbc1a7446a5]
STDERR: 11  0x7fbc19e0f0da /home/slave/webkitgtk/gtk-linux-64-debug/build/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37(WebCore::Font::Font(WebCore::FontPlatformData const&amp;, bool, bool, bool)+0x272) [0x7fbc19e0f0da]
STDERR: 12  0x7fbc1945cbf1 /home/slave/webkitgtk/gtk-linux-64-debug/build/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37(WebCore::Font::create(WebCore::FontPlatformData const&amp;, bool, bool, bool)+0x4c) [0x7fbc1945cbf1]
STDERR: 13  0x7fbc19e1d7e3 /home/slave/webkitgtk/gtk-linux-64-debug/build/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37(WebCore::FontCache::fontForPlatformData(WebCore::FontPlatformData const&amp;)+0x61) [0x7fbc19e1d7e3]
STDERR: 14  0x7fbc19e1d73b /home/slave/webkitgtk/gtk-linux-64-debug/build/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37(WebCore::FontCache::fontForFamily(WebCore::FontDescription const&amp;, WTF::AtomicString const&amp;, WebCore::FontFeatureSettings const*, WebCore::FontVariantSettings const*, bool)+0xad) [0x7fbc19e1d73b]
STDERR: 15  0x7fbc1947643b /home/slave/webkitgtk/gtk-linux-64-debug/build/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37(WebCore::CSSFontSelector::fontRangesForFamily(WebCore::FontDescription const&amp;, WTF::AtomicString const&amp;)+0x10f) [0x7fbc1947643b]
STDERR: 16  0x7fbc19e3f4dc /home/slave/webkitgtk/gtk-linux-64-debug/build/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37(+0x61f34dc) [0x7fbc19e3f4dc]
STDERR: 17  0x7fbc19e3f892 /home/slave/webkitgtk/gtk-linux-64-debug/build/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37(WebCore::FontCascadeFonts::realizeFallbackRangesAt(WebCore::FontCascadeDescription const&amp;, unsigned int)+0x18e) [0x7fbc19e3f892]
STDERR: 18  0x7fbc19997c9a /home/slave/webkitgtk/gtk-linux-64-debug/build/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37(WebCore::FontCascadeFonts::primaryFont(WebCore::FontCascadeDescription const&amp;)+0x68) [0x7fbc19997c9a]
STDERR: 19  0x7fbc19997d88 /home/slave/webkitgtk/gtk-linux-64-debug/build/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37(WebCore::FontCascade::primaryFont() const+0x64) [0x7fbc19997d88]
STDERR: 20  0x7fbc19997d1a /home/slave/webkitgtk/gtk-linux-64-debug/build/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37(WebCore::FontCascade::fontMetrics() const+0x18) [0x7fbc19997d1a]
STDERR: 21  0x7fbc1a245f80 /home/slave/webkitgtk/gtk-linux-64-debug/build/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37(WebCore::RenderStyle::fontMetrics() const+0x28) [0x7fbc1a245f80]
STDERR: 22  0x7fbc1a246276 /home/slave/webkitgtk/gtk-linux-64-debug/build/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37(WebCore::RenderStyle::computedLineHeight() const+0x46) [0x7fbc1a246276]
STDERR: 23  0x7fbc19fb42d6 /home/slave/webkitgtk/gtk-linux-64-debug/build/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37(WebCore::RenderBlock::lineHeight(bool, WebCore::LineDirectionMode, WebCore::LinePositionMode) const+0x144) [0x7fbc19fb42d6]
STDERR: 24  0x7fbc19fb4bc8 /home/slave/webkitgtk/gtk-linux-64-debug/build/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37(WebCore::RenderBlock::minLineHeightForReplacedRenderer(bool, WebCore::LayoutUnit) const+0xe8) [0x7fbc19fb4bc8]
STDERR: 25  0x7fbc1a2060c1 /home/slave/webkitgtk/gtk-linux-64-debug/build/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37(WebCore::LineWidth::updateAvailableWidth(WebCore::LayoutUnit)+0x43) [0x7fbc1a2060c1]
STDERR: 26  0x7fbc1a205fca /home/slave/webkitgtk/gtk-linux-64-debug/build/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37(WebCore::LineWidth::LineWidth(WebCore::RenderBlockFlow&amp;, bool, WebCore::IndentTextOrNot)+0xd2) [0x7fbc1a205fca]
STDERR: 27  0x7fbc1a1f9bc4 /home/slave/webkitgtk/gtk-linux-64-debug/build/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37(WebCore::LineBreaker::nextLineBreak(WebCore::BidiResolverWithIsolate&lt;WebCore::InlineIterator, WebCore::BidiRun, WebCore::BidiIsolatedRun&gt;&amp;, WebCore::LineInfo&amp;, WebCore::LineLayoutState&amp;, WebCore::RenderTextInfo&amp;, WebCore::FloatingObject*, unsigned int, WTF::Vector&lt;WebCore::WordMeasurement, 64ul, WTF::CrashOnOverflow, 16ul&gt;&amp;)+0x12c) [0x7fbc1a1f9bc4]
STDERR: 28  0x7fbc19ff6d31 /home/slave/webkitgtk/gtk-linux-64-debug/build/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37(WebCore::RenderBlockFlow::layoutRunsAndFloatsInRange(WebCore::LineLayoutState&amp;, WebCore::BidiResolverWithIsolate&lt;WebCore::InlineIterator, WebCore::BidiRun, WebCore::BidiIsolatedRun&gt;&amp;, WebCore::InlineIterator const&amp;, WebCore::BidiStatus const&amp;, unsigned int)+0x369) [0x7fbc19ff6d31]
STDERR: 29  0x7fbc19ff6943 /home/slave/webkitgtk/gtk-linux-64-debug/build/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37(WebCore::RenderBlockFlow::layoutRunsAndFloats(WebCore::LineLayoutState&amp;, bool)+0x41f) [0x7fbc19ff6943]
STDERR: 30  0x7fbc19ff90ff /home/slave/webkitgtk/gtk-linux-64-debug/build/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37(WebCore::RenderBlockFlow::layoutLineBoxes(bool, WebCore::LayoutUnit&amp;, WebCore::LayoutUnit&amp;)+0x697) [0x7fbc19ff90ff]
STDERR: 31  0x7fbc19fd7395 /home/slave/webkitgtk/gtk-linux-64-debug/build/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37(WebCore::RenderBlockFlow::layoutInlineChildren(bool, WebCore::LayoutUnit&amp;, WebCore::LayoutUnit&amp;)+0xb7) [0x7fbc19fd7395]
STDERR: LEAK: 1 WebProcessPool
STDERR: LEAK: 1 WebPageProxy</pre>
        </div>
      </p>
      <hr>
      <span>You are receiving this mail because:</span>
      
      <ul>
          <li>You are the assignee for the bug.</li>
      </ul>
    </body>
</html>