<?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>222712</bug_id>
          
          <creation_ts>2021-03-03 23:30:13 -0800</creation_ts>
          <short_desc>REGRESSION (r272300): [iOS] ASSERTION FAILED: Unsafe to ref/deref from different threads under WebViewLayerFlushScheduler::layerFlushCallback</short_desc>
          <delta_ts>2021-03-16 11:39:27 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>Other</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryan Haddad">ryanhaddad</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>ap</cc>
    
    <cc>koivisto</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bot-watchers-bugzilla</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1735692</commentid>
    <comment_count>0</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2021-03-03 23:30:13 -0800</bug_when>
    <thetext>The following test is consistently asserting on iOS debug bots:

    TestWebKitAPI.QuickLook.LegacyQuickLookContent
        2021-03-03 22:29:42.271 TestWebKitAPI[38997:42783719] nil host used in call to allowsSpecificHTTPSCertificateForHost
        2021-03-03 22:29:42.271 TestWebKitAPI[38997:42783719] nil host used in call to allowsAnyHTTPSCertificateForHost:
        ASSERTION FAILED: Unsafe to ref/deref from different threads
        m_isOwnedByMainThread == isMainThread()
        /Volumes/Data/worker/ios-simulator-14-debug/build/WebKitBuild/Debug-iphonesimulator/usr/local/include/wtf/RefCounted.h(114) : void WTF::RefCountedBase::applyRefDerefThreadingCheck() const
        1   0x109db4b09 WTFCrash
        2   0x13dee9321 WTF::RefCountedBase::applyRefDerefThreadingCheck() const
        3   0x13dee90fc WTF::RefCountedBase::derefBase() const
        4   0x13e0a0c7f WTF::RefCounted&lt;LayerFlushController, std::__1::default_delete&lt;LayerFlushController&gt; &gt;::deref() const
        5   0x13e0a5fe1 WTF::DefaultRefDerefTraits&lt;LayerFlushController&gt;::derefIfNotNull(LayerFlushController*)
        6   0x13e0ae819 WTF::RefPtr&lt;LayerFlushController, WTF::RawPtrTraits&lt;LayerFlushController&gt;, WTF::DefaultRefDerefTraits&lt;LayerFlushController&gt; &gt;::~RefPtr()
        7   0x13e0ae685 WTF::RefPtr&lt;LayerFlushController, WTF::RawPtrTraits&lt;LayerFlushController&gt;, WTF::DefaultRefDerefTraits&lt;LayerFlushController&gt; &gt;::~RefPtr()
        8   0x13e1639aa WebViewLayerFlushScheduler::layerFlushCallback()
        9   0x13e164b88 WebViewLayerFlushScheduler::WebViewLayerFlushScheduler(LayerFlushController*)::$_0::operator()() const
        10  0x13e164b3e WTF::Detail::CallableWrapper&lt;WebViewLayerFlushScheduler::WebViewLayerFlushScheduler(LayerFlushController*)::$_0, void&gt;::call()
        11  0x1212f44e2 WTF::Function&lt;void ()&gt;::operator()() const
        12  0x1251e6840 WebCore::RunLoopObserver::runLoopObserverFired()
        13  0x1251e67a0 WebCore::RunLoopObserver::runLoopObserverFired(__CFRunLoopObserver*, unsigned long, void*)
        14  0x13c6621e8 __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__
        15  0x13c65ca67 __CFRunLoopDoObservers
        16  0x13c65c742 CFRunLoopRunSpecific
        17  0x1090147b9 -[NSRunLoop(NSRunLoop) runMode:beforeDate:]
        18  0x10470fe5e TestWebKitAPI::Util::run(bool*)
        19  0x1044b6dd6 QuickLook_LegacyQuickLookContent_Test::TestBody()
        20  0x1048afe54 void testing::internal::HandleSehExceptionsInMethodIfSupported&lt;testing::Test, void&gt;(testing::Test*, void (testing::Test::*)(), char const*)
        21  0x10488cebb void testing::internal::HandleExceptionsInMethodIfSupported&lt;testing::Test, void&gt;(testing::Test*, void (testing::Test::*)(), char const*)
        22  0x10488cdf6 testing::Test::Run()
        23  0x10488dc2a testing::TestInfo::Run()
        24  0x10488ea54 testing::TestCase::Run()
        25  0x1048998c8 testing::internal::UnitTestImpl::RunAllTests()
        26  0x1048b4524 bool testing::internal::HandleSehExceptionsInMethodIfSupported&lt;testing::internal::UnitTestImpl, bool&gt;(testing::internal::UnitTestImpl*, bool (testing::internal::UnitTestImpl::*)(), char const*)
        27  0x1048993db bool testing::internal::HandleExceptionsInMethodIfSupported&lt;testing::internal::UnitTestImpl, bool&gt;(testing::internal::UnitTestImpl*, bool (testing::internal::UnitTestImpl::*)(), char const*)
        28  0x1048992ad testing::UnitTest::Run()
        29  0x1046b9e51 RUN_ALL_TESTS()
        30  0x1046b9de2 TestWebKitAPI::TestsController::run(int, char**)
        31  0x10485fd55 main
        Child process terminated with signal 11: Segmentation fault


https://results.webkit.org/?suite=api-tests&amp;test=TestWebKitAPI.QuickLook.LegacyQuickLookContent</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1735693</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-03-03 23:30:23 -0800</bug_when>
    <thetext>&lt;rdar://problem/75022845&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1735694</commentid>
    <comment_count>2</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2021-03-03 23:32:19 -0800</bug_when>
    <thetext>The two changes between the last passing and first asserting runs are
https://trac.webkit.org/changeset/272300/webkit
https://trac.webkit.org/changeset/272299/webkit

I&apos;m guessing it is related to https://trac.webkit.org/changeset/272300/webkit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1735695</commentid>
    <comment_count>3</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2021-03-03 23:34:29 -0800</bug_when>
    <thetext>This is also seen with 

    TestWebKitAPI.CopyHTML.SanitizationPreservesCharacterSet
        2021-03-03 22:02:57.378 TestWebKitAPI[30721:41622219] PBItemCollectionServicer connection disconnected.
        2021-03-03 22:02:57.456 TestWebKitAPI[30721:41622219] PBItemCollectionServicer connection disconnected.
        ASSERTION FAILED: Unsafe to ref/deref from different threads
        m_isOwnedByMainThread == isMainThread()
        /Volumes/Data/worker/ios-simulator-14-debug/build/WebKitBuild/Debug-iphonesimulator/usr/local/include/wtf/RefCounted.h(114) : void WTF::RefCountedBase::applyRefDerefThreadingCheck() const

https://results.webkit.org/?suite=api-tests&amp;test=TestWebKitAPI.CopyHTML.SanitizationPreservesCharacterSet</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1735863</commentid>
    <comment_count>4</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2021-03-04 09:36:26 -0800</bug_when>
    <thetext>My guess it that the real bug is that QuckLook is triggering off-main-thread work.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1738190</commentid>
    <comment_count>5</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2021-03-10 13:03:40 -0800</bug_when>
    <thetext>(lldb) p isMainThread()
(bool) $5 = false
(lldb) bt 
* thread #1, queue = &apos;com.apple.main-thread&apos;, stop reason = breakpoint 1.1
  * frame #0: 0x0000000142553020 WebKitLegacy`LayerFlushController::ref(this=0x000000015b40f370) const at WebViewData.h:135:36
    frame #1: 0x0000000142552ffe WebKitLegacy`WTF::DefaultRefDerefTraits&lt;LayerFlushController&gt;::refIfNotNull(ptr=0x000000015b40f370) at RefPtr.h:36:18
    frame #2: 0x0000000142552fc4 WebKitLegacy`WTF::RefPtr&lt;LayerFlushController, WTF::RawPtrTraits&lt;LayerFlushController&gt;, WTF::DefaultRefDerefTraits&lt;LayerFlushController&gt; &gt;::RefPtr(this=0x00007ffee4bb8e30, ptr=0x000000015b40f370) at RefPtr.h:61:49
    frame #3: 0x0000000142550b6d WebKitLegacy`WTF::RefPtr&lt;LayerFlushController, WTF::RawPtrTraits&lt;LayerFlushController&gt;, WTF::DefaultRefDerefTraits&lt;LayerFlushController&gt; &gt;::RefPtr(this=0x00007ffee4bb8e30, ptr=0x000000015b40f370) at RefPtr.h:61:47
    frame #4: 0x0000000142550a8d WebKitLegacy`WebViewLayerFlushScheduler::layerFlushCallback(this=0x000000015b40f380) at WebViewData.mm:126:50
    frame #5: 0x0000000142551cf8 WebKitLegacy`WebViewLayerFlushScheduler::WebViewLayerFlushScheduler(this=0x00000001615e1068)::$_0::operator()() const at WebViewData.mm:102:15
    frame #6: 0x0000000142551cae WebKitLegacy`WTF::Detail::CallableWrapper&lt;WebViewLayerFlushScheduler::WebViewLayerFlushScheduler(LayerFlushController*)::$_0, void&gt;::call(this=0x00000001615e1060) at Function.h:52:39
    frame #7: 0x0000000126c7b322 WebCore`WTF::Function&lt;void ()&gt;::operator(this=0x000000015b405a40)() const at Function.h:83:35
    frame #8: 0x000000012a7e8420 WebCore`WebCore::RunLoopObserver::runLoopObserverFired(this=0x000000015b405a38) at RunLoopObserver.cpp:44:5
    frame #9: 0x000000012a7e8380 WebCore`WebCore::RunLoopObserver::runLoopObserverFired((null)=0x00007fda2f31c2d0, (null)=128, context=0x000000015b405a38) at RunLoopObserver.cpp:38:45
    frame #10: 0x0000000140346d69 CoreFoundation`__CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ + 23
    frame #11: 0x000000014034157a CoreFoundation`__CFRunLoopDoObservers + 541
    frame #12: 0x000000014034125b CoreFoundation`CFRunLoopRunSpecific + 691
    frame #13: 0x00000001517c755c UIFoundation`-[NSHTMLReader _loadUsingWebKit] + 1847
    frame #14: 0x00000001517c84a1 UIFoundation`-[NSHTMLReader attributedString] + 22
    frame #15: 0x0000000151748d63 UIFoundation`_NSReadAttributedStringFromURLOrData + 10026
    frame #16: 0x00000001517465c4 UIFoundation`-[NSAttributedString(NSAttributedStringUIFoundationAdditions) initWithData:options:documentAttributes:error:] + 144
    frame #17: 0x000000010b1f8c22 TestWebKitAPI`CopyHTML_SanitizationPreservesCharacterSet_Test::TestBody(this=0x00007fda2dd30a60) at CopyHTML.mm:160:41
    frame #18: 0x000000010ba3c594 TestWebKitAPI`void testing::internal::HandleSehExceptionsInMethodIfSupported&lt;testing::Test, void&gt;(object=0x00007fda2dd30a60, method=21 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00, location=&quot;the test body&quot;)(), char const*) at gtest.cc:2443:10
    frame #19: 0x000000010ba1aecb TestWebKitAPI`void testing::internal::HandleExceptionsInMethodIfSupported&lt;testing::Test, void&gt;(object=0x00007fda2dd30a60, method=21 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00, location=&quot;the test body&quot;)(), char const*) at gtest.cc:2479:14
    frame #20: 0x000000010ba1ae06 TestWebKitAPI`testing::Test::Run(this=0x00007fda2dd30a60) at gtest.cc:2517:5
    frame #21: 0x000000010ba1bc2a TestWebKitAPI`testing::TestInfo::Run(this=0x00007fda2f30e920) at gtest.cc:2693:11
    frame #22: 0x000000010ba1ca54 TestWebKitAPI`testing::TestCase::Run(this=0x00007fda2f30e2f0) at gtest.cc:2811:28
    frame #23: 0x000000010ba27798 TestWebKitAPI`testing::internal::UnitTestImpl::RunAllTests(this=0x00007fda2dd08150) at gtest.cc:5177:43
    frame #24: 0x000000010ba40c24 TestWebKitAPI`bool testing::internal::HandleSehExceptionsInMethodIfSupported&lt;testing::internal::UnitTestImpl, bool&gt;(object=0x00007fda2dd08150, method=10 75 a2 0b 01 00 00 00 00 00 00 00 00 00 00 00, location=&quot;auxiliary test code (environments or event listeners)&quot;)(), char const*) at gtest.cc:2443:10
    frame #25: 0x000000010ba272ab TestWebKitAPI`bool testing::internal::HandleExceptionsInMethodIfSupported&lt;testing::internal::UnitTestImpl, bool&gt;(object=0x00007fda2dd08150, method=10 75 a2 0b 01 00 00 00 00 00 00 00 00 00 00 00, location=&quot;auxiliary test code (environments or event listeners)&quot;)(), char const*) at gtest.cc:2479:14
    frame #26: 0x000000010ba2717d TestWebKitAPI`testing::UnitTest::Run(this=0x000000010bd6e138) at gtest.cc:4786:10
    frame #27: 0x000000010b852e41 TestWebKitAPI`RUN_ALL_TESTS() at gtest.h:2341:46
    frame #28: 0x000000010b852dd2 TestWebKitAPI`TestWebKitAPI::TestsController::run(this=0x000000010bd6de98, argc=1, argv=0x00007ffee4bba2e8) at TestsController.cpp:90:13
    frame #29: 0x000000010b9ee505 TestWebKitAPI`main(argc=2, argv=0x00007ffee4bba2e8) at mainIOS.mm:49:62
    frame #30: 0x0000000141655bbd libdyld.dylib`start + 1
    frame #31: 0x0000000141655bbd libdyld.dylib`start + 1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1738193</commentid>
    <comment_count>6</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2021-03-10 13:06:38 -0800</bug_when>
    <thetext>We are in the main thread but isMainThread() is returning false. This then confuses the thread assertion in RefCountedBase where we do this:

    void applyRefDerefThreadingCheck() const
    {
#if ASSERT_ENABLED
        if (hasOneRef()) {
            // Likely an ownership transfer across threads that may be safe.
            m_isOwnedByMainThread = isMainThread();

The reason isMainThread() returns false is that the web thread lock is not being held in the runloop observer callback 

bool isMainThread()
{
    return (isWebThread() || pthread_main_np()) &amp;&amp; webThreadIsUninitializedOrLockedOrDisabled();
}</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1739932</commentid>
    <comment_count>7</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2021-03-16 07:38:18 -0700</bug_when>
    <thetext>The issue is that we are scheduling a layer flush from a layerFlushCallback and so scheduling a RunLoopObserver. 

This is fine in itself but becomes a problem when the main thread weblock auto-unlock observer runs before that observer. Then that layer flush runs without weblock held and causes corruption.

        1   0x13933141c WebViewLayerFlushScheduler::schedule()
        2   0x1393313ae LayerFlushController::scheduleLayerFlush()
        3   0x139262d59 -[WebView(WebViewInternal) _scheduleUpdateRendering]
        4   0x13928bce4 WebChromeClient::triggerRenderingUpdate()
        5   0x12064b52d WebCore::RenderingUpdateScheduler::triggerRenderingUpdate()
        6   0x12064b43e WebCore::RenderingUpdateScheduler::scheduleRenderingUpdate()
        7   0x120595a43 WebCore::Page::scheduleRenderingUpdateInternal()
        8   0x120595813 WebCore::Page::scheduleRenderingUpdate(WTF::OptionSet&lt;WebCore::RenderingUpdateStep&gt;)
        9   0x11f7567b1 WebCore::Document::scheduleRenderingUpdate(WTF::OptionSet&lt;WebCore::RenderingUpdateStep&gt;)
        10  0x121244a45 WebCore::Style::Scope::scheduleUpdate(WebCore::Style::Scope::UpdateType)
        11  0x1212452bc WebCore::Style::Scope::didChangeStyleSheetEnvironment()
        12  0x120544a54 WebCore::FrameViewLayoutContext::updateStyleForLayout()
        13  0x12052437a WebCore::FrameViewLayoutContext::layout()
        14  0x120537fe9 WebCore::FrameView::updateContentsSize()
        15  0x120541fc9 WebCore::FrameView::setCustomFixedPositionLayoutRect(WebCore::IntRect const&amp;)
        16  0x139250486 -[WebView(WebPrivate) _synchronizeCustomFixedPositionLayoutRect]
        17  0x139244bd4 -[WebView(WebPrivate) _updateRendering]
        18  0x139262c51 LayerFlushController::flushLayers()
        19  0x139331963 WebViewLayerFlushScheduler::layerFlushCallback()
        20  0x139332ba8 WebViewLayerFlushScheduler::WebViewLayerFlushScheduler(LayerFlushController*)::$_0::operator()() const
        21  0x139332b5e WTF::Detail::CallableWrapper&lt;WebViewLayerFlushScheduler::WebViewLayerFlushScheduler(LayerFlushController*)::$_0, void&gt;::call()
        22  0x11cc8d2a2 WTF::Function&lt;void ()&gt;::operator()() const
        23  0x1207fa3d0 WebCore::RunLoopObserver::runLoopObserverFired()
        24  0x1207fa330 WebCore::RunLoopObserver::runLoopObserverFired(__CFRunLoopObserver*, unsigned long, void*)
        25  0x1370e0d69 __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__
        26  0x1370db57a __CFRunLoopDoObservers
        27  0x1370dbb2d __CFRunLoopRun</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1739946</commentid>
    <comment_count>8</comment_count>
      <attachid>423333</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2021-03-16 08:26:11 -0700</bug_when>
    <thetext>Created attachment 423333
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1739961</commentid>
    <comment_count>9</comment_count>
      <attachid>423338</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2021-03-16 08:59:22 -0700</bug_when>
    <thetext>Created attachment 423338
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1740011</commentid>
    <comment_count>10</comment_count>
      <attachid>423338</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2021-03-16 10:25:49 -0700</bug_when>
    <thetext>Comment on attachment 423338
patch

r=me but please do some manual testing in UIWebView to ensure this doesn&apos;t cause any new delays or deadlocks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1740069</commentid>
    <comment_count>11</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-03-16 11:39:24 -0700</bug_when>
    <thetext>Committed r274500: &lt;https://commits.webkit.org/r274500&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 423338.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>423333</attachid>
            <date>2021-03-16 08:26:11 -0700</date>
            <delta_ts>2021-03-16 09:14:34 -0700</delta_ts>
            <desc>patch</desc>
            <filename>layer-flush-lock.patch</filename>
            <type>text/plain</type>
            <size>2205</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRleCA5YjI0OWUxMzNlZjkuLjdlMjEyMGQ3MGE2
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDIxLTAz
LTE2ICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBSRUdSRVNT
SU9OIChyMjcyMzAwKTogW2lPU10gQVNTRVJUSU9OIEZBSUxFRDogVW5zYWZlIHRvIHJlZi9kZXJl
ZiBmcm9tIGRpZmZlcmVudCB0aHJlYWRzIHVuZGVyIFdlYlZpZXdMYXllckZsdXNoU2NoZWR1bGVy
OjpsYXllckZsdXNoQ2FsbGJhY2sKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIyMjcxMgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzUwMjI4NDU+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2UgYXJlIHNj
aGVkdWxpbmcgYSBsYXllciBmbHVzaCBmcm9tIGEgbGF5ZXJGbHVzaENhbGxiYWNrIGFuZCBzbyBy
ZXNjaGVkdWxpbmcgdGhlIFJ1bkxvb3BPYnNlcnZlci4KKyAgICAgICAgVGhpcyBpcyBmaW5lIGlu
IGl0c2VsZiBidXQgYmVjb21lcyBhIHByb2JsZW0gd2hlbiB0aGUgbWFpbiB0aHJlYWQgd2ViIGxv
Y2sgYXV0by11bmxvY2sgb2JzZXJ2ZXIKKyAgICAgICAgcnVucyBiZWZvcmUgdGhhdCBvYnNlcnZl
ci4gVGhlbiB0aGF0IGxheWVyIGZsdXNoIHJ1bnMgd2l0aG91dCB0aGUgd2ViIGxvY2sgaGVsZCBh
bmQgbWVzc2VzIHVwCisgICAgICAgIHJlZi9kZXJlZiBtYWluIHRocmVhZCBhc3NlcnRzIChpc01h
aW5UaHJlYWQoKSByZXR1cm5zIGZhbHNlIHdoZW4gdGhlIHdlYiBsb2NrIGlzIG5vdCBoZWxkKS4K
KworICAgICAgICAqIFdlYlZpZXcvV2ViVmlld0RhdGEubW06CisgICAgICAgIChXZWJWaWV3TGF5
ZXJGbHVzaFNjaGVkdWxlcjo6bGF5ZXJGbHVzaENhbGxiYWNrKToKKworICAgICAgICBGaXggYnkg
ZXhwbGljaXRseSB0YWtpbmcgdGhlIGxvY2suCisKIDIwMjEtMDMtMDkgIFNhbSBXZWluaWcgIDx3
ZWluaWdAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBDU1NQYXJzZXJDb250ZXh0OjplbmZv
cmNlc0NTU01JTUVUeXBlSW5Ob1F1aXJrc01vZGUgYXMgaXQgaXMgdW51c2VkCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXdEYXRhLm1tIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3RGF0YS5tbQppbmRleCA0OWJkYzYyNzNk
MDAuLjVjNTMwOTcyMjhjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Vmlldy9XZWJWaWV3RGF0YS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3
L1dlYlZpZXdEYXRhLm1tCkBAIC00MSw2ICs0MSw3IEBACiAjaW1wb3J0IDxXZWJDb3JlL1RleHRJ
bmRpY2F0b3JXaW5kb3cuaD4KICNpbXBvcnQgPFdlYkNvcmUvVmFsaWRhdGlvbkJ1YmJsZS5oPgog
I2ltcG9ydCA8V2ViQ29yZS9XZWJDb3JlSklUT3BlcmF0aW9ucy5oPgorI2ltcG9ydCA8V2ViQ29y
ZS9XZWJDb3JlVGhyZWFkLmg+CiAjaW1wb3J0IDx3dGYvTWFpblRocmVhZC5oPgogI2ltcG9ydCA8
d3RmL1J1bkxvb3AuaD4KICNpbXBvcnQgPHd0Zi9TZXRGb3JTY29wZS5oPgpAQCAtMTIyLDYgKzEy
MywxMCBAQCB2b2lkIFdlYlZpZXdMYXllckZsdXNoU2NoZWR1bGVyOjppbnZhbGlkYXRlKCkKIAog
dm9pZCBXZWJWaWV3TGF5ZXJGbHVzaFNjaGVkdWxlcjo6bGF5ZXJGbHVzaENhbGxiYWNrKCkKIHsK
KyAgICAvLyBOb3JtYWxseSB0aGUgbGF5ZXIgZmx1c2ggY2FsbGJhY2sgaGFwcGVucyBiZWZvcmUg
dGhlIHdlYiBsb2NrIGF1dG8tdW5sb2NrIG9ic2VydmVyIHJ1bnMuCisgICAgLy8gSG93ZXZlciBp
ZiB0aGUgZmx1c2ggaXMgcmVzY2hlZHVsZWQgZnJvbSB0aGUgY2FsbGJhY2sgaXQgbWF5IGdldCBw
dXNoZWQgcGFzdCBpdCwgdG8gdGhlIG5leHQgY3ljbGUuCisgICAgV2ViVGhyZWFkTG9jaygpOwor
CiAgICAgQGF1dG9yZWxlYXNlcG9vbCB7CiAgICAgICAgIFJlZlB0cjxMYXllckZsdXNoQ29udHJv
bGxlcj4gcHJvdGVjdG9yID0gbV9mbHVzaENvbnRyb2xsZXI7CiAK
</data>
<flag name="commit-queue"
          id="442687"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>423338</attachid>
            <date>2021-03-16 08:59:22 -0700</date>
            <delta_ts>2021-03-16 11:39:26 -0700</delta_ts>
            <desc>patch</desc>
            <filename>layer-flush-lock-2.patch</filename>
            <type>text/plain</type>
            <size>2200</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRleCA5YjI0OWUxMzNlZjkuLjdlMjEyMGQ3MGE2
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDIxLTAz
LTE2ICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBSRUdSRVNT
SU9OIChyMjcyMzAwKTogW2lPU10gQVNTRVJUSU9OIEZBSUxFRDogVW5zYWZlIHRvIHJlZi9kZXJl
ZiBmcm9tIGRpZmZlcmVudCB0aHJlYWRzIHVuZGVyIFdlYlZpZXdMYXllckZsdXNoU2NoZWR1bGVy
OjpsYXllckZsdXNoQ2FsbGJhY2sKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIyMjcxMgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzUwMjI4NDU+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2UgYXJlIHNj
aGVkdWxpbmcgYSBsYXllciBmbHVzaCBmcm9tIGEgbGF5ZXJGbHVzaENhbGxiYWNrIGFuZCBzbyBy
ZXNjaGVkdWxpbmcgdGhlIFJ1bkxvb3BPYnNlcnZlci4KKyAgICAgICAgVGhpcyBpcyBmaW5lIGlu
IGl0c2VsZiBidXQgYmVjb21lcyBhIHByb2JsZW0gd2hlbiB0aGUgbWFpbiB0aHJlYWQgd2ViIGxv
Y2sgYXV0by11bmxvY2sgb2JzZXJ2ZXIKKyAgICAgICAgcnVucyBiZWZvcmUgdGhhdCBvYnNlcnZl
ci4gVGhlbiB0aGF0IGxheWVyIGZsdXNoIHJ1bnMgd2l0aG91dCB0aGUgd2ViIGxvY2sgaGVsZCBh
bmQgbWVzc2VzIHVwCisgICAgICAgIHJlZi9kZXJlZiBtYWluIHRocmVhZCBhc3NlcnRzIChpc01h
aW5UaHJlYWQoKSByZXR1cm5zIGZhbHNlIHdoZW4gdGhlIHdlYiBsb2NrIGlzIG5vdCBoZWxkKS4K
KworICAgICAgICAqIFdlYlZpZXcvV2ViVmlld0RhdGEubW06CisgICAgICAgIChXZWJWaWV3TGF5
ZXJGbHVzaFNjaGVkdWxlcjo6bGF5ZXJGbHVzaENhbGxiYWNrKToKKworICAgICAgICBGaXggYnkg
ZXhwbGljaXRseSB0YWtpbmcgdGhlIGxvY2suCisKIDIwMjEtMDMtMDkgIFNhbSBXZWluaWcgIDx3
ZWluaWdAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBDU1NQYXJzZXJDb250ZXh0OjplbmZv
cmNlc0NTU01JTUVUeXBlSW5Ob1F1aXJrc01vZGUgYXMgaXQgaXMgdW51c2VkCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXdEYXRhLm1tIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3RGF0YS5tbQppbmRleCA0OWJkYzYyNzNk
MDAuLmI2NWZjNGMzODJkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Vmlldy9XZWJWaWV3RGF0YS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3
L1dlYlZpZXdEYXRhLm1tCkBAIC00OCw2ICs0OCw3IEBACiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKICNpbXBvcnQgIldlYkdlb2xvY2F0aW9uUHJvdmlkZXJJT1MuaCIKICNpbXBvcnQgPFdlYkNv
cmUvUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmg+CisjaW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVU
aHJlYWQuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViQ29yZVRocmVhZEludGVybmFsLmg+CiAjZW5k
aWYKIApAQCAtMTIyLDYgKzEyMywxMiBAQCB2b2lkIFdlYlZpZXdMYXllckZsdXNoU2NoZWR1bGVy
OjppbnZhbGlkYXRlKCkKIAogdm9pZCBXZWJWaWV3TGF5ZXJGbHVzaFNjaGVkdWxlcjo6bGF5ZXJG
bHVzaENhbGxiYWNrKCkKIHsKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorICAgIC8vIE5vcm1h
bGx5IHRoZSBsYXllciBmbHVzaCBjYWxsYmFjayBoYXBwZW5zIGJlZm9yZSB0aGUgd2ViIGxvY2sg
YXV0by11bmxvY2sgb2JzZXJ2ZXIgcnVucy4KKyAgICAvLyBIb3dldmVyIGlmIHRoZSBmbHVzaCBp
cyByZXNjaGVkdWxlZCBmcm9tIHRoZSBjYWxsYmFjayBpdCBtYXkgZ2V0IHB1c2hlZCBwYXN0IGl0
LCB0byB0aGUgbmV4dCBjeWNsZS4KKyAgICBXZWJUaHJlYWRMb2NrKCk7CisjZW5kaWYKKwogICAg
IEBhdXRvcmVsZWFzZXBvb2wgewogICAgICAgICBSZWZQdHI8TGF5ZXJGbHVzaENvbnRyb2xsZXI+
IHByb3RlY3RvciA9IG1fZmx1c2hDb250cm9sbGVyOwogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>