<?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>227019</bug_id>
          
          <creation_ts>2021-06-15 02:41:55 -0700</creation_ts>
          <short_desc>PNGImageDecoder needs clang Thread Safety annotations</short_desc>
          <delta_ts>2021-06-22 02:42:18 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Media</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>NEW</bug_status>
          <resolution></resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alicia Boya García">aboya</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1769730</commentid>
    <comment_count>0</comment_count>
    <who name="Alicia Boya García">aboya</who>
    <bug_when>2021-06-15 02:41:55 -0700</bug_when>
    <thetext>+  cmake --build /app/webkit/WebKitBuild/Release --config Release -- 
[5/87] Building CXX object Source/WebCore/CMakeFiles/WebCore.dir/platform/image-decoders/ScalableImageDecoder.cpp.o
In file included from ../../Source/WebCore/platform/image-decoders/ScalableImageDecoder.cpp:31:
../../Source/WebCore/platform/image-decoders/png/PNGImageDecoder.h:78:17: warning: reading variable &apos;m_frameBufferCache&apos; requires holding mutex &apos;m_lock&apos; [-Wthread-safety-analysis]
            if (m_frameBufferCache.isEmpty())
                ^
../../Source/WebCore/platform/image-decoders/png/PNGImageDecoder.h:81:35: warning: reading variable &apos;m_frameBufferCache&apos; requires holding mutex &apos;m_lock&apos; [-Wthread-safety-analysis]
            for (auto&amp; imageFrame : m_frameBufferCache) {
                                  ^
../../Source/WebCore/platform/image-decoders/png/PNGImageDecoder.h:81:35: warning: reading variable &apos;m_frameBufferCache&apos; requires holding mutex &apos;m_lock&apos; [-Wthread-safety-analysis]
../../Source/WebCore/platform/image-decoders/png/PNGImageDecoder.h:91:29: warning: reading variable &apos;m_frameBufferCache&apos; requires holding mutex &apos;m_lock&apos; [-Wthread-safety-analysis]
            return (index &lt; m_frameBufferCache.size() &amp;&amp; m_frameBufferCache[index].isComplete());
                            ^
../../Source/WebCore/platform/image-decoders/png/PNGImageDecoder.h:91:58: warning: reading variable &apos;m_frameBufferCache&apos; requires holding mutex &apos;m_lock&apos; [-Wthread-safety-analysis]
            return (index &lt; m_frameBufferCache.size() &amp;&amp; m_frameBufferCache[index].isComplete());
                                                         ^
5 warnings generated.
[6/87] Building CXX object Source/WebCore/CMakeFiles/WebCore.dir/platform/image-decoders/ico/ICOImageDecoder.cpp.o
In file included from ../../Source/WebCore/platform/image-decoders/ico/ICOImageDecoder.cpp:37:
../../Source/WebCore/platform/image-decoders/png/PNGImageDecoder.h:78:17: warning: reading variable &apos;m_frameBufferCache&apos; requires holding mutex &apos;m_lock&apos; [-Wthread-safety-analysis]
            if (m_frameBufferCache.isEmpty())
                ^
../../Source/WebCore/platform/image-decoders/png/PNGImageDecoder.h:81:35: warning: reading variable &apos;m_frameBufferCache&apos; requires holding mutex &apos;m_lock&apos; [-Wthread-safety-analysis]
            for (auto&amp; imageFrame : m_frameBufferCache) {
                                  ^
../../Source/WebCore/platform/image-decoders/png/PNGImageDecoder.h:81:35: warning: reading variable &apos;m_frameBufferCache&apos; requires holding mutex &apos;m_lock&apos; [-Wthread-safety-analysis]
../../Source/WebCore/platform/image-decoders/png/PNGImageDecoder.h:91:29: warning: reading variable &apos;m_frameBufferCache&apos; requires holding mutex &apos;m_lock&apos; [-Wthread-safety-analysis]
            return (index &lt; m_frameBufferCache.size() &amp;&amp; m_frameBufferCache[index].isComplete());
                            ^
../../Source/WebCore/platform/image-decoders/png/PNGImageDecoder.h:91:58: warning: reading variable &apos;m_frameBufferCache&apos; requires holding mutex &apos;m_lock&apos; [-Wthread-safety-analysis]
            return (index &lt; m_frameBufferCache.size() &amp;&amp; m_frameBufferCache[index].isComplete());
                                                         ^
../../Source/WebCore/platform/image-decoders/ico/ICOImageDecoder.cpp:90:12: warning: reading variable &apos;m_frameBufferCache&apos; requires holding mutex &apos;m_lock&apos; [-Wthread-safety-analysis]
    return m_frameBufferCache.size();
           ^
../../Source/WebCore/platform/image-decoders/ico/ICOImageDecoder.cpp:99:21: warning: reading variable &apos;m_frameBufferCache&apos; requires holding mutex &apos;m_lock&apos; [-Wthread-safety-analysis]
    auto* buffer = &amp;m_frameBufferCache[index];
                    ^
../../Source/WebCore/platform/image-decoders/ico/ICOImageDecoder.cpp:163:15: warning: reading variable &apos;m_frameBufferCache&apos; requires holding mutex &apos;m_lock&apos; [-Wthread-safety-analysis]
    else if ((m_frameBufferCache.size() &gt; index) &amp;&amp; m_frameBufferCache[index].isComplete()) {
              ^
../../Source/WebCore/platform/image-decoders/ico/ICOImageDecoder.cpp:163:53: warning: reading variable &apos;m_frameBufferCache&apos; requires holding mutex &apos;m_lock&apos; [-Wthread-safety-analysis]
    else if ((m_frameBufferCache.size() &gt; index) &amp;&amp; m_frameBufferCache[index].isComplete()) {
                                                    ^
../../Source/WebCore/platform/image-decoders/ico/ICOImageDecoder.cpp:168:9: warning: reading variable &apos;m_frameBufferCache&apos; requires holding mutex &apos;m_lock&apos; [-Wthread-safety-analysis]
    if (m_frameBufferCache.isEmpty())
        ^
../../Source/WebCore/platform/image-decoders/ico/ICOImageDecoder.cpp:169:9: warning: reading variable &apos;m_frameBufferCache&apos; requires holding mutex &apos;m_lock&apos; [-Wthread-safety-analysis]
        m_frameBufferCache.grow(m_dirEntries.size());
        ^
../../Source/WebCore/platform/image-decoders/ico/ICOImageDecoder.cpp:200:45: warning: reading variable &apos;m_frameBufferCache&apos; requires holding mutex &apos;m_lock&apos; [-Wthread-safety-analysis]
            m_bmpReaders[index]-&gt;setBuffer(&amp;m_frameBufferCache[index]);
                                            ^
../../Source/WebCore/platform/image-decoders/ico/ICOImageDecoder.cpp:216:5: warning: reading variable &apos;m_frameBufferCache&apos; requires holding mutex &apos;m_lock&apos; [-Wthread-safety-analysis]
    m_frameBufferCache[index] = *m_pngDecoders[index]-&gt;frameBufferAtIndex(0);
    ^
13 warnings generated.
[7/87] Building CXX object Source/WebCore/CMakeFiles/WebCore.dir/platform/image-decoders/png/PNGImageDecoder.cpp.o
In file included from ../../Source/WebCore/platform/image-decoders/png/PNGImageDecoder.cpp:42:
../../Source/WebCore/platform/image-decoders/png/PNGImageDecoder.h:78:17: warning: reading variable &apos;m_frameBufferCache&apos; requires holding mutex &apos;m_lock&apos; [-Wthread-safety-analysis]
            if (m_frameBufferCache.isEmpty())
                ^
../../Source/WebCore/platform/image-decoders/png/PNGImageDecoder.h:81:35: warning: reading variable &apos;m_frameBufferCache&apos; requires holding mutex &apos;m_lock&apos; [-Wthread-safety-analysis]
            for (auto&amp; imageFrame : m_frameBufferCache) {
                                  ^
../../Source/WebCore/platform/image-decoders/png/PNGImageDecoder.h:81:35: warning: reading variable &apos;m_frameBufferCache&apos; requires holding mutex &apos;m_lock&apos; [-Wthread-safety-analysis]
../../Source/WebCore/platform/image-decoders/png/PNGImageDecoder.h:91:29: warning: reading variable &apos;m_frameBufferCache&apos; requires holding mutex &apos;m_lock&apos; [-Wthread-safety-analysis]
            return (index &lt; m_frameBufferCache.size() &amp;&amp; m_frameBufferCache[index].isComplete());
                            ^
../../Source/WebCore/platform/image-decoders/png/PNGImageDecoder.h:91:58: warning: reading variable &apos;m_frameBufferCache&apos; requires holding mutex &apos;m_lock&apos; [-Wthread-safety-analysis]
            return (index &lt; m_frameBufferCache.size() &amp;&amp; m_frameBufferCache[index].isComplete());
                                                         ^
../../Source/WebCore/platform/image-decoders/png/PNGImageDecoder.cpp:264:9: warning: reading variable &apos;m_frameBufferCache&apos; requires holding mutex &apos;m_lock&apos; [-Wthread-safety-analysis]
    if (m_frameBufferCache.isEmpty())
        ^
../../Source/WebCore/platform/image-decoders/png/PNGImageDecoder.cpp:265:9: warning: reading variable &apos;m_frameBufferCache&apos; requires holding mutex &apos;m_lock&apos; [-Wthread-safety-analysis]
        m_frameBufferCache.grow(1);
        ^
../../Source/WebCore/platform/image-decoders/png/PNGImageDecoder.cpp:267:19: warning: reading variable &apos;m_frameBufferCache&apos; requires holding mutex &apos;m_lock&apos; [-Wthread-safety-analysis]
    auto&amp; frame = m_frameBufferCache[index];
                  ^
../../Source/WebCore/platform/image-decoders/png/PNGImageDecoder.cpp:450:9: warning: reading variable &apos;m_frameBufferCache&apos; requires holding mutex &apos;m_lock&apos; [-Wthread-safety-analysis]
    if (m_frameBufferCache.isEmpty())
        ^
../../Source/WebCore/platform/image-decoders/png/PNGImageDecoder.cpp:458:20: warning: reading variable &apos;m_frameBufferCache&apos; requires holding mutex &apos;m_lock&apos; [-Wthread-safety-analysis]
    auto&amp; buffer = m_frameBufferCache[m_currentFrame];
                   ^
../../Source/WebCore/platform/image-decoders/png/PNGImageDecoder.cpp:577:10: warning: reading variable &apos;m_frameBufferCache&apos; requires holding mutex &apos;m_lock&apos; [-Wthread-safety-analysis]
    if (!m_frameBufferCache.isEmpty())
         ^
../../Source/WebCore/platform/image-decoders/png/PNGImageDecoder.cpp:578:9: warning: reading variable &apos;m_frameBufferCache&apos; requires holding mutex &apos;m_lock&apos; [-Wthread-safety-analysis]
        m_frameBufferCache.first().setDecodingStatus(DecodingStatus::Complete);
        ^
../../Source/WebCore/platform/image-decoders/png/PNGImageDecoder.cpp:620:13: warning: reading variable &apos;m_frameBufferCache&apos; requires holding mutex &apos;m_lock&apos; [-Wthread-safety-analysis]
        if (m_frameBufferCache.size() == m_frameCount)
            ^
../../Source/WebCore/platform/image-decoders/png/PNGImageDecoder.cpp:623:9: warning: reading variable &apos;m_frameBufferCache&apos; requires holding mutex &apos;m_lock&apos; [-Wthread-safety-analysis]
        m_frameBufferCache.resize(m_frameCount);
        ^
../../Source/WebCore/platform/image-decoders/png/PNGImageDecoder.cpp:665:13: warning: reading variable &apos;m_frameBufferCache&apos; requires holding mutex &apos;m_lock&apos; [-Wthread-safety-analysis]
        if (m_frameBufferCache.isEmpty())
            ^
../../Source/WebCore/platform/image-decoders/png/PNGImageDecoder.cpp:666:13: warning: reading variable &apos;m_frameBufferCache&apos; requires holding mutex &apos;m_lock&apos; [-Wthread-safety-analysis]
            m_frameBufferCache.grow(1);
            ^
../../Source/WebCore/platform/image-decoders/png/PNGImageDecoder.cpp:668:30: warning: reading variable &apos;m_frameBufferCache&apos; requires holding mutex &apos;m_lock&apos; [-Wthread-safety-analysis]
        if (m_currentFrame &lt; m_frameBufferCache.size()) {
                             ^
../../Source/WebCore/platform/image-decoders/png/PNGImageDecoder.cpp:669:28: warning: reading variable &apos;m_frameBufferCache&apos; requires holding mutex &apos;m_lock&apos; [-Wthread-safety-analysis]
            auto&amp; buffer = m_frameBufferCache[m_currentFrame];
                           ^
../../Source/WebCore/platform/image-decoders/png/PNGImageDecoder.cpp:756:9: warning: reading variable &apos;m_frameBufferCache&apos; requires holding mutex &apos;m_lock&apos; [-Wthread-safety-analysis]
    if (m_frameBufferCache.isEmpty())
        ^
../../Source/WebCore/platform/image-decoders/png/PNGImageDecoder.cpp:760:51: warning: reading variable &apos;m_frameBufferCache&apos; requires holding mutex &apos;m_lock&apos; [-Wthread-safety-analysis]
    clearBeforeFrame = std::min(clearBeforeFrame, m_frameBufferCache.size() - 1);
                                                  ^
../../Source/WebCore/platform/image-decoders/png/PNGImageDecoder.cpp:761:59: warning: reading variable &apos;m_frameBufferCache&apos; requires holding mutex &apos;m_lock&apos; [-Wthread-safety-analysis]
    const Vector&lt;ScalableImageDecoderFrame&gt;::iterator end(m_frameBufferCache.begin() + clearBeforeFrame);
                                                          ^
../../Source/WebCore/platform/image-decoders/png/PNGImageDecoder.cpp:764:18: warning: reading variable &apos;m_frameBufferCache&apos; requires holding mutex &apos;m_lock&apos; [-Wthread-safety-analysis]
    for (; (i != m_frameBufferCache.begin()) &amp;&amp; (i-&gt;isInvalid() || (i-&gt;disposalMethod() == ScalableImageDecoderFrame::DisposalMethod::RestoreToPrevious)); --i) {
                 ^
../../Source/WebCore/platform/image-decoders/png/PNGImageDecoder.cpp:770:56: warning: reading variable &apos;m_frameBufferCache&apos; requires holding mutex &apos;m_lock&apos; [-Wthread-safety-analysis]
    for (Vector&lt;ScalableImageDecoderFrame&gt;::iterator j(m_frameBufferCache.begin()); j != i; ++j) {
                                                       ^
../../Source/WebCore/platform/image-decoders/png/PNGImageDecoder.cpp:782:20: warning: reading variable &apos;m_frameBufferCache&apos; requires holding mutex &apos;m_lock&apos; [-Wthread-safety-analysis]
    auto&amp; buffer = m_frameBufferCache[frameIndex];
                   ^
../../Source/WebCore/platform/image-decoders/png/PNGImageDecoder.cpp:792:31: warning: reading variable &apos;m_frameBufferCache&apos; requires holding mutex &apos;m_lock&apos; [-Wthread-safety-analysis]
    const auto* prevBuffer = &amp;m_frameBufferCache[--frameIndex];
                              ^
../../Source/WebCore/platform/image-decoders/png/PNGImageDecoder.cpp:795:23: warning: reading variable &apos;m_frameBufferCache&apos; requires holding mutex &apos;m_lock&apos; [-Wthread-safety-analysis]
        prevBuffer = &amp;m_frameBufferCache[--frameIndex];
                      ^
../../Source/WebCore/platform/image-decoders/png/PNGImageDecoder.cpp:842:20: warning: reading variable &apos;m_frameBufferCache&apos; requires holding mutex &apos;m_lock&apos; [-Wthread-safety-analysis]
    auto&amp; buffer = m_frameBufferCache[m_currentFrame];
                   ^
../../Source/WebCore/platform/image-decoders/png/PNGImageDecoder.cpp:880:43: warning: reading variable &apos;m_frameBufferCache&apos; requires holding mutex &apos;m_lock&apos; [-Wthread-safety-analysis]
                const auto* prevBuffer = &amp;m_frameBufferCache[--frameIndex];
                                          ^
../../Source/WebCore/platform/image-decoders/png/PNGImageDecoder.cpp:882:35: warning: reading variable &apos;m_frameBufferCache&apos; requires holding mutex &apos;m_lock&apos; [-Wthread-safety-analysis]
                    prevBuffer = &amp;m_frameBufferCache[--frameIndex];
                                  ^
29 warnings generated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1771632</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-06-22 02:42:18 -0700</bug_when>
    <thetext>&lt;rdar://problem/79604902&gt;</thetext>
  </long_desc>
      
      

    </bug>

</bugzilla>