<?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>209811</bug_id>
          
          <creation_ts>2020-03-31 08:20:16 -0700</creation_ts>
          <short_desc>[WTF] DataMutex: Add runUnlocked()</short_desc>
          <delta_ts>2020-04-10 09:51:13 -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>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="Alicia Boya García">aboya</reporter>
          <assigned_to name="Alicia Boya García">aboya</assigned_to>
          <cc>benjamin</cc>
    
    <cc>calvaris</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>cturner</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fpizlo</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1636030</commentid>
    <comment_count>0</comment_count>
    <who name="Alicia Boya García">aboya</who>
    <bug_when>2020-03-31 08:20:16 -0700</bug_when>
    <thetext>This patch introduces a runUnlocked() method in WTF::DataMutex::LockedWrapper
to run a lambda function without the lock. This is intended to be used for
small sections of the code that need to be unlocked, in cases where using
scoping would prove non-ergonomic or where running the unlocked section is only
necessary or desired when a certain condition is met -- something that cannot
be done with C++ scoping.

Safety mechanisms are provided. First, because this is used with a lambda, all
variables to be used in the unlocked section have to be specified in the
capture (global capture is possible but not recommended to simplify analysis).
Second, additional checks have been added to DataMutex to detect unlocked
accesses among other conditions. This will detect among other things naive
access to protected members by means of capturing the LockedWrapper by
reference.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1636033</commentid>
    <comment_count>1</comment_count>
      <attachid>395042</attachid>
    <who name="Alicia Boya García">aboya</who>
    <bug_when>2020-03-31 08:24:18 -0700</bug_when>
    <thetext>Created attachment 395042
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1636083</commentid>
    <comment_count>2</comment_count>
      <attachid>395042</attachid>
    <who name="Charlie Turner">cturner</who>
    <bug_when>2020-03-31 10:08:24 -0700</bug_when>
    <thetext>Comment on attachment 395042
Patch

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

&gt; Tools/TestWebKitAPI/Tests/WTF/DataMutex.cpp:30
&gt; +#define ENABLE_DATA_MUTEX_CHECKS 1

:)

&gt; Tools/TestWebKitAPI/Tests/WTF/DataMutex.cpp:52
&gt; +        wrapper.runUnlocked([mutex]() {

I don&apos;t have strong feelings here, but runUnlocked seems like it could encourage a smell. Locked scopes with lots of little unlock/lock pairs are nasty. Hard to say because I don&apos;t see real cases in your patch.

wrapper.runUnlockedIf(condition, block) could be useful as well per your ChangeLog.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1636106</commentid>
    <comment_count>3</comment_count>
      <attachid>395042</attachid>
    <who name="Alicia Boya García">aboya</who>
    <bug_when>2020-03-31 10:34:07 -0700</bug_when>
    <thetext>Comment on attachment 395042
Patch

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

&gt;&gt; Tools/TestWebKitAPI/Tests/WTF/DataMutex.cpp:52
&gt;&gt; +        wrapper.runUnlocked([mutex]() {
&gt; 
&gt; I don&apos;t have strong feelings here, but runUnlocked seems like it could encourage a smell. Locked scopes with lots of little unlock/lock pairs are nasty. Hard to say because I don&apos;t see real cases in your patch.
&gt; 
&gt; wrapper.runUnlockedIf(condition, block) could be useful as well per your ChangeLog.

The need arises. The point is to make the smell noticeable and easily auditable. Because of the lambda capture, it&apos;s easy to see what data is used during the unlocked section. And there are still checks to avoid the most obvious accidental abuses.

runUnlockedIf() sounds like a useful shorthand, but in practice, it&apos;s not more ergonomical. The reason for that is that very often after returning from the unlocked section you&apos;ll need to check that you still need to proceed with the original code (think GStreamer flushes for example).

Here is an example of an usage of runUnlocked() in WebKitWebSrc create() function, so you get an idea of the scenarios where it comes handy:

    if (members-&gt;pendingCaps) {
        GST_DEBUG_OBJECT(src, &quot;Setting caps: %&quot; GST_PTR_FORMAT, members-&gt;pendingCaps.get());
        members.runUnlocked([&amp;baseSrc, caps = members-&gt;pendingCaps.leakRef()]() {
            gst_base_src_set_caps(baseSrc, caps);
        });
        if (members-&gt;isFlushing)
            return GST_FLOW_FLUSHING;
    }</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1636142</commentid>
    <comment_count>4</comment_count>
    <who name="Charlie Turner">cturner</who>
    <bug_when>2020-03-31 11:14:32 -0700</bug_when>
    <thetext>(In reply to Alicia Boya García from comment #3)
&gt; Here is an example of an usage of runUnlocked() in WebKitWebSrc create()
&gt; function, so you get an idea of the scenarios where it comes handy:

Makes sense, thanks. Informal r+ from me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1640225</commentid>
    <comment_count>5</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-04-10 09:46:55 -0700</bug_when>
    <thetext>Committed r259879: &lt;https://trac.webkit.org/changeset/259879&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 395042.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1640228</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-04-10 09:51:13 -0700</bug_when>
    <thetext>&lt;rdar://problem/61588719&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>395042</attachid>
            <date>2020-03-31 08:24:18 -0700</date>
            <delta_ts>2020-04-10 09:46:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-209811-20200331172417.patch</filename>
            <type>text/plain</type>
            <size>8045</size>
            <attacher name="Alicia Boya García">aboya</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU4OTg0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDdiYzg4NzQ3OTY4OTcyYmU1MGJjYjM0
ZTYzZDRlYzllM2EzMTU2OTYuLjEzZmY5MTRjZjBjZjkzM2RhMjMzNDQwMzgyYjgyMjU5YWM3NDIx
ODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzYgQEAKKzIwMjAtMDMtMzEgIEFsaWNpYSBCb3lhIEdhcmPDrWEg
IDxhYm95YUBpZ2FsaWEuY29tPgorCisgICAgICAgIFtXVEZdIERhdGFNdXRleDogQWRkIHJ1blVu
bG9ja2VkKCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIwOTgxMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFRoaXMgcGF0Y2ggaW50cm9kdWNlcyBhIHJ1blVubG9ja2VkKCkgbWV0aG9kIGluIFdURjo6RGF0
YU11dGV4OjpMb2NrZWRXcmFwcGVyCisgICAgICAgIHRvIHJ1biBhIGxhbWJkYSBmdW5jdGlvbiB3
aXRob3V0IHRoZSBsb2NrLiBUaGlzIGlzIGludGVuZGVkIHRvIGJlIHVzZWQgZm9yCisgICAgICAg
IHNtYWxsIHNlY3Rpb25zIG9mIHRoZSBjb2RlIHRoYXQgbmVlZCB0byBiZSB1bmxvY2tlZCwgaW4g
Y2FzZXMgd2hlcmUgdXNpbmcKKyAgICAgICAgc2NvcGluZyB3b3VsZCBwcm92ZSBub24tZXJnb25v
bWljIG9yIHdoZXJlIHJ1bm5pbmcgdGhlIHVubG9ja2VkIHNlY3Rpb24gaXMgb25seQorICAgICAg
ICBuZWNlc3Nhcnkgb3IgZGVzaXJlZCB3aGVuIGEgY2VydGFpbiBjb25kaXRpb24gaXMgbWV0IC0t
IHNvbWV0aGluZyB0aGF0IGNhbm5vdAorICAgICAgICBiZSBkb25lIHdpdGggQysrIHNjb3Bpbmcu
CisKKyAgICAgICAgU2FmZXR5IG1lY2hhbmlzbXMgYXJlIHByb3ZpZGVkLiBGaXJzdCwgYmVjYXVz
ZSB0aGlzIGlzIHVzZWQgd2l0aCBhIGxhbWJkYSwgYWxsCisgICAgICAgIHZhcmlhYmxlcyB0byBi
ZSB1c2VkIGluIHRoZSB1bmxvY2tlZCBzZWN0aW9uIGhhdmUgdG8gYmUgc3BlY2lmaWVkIGluIHRo
ZQorICAgICAgICBjYXB0dXJlIChnbG9iYWwgY2FwdHVyZSBpcyBwb3NzaWJsZSBidXQgbm90IHJl
Y29tbWVuZGVkIHRvIHNpbXBsaWZ5IGFuYWx5c2lzKS4KKyAgICAgICAgU2Vjb25kLCBhZGRpdGlv
bmFsIGNoZWNrcyBoYXZlIGJlZW4gYWRkZWQgdG8gRGF0YU11dGV4IHRvIGRldGVjdCB1bmxvY2tl
ZAorICAgICAgICBhY2Nlc3NlcyBhbW9uZyBvdGhlciBjb25kaXRpb25zLiBUaGlzIHdpbGwgZGV0
ZWN0IGFtb25nIG90aGVyIHRoaW5ncyBuYWl2ZQorICAgICAgICBhY2Nlc3MgdG8gcHJvdGVjdGVk
IG1lbWJlcnMgYnkgbWVhbnMgb2YgY2FwdHVyaW5nIHRoZSBMb2NrZWRXcmFwcGVyIGJ5CisgICAg
ICAgIHJlZmVyZW5jZS4KKworICAgICAgICAqIHd0Zi9EYXRhTXV0ZXguaDoKKyAgICAgICAgKFdU
Rjo6T3duZXJBd2FyZUxvY2tBZGFwdGVyOjpsb2NrKToKKyAgICAgICAgKFdURjo6T3duZXJBd2Fy
ZUxvY2tBZGFwdGVyOjp1bmxvY2spOgorICAgICAgICAoV1RGOjpPd25lckF3YXJlTG9ja0FkYXB0
ZXI6OnRyeUxvY2spOgorICAgICAgICAoV1RGOjpPd25lckF3YXJlTG9ja0FkYXB0ZXI6OmlzTG9j
a2VkIGNvbnN0KToKKyAgICAgICAgKFdURjo6RGF0YU11dGV4OjpMb2NrZWRXcmFwcGVyOjpvcGVy
YXRvci0+KToKKyAgICAgICAgKFdURjo6RGF0YU11dGV4OjpMb2NrZWRXcmFwcGVyOjpvcGVyYXRv
ciopOgorICAgICAgICAoV1RGOjpEYXRhTXV0ZXg6OkxvY2tlZFdyYXBwZXI6Om11dGV4KToKKyAg
ICAgICAgKFdURjo6RGF0YU11dGV4OjpMb2NrZWRXcmFwcGVyOjpsb2NrSG9sZGVyKToKKyAgICAg
ICAgKFdURjo6RGF0YU11dGV4OjpMb2NrZWRXcmFwcGVyOjpydW5VbmxvY2tlZCk6CisKIDIwMjAt
MDMtMjQgIFBlciBBcm5lIFZvbGxhbiAgPHB2b2xsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtD
b2NvYV0gRml4IGxhdW5jaCB0aW1lIHJlZ3Jlc3Npb24gd2l0aCBDRiBwcmVmcyBkaXJlY3QgbW9k
ZSBlbmFibGVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9EYXRhTXV0ZXguaCBiL1NvdXJj
ZS9XVEYvd3RmL0RhdGFNdXRleC5oCmluZGV4IDhhNWM1ZWM3MTkzODI2Mjc1YzM3MzAyMWVkM2Rk
ODE5NzBkMjcxZjcuLjYwZjE1MzcwZTA1ZmVjOTQ5ZTg2NTFlMGM0YmY0N2RkOGQ4Yzg5NTIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0RhdGFNdXRleC5oCisrKyBiL1NvdXJjZS9XVEYvd3Rm
L0RhdGFNdXRleC5oCkBAIC0yMSwxMCArMjEsNzQgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVk
ZSA8d3RmL0xvY2suaD4KKyNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CiAKIG5hbWVzcGFjZSBX
VEYgewogCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgorLy8gQnkgZGVmYXVsdCBpbnZhbGlkIGFjY2Vz
cyBjaGVja3MgYXJlIG9ubHkgZG9uZSBpbiBEZWJ1ZyBidWlsZHMuCisjaWYgIWRlZmluZWQoRU5B
QkxFX0RBVEFfTVVURVhfQ0hFQ0tTKQorI2lmIGRlZmluZWQoTkRFQlVHKQorI2RlZmluZSBFTkFC
TEVfREFUQV9NVVRFWF9DSEVDS1MgMAorI2Vsc2UKKyNkZWZpbmUgRU5BQkxFX0RBVEFfTVVURVhf
Q0hFQ0tTIDEKKyNlbmRpZgorI2VuZGlmCisKKyNpZiBFTkFCTEVfREFUQV9NVVRFWF9DSEVDS1MK
KyNkZWZpbmUgREFUQV9NVVRFWF9DSEVDSyhleHByKSBSRUxFQVNFX0FTU0VSVChleHByKQorI2Vs
c2UKKyNkZWZpbmUgREFUQV9NVVRFWF9DSEVDSyhleHByKQorI2VuZGlmCisKK3RlbXBsYXRlPHR5
cGVuYW1lIExvY2tUeXBlPgorY2xhc3MgT3duZXJBd2FyZUxvY2tBZGFwdGVyIHsKK3B1YmxpYzoK
KyAgICB2b2lkIGxvY2soKQorICAgIHsKKyAgICAgICAgREFUQV9NVVRFWF9DSEVDSyhtX293bmVy
ICE9ICZUaHJlYWQ6OmN1cnJlbnQoKSk7IC8vIFRocmVhZCBhdHRlbXB0ZWQgcmVjdXJzaXZlIGxv
Y2sgKHVuc3VwcG9ydGVkKS4KKyAgICAgICAgbV9sb2NrLmxvY2soKTsKKyNpZiBFTkFCTEVfREFU
QV9NVVRFWF9DSEVDS1MKKyAgICAgICAgQVNTRVJUKCFtX293bmVyKTsKKyAgICAgICAgbV9vd25l
ciA9ICZUaHJlYWQ6OmN1cnJlbnQoKTsKKyNlbmRpZgorICAgIH0KKworICAgIHZvaWQgdW5sb2Nr
KCkKKyAgICB7CisjaWYgRU5BQkxFX0RBVEFfTVVURVhfQ0hFQ0tTCisgICAgICAgIG1fb3duZXIg
PSBudWxscHRyOworI2VuZGlmCisgICAgICAgIG1fbG9jay51bmxvY2soKTsKKyAgICB9CisKKyAg
ICBib29sIHRyeUxvY2soKQorICAgIHsKKyAgICAgICAgREFUQV9NVVRFWF9DSEVDSyhtX293bmVy
ICE9ICZUaHJlYWQ6OmN1cnJlbnQoKSk7IC8vIFRocmVhZCBhdHRlbXB0ZWQgcmVjdXJzaXZlIGxv
Y2sgKHVuc3VwcG9ydGVkKS4KKyAgICAgICAgaWYgKCFtX2xvY2sudHJ5TG9jaygpKQorICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisjaWYgRU5BQkxFX0RBVEFfTVVURVhfQ0hFQ0tTCisgICAg
ICAgIEFTU0VSVCghbV9vd25lcik7CisgICAgICAgIG1fb3duZXIgPSAmVGhyZWFkOjpjdXJyZW50
KCk7CisjZW5kaWYKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgYm9vbCBpc0xv
Y2tlZCgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9sb2NrLmlzTG9ja2VkKCk7Cisg
ICAgfQorCitwcml2YXRlOgorI2lmIEVOQUJMRV9EQVRBX01VVEVYX0NIRUNLUworICAgIFRocmVh
ZCogbV9vd25lciB7IG51bGxwdHIgfTsgLy8gVXNlIFRocmVhZCogaW5zdGVhZCBvZiBSZWZQdHI8
VGhyZWFkPiBzaW5jZSBtX293bmVyIHRocmVhZCBpcyBhbHdheXMgYWxpdmUgd2hpbGUgbV9vd25l
ciBpcyBzZXQuCisjZW5kaWYKKyAgICBMb2NrVHlwZSBtX2xvY2s7Cit9OworCit1c2luZyBPd25l
ckF3YXJlTG9jayA9IE93bmVyQXdhcmVMb2NrQWRhcHRlcjxMb2NrPjsKKwordGVtcGxhdGU8dHlw
ZW5hbWUgVCwgdHlwZW5hbWUgTG9ja1R5cGUgPSBPd25lckF3YXJlTG9jaz4KIGNsYXNzIERhdGFN
dXRleCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgV1RGX01BS0VfTk9OQ09Q
WUFCTEUoRGF0YU11dGV4KTsKQEAgLTQ0LDMyICsxMDgsNDQgQEAgcHVibGljOgogCiAgICAgICAg
IFQqIG9wZXJhdG9yLT4oKQogICAgICAgICB7CisgICAgICAgICAgICBEQVRBX01VVEVYX0NIRUNL
KG1fbXV0ZXguaXNMb2NrZWQoKSk7CiAgICAgICAgICAgICByZXR1cm4gJm1fZGF0YTsKICAgICAg
ICAgfQogCiAgICAgICAgIFQmIG9wZXJhdG9yKigpCiAgICAgICAgIHsKKyAgICAgICAgICAgIERB
VEFfTVVURVhfQ0hFQ0sobV9tdXRleC5pc0xvY2tlZCgpKTsKICAgICAgICAgICAgIHJldHVybiBt
X2RhdGE7CiAgICAgICAgIH0KIAotICAgICAgICBMb2NrJiBtdXRleCgpCisgICAgICAgIExvY2tU
eXBlJiBtdXRleCgpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBtX211dGV4OwogICAg
ICAgICB9CiAKLSAgICAgICAgTG9ja0hvbGRlciYgbG9ja0hvbGRlcigpCisgICAgICAgIExvY2tl
cjxMb2NrVHlwZT4mIGxvY2tIb2xkZXIoKQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4g
bV9sb2NrSG9sZGVyOwogICAgICAgICB9CiAKKyAgICAgICAgLy8gVXNlZCB0byBhdm9pZCBleGNl
c3NpdmUgYnJhY2Ugc2NvcGluZyB3aGVuIG9ubHkgc21hbGwgcGFydHMgb2YgdGhlIGNvZGUgbmVl
ZCB0byBiZSBydW4gdW5sb2NrZWQuCisgICAgICAgIC8vIFBsZWFzZSBiZSBtaW5kZnVsIHRoYXQg
YWNjZXNzaW5nIHRoZSB3cmFwcGVkIGRhdGEgZnJvbSB0aGUgY2FsbGJhY2sgaXMgdW5zYWZlIGFu
ZCB3aWxsIGZhaWwgb24gYXNzZXJ0aW9ucy4KKyAgICAgICAgLy8gSXQncyBoZWxwZnVsIHRvIHVz
ZSBhIG1pbmltYWwgbGFtYmRhIGNhcHR1cmUgdG8gYmUgY29uc2Npb3VzIG9mIHdoYXQgZGF0YSB5
b3UncmUgaGF2aW5nIGFjY2VzcyB0byBpbiB0aGVzZSBzZWN0aW9ucy4KKyAgICAgICAgdm9pZCBy
dW5VbmxvY2tlZChXVEY6OkZ1bmN0aW9uPHZvaWQoKT4gY2FsbGJhY2spCisgICAgICAgIHsKKyAg
ICAgICAgICAgIG1fbXV0ZXgudW5sb2NrKCk7CisgICAgICAgICAgICBjYWxsYmFjaygpOworICAg
ICAgICAgICAgbV9tdXRleC5sb2NrKCk7CisgICAgICAgIH0KKwogICAgIHByaXZhdGU6Ci0gICAg
ICAgIExvY2smIG1fbXV0ZXg7Ci0gICAgICAgIExvY2tIb2xkZXIgbV9sb2NrSG9sZGVyOworICAg
ICAgICBMb2NrVHlwZSYgbV9tdXRleDsKKyAgICAgICAgTG9ja2VyPExvY2tUeXBlPiBtX2xvY2tI
b2xkZXI7CiAgICAgICAgIFQmIG1fZGF0YTsKICAgICB9OwogCiBwcml2YXRlOgotICAgIExvY2sg
bV9tdXRleDsKKyAgICBMb2NrVHlwZSBtX211dGV4OwogICAgIFQgbV9kYXRhOwogfTsKIApkaWZm
IC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGE1NzBjYjA4
OWRkZjI2ODRlODAzODBiM2I5OGRiNmUxMzIxZGZhMmYuLmVmOWMxYjlmZTQwYjUyN2Q3YjJjYWU3
MzY4MDllODU3ZmI5M2E0MjEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29s
cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAyMC0wMy0zMSAgQWxpY2lhIEJveWEgR2Fy
Y8OtYSAgPGFib3lhQGlnYWxpYS5jb20+CisKKyAgICAgICAgW1dURl0gRGF0YU11dGV4OiBBZGQg
cnVuVW5sb2NrZWQoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjA5ODExCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgVGVzdHMgZm9yIHJ1blVubG9ja2VkKCkgYW5kIERhdGFNdXRleCBjaGVja3MgYXJlIGlu
dHJvZHVjZWQuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9EYXRhTXV0ZXgu
Y3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisKIDIwMjAtMDMtMjUgIFRpbmct
V2VpIExhbiAgPGxhbnR3NDRAZ21haWwuY29tPgogCiAgICAgICAgIFtHVEtdIEFkZCB1c2VyIGFn
ZW50IHF1aXJrIGZvciBhdXRoLm1heW9oci5jb20KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV1RGL0RhdGFNdXRleC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dURi9EYXRhTXV0ZXguY3BwCmluZGV4IDhhYjM0ZDA5NzJmYzA1YjcxMDBiYjFjYzMzYTY4OTNm
MjA3YWI2ZjUuLjk4ZDk3NjYwZWJiZTQ4MDQwYzAwMmU4NDc2ZThmYWJjMTAxOTM3MWUgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0RhdGFNdXRleC5jcHAKKysrIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvRGF0YU11dGV4LmNwcApAQCAtMjUsNiArMjUs
OSBAQAogICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKKworLy8gRm9yIHRoaXMgZmlsZSwgd2Ug
Zm9yY2UgY2hlY2tzIGV2ZW4gaWYgd2UncmUgcnVubmluZyBvbiByZWxlYXNlLgorI2RlZmluZSBF
TkFCTEVfREFUQV9NVVRFWF9DSEVDS1MgMQogI2luY2x1ZGUgPHd0Zi9EYXRhTXV0ZXguaD4KIAog
dXNpbmcgbmFtZXNwYWNlIFdURjsKQEAgLTM0LDE4ICszNywyNCBAQCBuYW1lc3BhY2UgVGVzdFdl
YktpdEFQSSB7CiBzdHJ1Y3QgTXlTdHJ1Y3R1cmUgewogICAgIGludCBudW1iZXI7CiB9OwotRGF0
YU11dGV4PE15U3RydWN0dXJlPiBteURhdGFNdXRleDsKIAogVEVTVChXVEZfRGF0YU11dGV4LCBU
YWtpbmdUaGVNdXRleCkKIHsKLSAgICBMb2NrKiBtdXRleDsKKyAgICBEYXRhTXV0ZXg8TXlTdHJ1
Y3R1cmU+IG15RGF0YU11dGV4OworCisgICAgT3duZXJBd2FyZUxvY2sqIG11dGV4OwogICAgIHsK
ICAgICAgICAgRGF0YU11dGV4PE15U3RydWN0dXJlPjo6TG9ja2VkV3JhcHBlciB3cmFwcGVyKG15
RGF0YU11dGV4KTsKICAgICAgICAgbXV0ZXggPSAmd3JhcHBlci5tdXRleCgpOwotICAgICAgICBB
U1NFUlRfVFJVRShtdXRleC0+aXNIZWxkKCkpOworICAgICAgICBBU1NFUlRfVFJVRShtdXRleC0+
aXNMb2NrZWQoKSk7CiAgICAgICAgIHdyYXBwZXItPm51bWJlciA9IDU7CisKKyAgICAgICAgd3Jh
cHBlci5ydW5VbmxvY2tlZChbbXV0ZXhdKCkgeworICAgICAgICAgICAgQVNTRVJUX0ZBTFNFKG11
dGV4LT5pc0xvY2tlZCgpKTsKKyAgICAgICAgfSk7CisgICAgICAgIEFTU0VSVF9UUlVFKG11dGV4
LT5pc0xvY2tlZCgpKTsKICAgICB9Ci0gICAgQVNTRVJUX0ZBTFNFKG11dGV4LT5pc0hlbGQoKSk7
CisgICAgQVNTRVJUX0ZBTFNFKG11dGV4LT5pc0xvY2tlZCgpKTsKIAogICAgIHsKICAgICAgICAg
RGF0YU11dGV4PE15U3RydWN0dXJlPjo6TG9ja2VkV3JhcHBlciB3cmFwcGVyKG15RGF0YU11dGV4
KTsKQEAgLTUzLDQgKzYyLDI0IEBAIFRFU1QoV1RGX0RhdGFNdXRleCwgVGFraW5nVGhlTXV0ZXgp
CiAgICAgfQogfQogCitURVNUKFdURl9EYXRhTXV0ZXgsIFJ1blVubG9ja2VkSWxsZWdhbEFjY2Vz
c0RlYXRoVGVzdCkKK3sKKyAgICA6OnRlc3Rpbmc6OkZMQUdTX2d0ZXN0X2RlYXRoX3Rlc3Rfc3R5
bGUgPSAidGhyZWFkc2FmZSI7CisgICAgRGF0YU11dGV4PE15U3RydWN0dXJlPiBteURhdGFNdXRl
eDsKKyAgICBEYXRhTXV0ZXg8TXlTdHJ1Y3R1cmU+OjpMb2NrZWRXcmFwcGVyIHdyYXBwZXIobXlE
YXRhTXV0ZXgpOworICAgIHdyYXBwZXItPm51bWJlciA9IDU7CisKKyAgICBBU1NFUlRfREVBVEgo
d3JhcHBlci5ydW5VbmxvY2tlZChbJl0oKSB7CisgICAgICAgIHdyYXBwZXItPm51bWJlcisrOwor
ICAgIH0pLCAiIik7Cit9CisKK1RFU1QoV1RGX0RhdGFNdXRleCwgRG91YmxlTG9ja0RlYXRoVGVz
dCkKK3sKKyAgICA6OnRlc3Rpbmc6OkZMQUdTX2d0ZXN0X2RlYXRoX3Rlc3Rfc3R5bGUgPSAidGhy
ZWFkc2FmZSI7CisgICAgRGF0YU11dGV4PE15U3RydWN0dXJlPiBteURhdGFNdXRleDsKKyAgICBE
YXRhTXV0ZXg8TXlTdHJ1Y3R1cmU+OjpMb2NrZWRXcmFwcGVyIHdyYXBwZXIxKG15RGF0YU11dGV4
KTsKKyAgICBBU1NFUlRfREVBVEgoRGF0YU11dGV4PE15U3RydWN0dXJlPjo6TG9ja2VkV3JhcHBl
ciB3cmFwcGVyMihteURhdGFNdXRleCksICIiKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgVGVzdFdl
YktpdEFQSQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>