<?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>175124</bug_id>
          
          <creation_ts>2017-08-03 03:46:21 -0700</creation_ts>
          <short_desc>[Linux][WTF] Use one global semaphore to notify thread suspend and resume completion</short_desc>
          <delta_ts>2017-08-03 04:18:23 -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>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="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>benjamin</cc>
    
    <cc>buildbot</cc>
    
    <cc>cdumez</cc>
    
    <cc>cgarcia</cc>
    
    <cc>clopez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>dbates</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1334729</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-08-03 03:46:21 -0700</bug_when>
    <thetext>[Linux][WTF] Use one global semaphore to notify thread suspend and resume completion</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1334730</commentid>
    <comment_count>1</comment_count>
      <attachid>317109</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-08-03 03:50:42 -0700</bug_when>
    <thetext>Created attachment 317109
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1334732</commentid>
    <comment_count>2</comment_count>
      <attachid>317109</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-08-03 03:53:12 -0700</bug_when>
    <thetext>Comment on attachment 317109
Patch

ok, ready.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1334735</commentid>
    <comment_count>3</comment_count>
      <attachid>317109</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2017-08-03 04:10:23 -0700</bug_when>
    <thetext>Comment on attachment 317109
Patch

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

&gt; Source/WTF/wtf/ThreadingPthreads.cpp:89
&gt; +    Semaphore(unsigned initialValue)

explicit?

&gt; Source/WTF/wtf/ThreadingPthreads.cpp:92
&gt; +        int sharedBetweenProcesses = 0;
&gt; +        sem_init(&amp;m_platformSemaphore, sharedBetweenProcesses, initialValue);

Do we really need a local variable? or is it to document what that 0 means?

&gt; Source/WTF/wtf/ThreadingPthreads.cpp:202
&gt; +    globalSemaphoreForSuspendResume.construct(0);

This is the only place it&apos;s constructed and we always pass 0 as initial value, right?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1334736</commentid>
    <comment_count>4</comment_count>
      <attachid>317109</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-08-03 04:13:20 -0700</bug_when>
    <thetext>Comment on attachment 317109
Patch

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

&gt;&gt; Source/WTF/wtf/ThreadingPthreads.cpp:89
&gt;&gt; +    Semaphore(unsigned initialValue)
&gt; 
&gt; explicit?

Yeah, nice. Fixed.

&gt;&gt; Source/WTF/wtf/ThreadingPthreads.cpp:92
&gt;&gt; +        sem_init(&amp;m_platformSemaphore, sharedBetweenProcesses, initialValue);
&gt; 
&gt; Do we really need a local variable? or is it to document what that 0 means?

Yes, it is to document what that 0 means.

&gt;&gt; Source/WTF/wtf/ThreadingPthreads.cpp:202
&gt;&gt; +    globalSemaphoreForSuspendResume.construct(0);
&gt; 
&gt; This is the only place it&apos;s constructed and we always pass 0 as initial value, right?

Right. initializePlatformThreading() is called from initializeThreading(). And its content is guarded by call_once.
Thus, this construction only happens once. And it should be done before using Threading. (initializeThreading() calls this function and constructs this semaphore.).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1334737</commentid>
    <comment_count>5</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-08-03 04:17:49 -0700</bug_when>
    <thetext>Committed r220201: &lt;http://trac.webkit.org/changeset/220201&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1334738</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-08-03 04:18:23 -0700</bug_when>
    <thetext>&lt;rdar://problem/33697497&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>317109</attachid>
            <date>2017-08-03 03:50:42 -0700</date>
            <delta_ts>2017-08-03 04:10:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-175124-20170803195041.patch</filename>
            <type>text/plain</type>
            <size>8215</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIwMTk5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDE5NzkyN2ZkYjgyYmQ5NDU5MWFhMDQ0
ZDJmOTIzOWJjMGZmZTFkMzguLjUzZTVkNjM3Yjg0YzY1MjIzNzAxNDNiZDU5MjJkN2M2MjhjNDFl
MzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDUgKzEsMzQgQEAKIDIwMTctMDgtMDMgIFl1c3VrZSBTdXp1a2kgIDx1dGF0
YW5lLnRlYUBnbWFpbC5jb20+CiAKKyAgICAgICAgW0xpbnV4XVtXVEZdIFVzZSBvbmUgZ2xvYmFs
IHNlbWFwaG9yZSB0byBub3RpZnkgdGhyZWFkIHN1c3BlbmQgYW5kIHJlc3VtZSBjb21wbGV0aW9u
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzUxMjQK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQT1NJWCBz
ZW1fdCBpcyB1c2VkIHRvIG5vdGlmeSB0aHJlYWQgc3VzcGVuZCBhbmQgcmVzdW1lIGNvbXBsZXRp
b24gaW4gTGludXggcG9ydHMKKyAgICAgICAgc2luY2Ugc2VtX3Bvc3QgaXMgYXN5bmMtc2lnbmFs
LXNhZmUgZnVuY3Rpb24uIFNpbmNlIHdlIGd1YXJkIHN1c3BlbmQoKSBhbmQgcmVzdW1lKCkKKyAg
ICAgICAgd2l0aCBvbmUgZ2xvYmFsIGxvY2ssIHRoaXMgc2VtYXBob3JlIGlzIGFsc28gZ3VhcmRl
ZCBieSB0aGlzIGxvY2suIFNvIHdlIGRvIG5vdCBuZWVkCisgICAgICAgIHRvIGhhdmUgc2VtYXBo
b3JlIHBlciBXVEY6OlRocmVhZC4KKworICAgICAgICBUaGlzIHBhdGNoIGludHJvZHVjZXMgb25l
IGdsb2JhbCBTZW1hcGhvcmUuIEFuZCBkcm9wIHBlciB0aHJlYWQgc2VtYXBob3JlLgorCisgICAg
ICAgICogd3RmL1RocmVhZGluZy5oOgorICAgICAgICAqIHd0Zi9UaHJlYWRpbmdQdGhyZWFkcy5j
cHA6CisgICAgICAgIChXVEY6OlRocmVhZDo6flRocmVhZCk6CisgICAgICAgIChXVEY6OlNlbWFw
aG9yZTo6U2VtYXBob3JlKToKKyAgICAgICAgKFdURjo6U2VtYXBob3JlOjp+U2VtYXBob3JlKToK
KyAgICAgICAgKFdURjo6U2VtYXBob3JlOjp3YWl0KToKKyAgICAgICAgKFdURjo6U2VtYXBob3Jl
Ojpwb3N0KToKKyAgICAgICAgKFdURjo6VGhyZWFkOjpzaWduYWxIYW5kbGVyU3VzcGVuZFJlc3Vt
ZSk6CisgICAgICAgIChXVEY6OlRocmVhZDo6aW5pdGlhbGl6ZVBsYXRmb3JtVGhyZWFkaW5nKToK
KyAgICAgICAgKFdURjo6VGhyZWFkOjpzdXNwZW5kKToKKyAgICAgICAgKFdURjo6VGhyZWFkOjpy
ZXN1bWUpOgorICAgICAgICAoV1RGOjpUaHJlYWQ6OlRocmVhZCk6IERlbGV0ZWQuCisgICAgICAg
ICogd3RmL1RocmVhZGluZ1dpbi5jcHA6CisgICAgICAgIChXVEY6OlRocmVhZDo6VGhyZWFkKTog
RGVsZXRlZC4KKworMjAxNy0wOC0wMyAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKwogICAgICAgICBbTGludXhdW1dURl0gUmVkdWNlIHNpemVvZihXVEY6OlRocmVhZCkg
YnkgdXNpbmcgYSBwb2ludGVyIHRvIFBsYXRmb3JtUmVnaXN0ZXJzCiAgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzUxMTkKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvVGhyZWFkaW5nLmggYi9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmcuaAppbmRl
eCA5Mzg0MmU2ZTFjY2I3ZWNiNWQxZjUzNjhhMzFhOWFhOTcyMmY1MmQxLi4zMjVlNmFiNzNmODZm
ZjJiOGYxYmY2NWFhYWU2ZjI2MTg3YWEzN2I5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9U
aHJlYWRpbmcuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmcuaApAQCAtNDUsNyArNDUs
NiBAQAogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogI2lmIFVTRShQVEhSRUFEUykgJiYgIU9T
KERBUldJTikKLSNpbmNsdWRlIDxzZW1hcGhvcmUuaD4KICNpbmNsdWRlIDxzaWduYWwuaD4KICNl
bmRpZgogCkBAIC0xOTEsNyArMTkwLDcgQEAgY2xhc3MgVGhyZWFkIDogcHVibGljIFRocmVhZFNh
ZmVSZWZDb3VudGVkPFRocmVhZD4gewogICAgIHN0cnVjdCBOZXdUaHJlYWRDb250ZXh0OwogICAg
IHN0YXRpYyB2b2lkIGVudHJ5UG9pbnQoTmV3VGhyZWFkQ29udGV4dCopOwogcHJvdGVjdGVkOgot
ICAgIFRocmVhZCgpOworICAgIFRocmVhZCgpID0gZGVmYXVsdDsKIAogICAgIHN0YXRpYyBSZWY8
VGhyZWFkPiBjcmVhdGVDdXJyZW50VGhyZWFkKCk7CiAgICAgdm9pZCBpbml0aWFsaXplSW5UaHJl
YWQoKTsKQEAgLTIxMSw3ICsyMTAsNyBAQCBjbGFzcyBUaHJlYWQgOiBwdWJsaWMgVGhyZWFkU2Fm
ZVJlZkNvdW50ZWQ8VGhyZWFkPiB7CiAKICAgICBzdGF0aWMgY29uc3QgY2hhciogbm9ybWFsaXpl
VGhyZWFkTmFtZShjb25zdCBjaGFyKiB0aHJlYWROYW1lKTsKIAotICAgIGVudW0gSm9pbmFibGVT
dGF0ZSB7CisgICAgZW51bSBKb2luYWJsZVN0YXRlIDogdWludDhfdCB7CiAgICAgICAgIC8vIFRo
ZSBkZWZhdWx0IHRocmVhZCBzdGF0ZS4gVGhlIHRocmVhZCBjYW4gYmUgam9pbmVkIG9uLgogICAg
ICAgICBKb2luYWJsZSwKIApAQCAtMjM5LDE1ICsyMzgsMTQgQEAgY2xhc3MgVGhyZWFkIDogcHVi
bGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFRocmVhZD4gewogICAgIHN0ZDo6bXV0ZXggbV9tdXRl
eDsKICAgICBUaHJlYWRJZGVudGlmaWVyIG1faWQgeyAwIH07CiAgICAgSm9pbmFibGVTdGF0ZSBt
X2pvaW5hYmxlU3RhdGUgeyBKb2luYWJsZSB9OwotICAgIFN0YWNrQm91bmRzIG1fc3RhY2sgeyBT
dGFja0JvdW5kczo6ZW1wdHlCb3VuZHMoKSB9OwotICAgIFZlY3RvcjxzdGQ6OndlYWtfcHRyPFRo
cmVhZEdyb3VwPj4gbV90aHJlYWRHcm91cHM7CiAgICAgYm9vbCBtX2lzU2h1dHRpbmdEb3duIHsg
ZmFsc2UgfTsKICAgICBib29sIG1fZGlkRXhpdCB7IGZhbHNlIH07CisgICAgU3RhY2tCb3VuZHMg
bV9zdGFjayB7IFN0YWNrQm91bmRzOjplbXB0eUJvdW5kcygpIH07CisgICAgVmVjdG9yPHN0ZDo6
d2Vha19wdHI8VGhyZWFkR3JvdXA+PiBtX3RocmVhZEdyb3VwczsKICAgICBQbGF0Zm9ybVRocmVh
ZEhhbmRsZSBtX2hhbmRsZTsKICNpZiBPUyhEQVJXSU4pCiAgICAgbWFjaF9wb3J0X3QgbV9wbGF0
Zm9ybVRocmVhZDsKICNlbGlmIFVTRShQVEhSRUFEUykKLSAgICBzZW1fdCBtX3NlbWFwaG9yZUZv
clN1c3BlbmRSZXN1bWU7CiAgICAgUGxhdGZvcm1SZWdpc3RlcnMqIG1fcGxhdGZvcm1SZWdpc3Rl
cnMgeyBudWxscHRyIH07CiAgICAgdW5zaWduZWQgbV9zdXNwZW5kQ291bnQgeyAwIH07CiAgICAg
c3RkOjphdG9taWM8Ym9vbD4gbV9zdXNwZW5kZWQgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvVGhyZWFkaW5nUHRocmVhZHMuY3BwIGIvU291cmNlL1dURi93dGYvVGhyZWFk
aW5nUHRocmVhZHMuY3BwCmluZGV4IGIyYWM5MWIxOWZiMTVlNWE3NzNmYTU4ZDRmOWJkNzgwY2Fh
ZTlmMDEuLmU5MDgyZTM5NWJlMWU5MGNjZDE2ZTY4MjIzNGMyMWU3ZGYzNzBmZWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XVEYvd3RmL1RocmVhZGluZ1B0aHJlYWRzLmNwcAorKysgYi9Tb3VyY2UvV1RG
L3d0Zi9UaHJlYWRpbmdQdGhyZWFkcy5jcHAKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlIDxl
cnJuby5oPgogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgogI2luY2x1ZGUgPHd0Zi9EYXRh
TG9nLmg+CisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL1Jh
d1BvaW50ZXIuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3Rm
L1RocmVhZEdyb3VwLmg+CkBAIC01Niw2ICs1Nyw3IEBACiAKICNpZiAhT1MoREFSV0lOKSAmJiBP
UyhVTklYKQogCisjaW5jbHVkZSA8c2VtYXBob3JlLmg+CiAjaW5jbHVkZSA8c3lzL21tYW4uaD4K
ICNpbmNsdWRlIDx1bmlzdGQuaD4KIApAQCAtNzUsMjEgKzc3LDQwIEBAIG5hbWVzcGFjZSBXVEYg
ewogCiBzdGF0aWMgU3RhdGljTG9jayBnbG9iYWxTdXNwZW5kTG9jazsKIAotVGhyZWFkOjpUaHJl
YWQoKQotewotI2lmICFPUyhEQVJXSU4pCi0gICAgc2VtX2luaXQoJm1fc2VtYXBob3JlRm9yU3Vz
cGVuZFJlc3VtZSwgLyogT25seSBhdmFpbGFibGUgaW4gdGhpcyBwcm9jZXNzLiAqLyAwLCAvKiBJ
bml0aWFsIHZhbHVlIGZvciB0aGUgc2VtYXBob3JlLiAqLyAwKTsKLSNlbmRpZgotfQotCiBUaHJl
YWQ6On5UaHJlYWQoKQogewotI2lmICFPUyhEQVJXSU4pCi0gICAgc2VtX2Rlc3Ryb3koJm1fc2Vt
YXBob3JlRm9yU3VzcGVuZFJlc3VtZSk7Ci0jZW5kaWYKIH0KIAogI2lmICFPUyhEQVJXSU4pCitj
bGFzcyBTZW1hcGhvcmUgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFNlbWFwaG9yZSk7Cisg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgU2VtYXBob3JlKHVuc2ln
bmVkIGluaXRpYWxWYWx1ZSkKKyAgICB7CisgICAgICAgIGludCBzaGFyZWRCZXR3ZWVuUHJvY2Vz
c2VzID0gMDsKKyAgICAgICAgc2VtX2luaXQoJm1fcGxhdGZvcm1TZW1hcGhvcmUsIHNoYXJlZEJl
dHdlZW5Qcm9jZXNzZXMsIGluaXRpYWxWYWx1ZSk7CisgICAgfQorCisgICAgflNlbWFwaG9yZSgp
CisgICAgeworICAgICAgICBzZW1fZGVzdHJveSgmbV9wbGF0Zm9ybVNlbWFwaG9yZSk7CisgICAg
fQorCisgICAgdm9pZCB3YWl0KCkKKyAgICB7CisgICAgICAgIHNlbV93YWl0KCZtX3BsYXRmb3Jt
U2VtYXBob3JlKTsKKyAgICB9CisKKyAgICB2b2lkIHBvc3QoKQorICAgIHsKKyAgICAgICAgc2Vt
X3Bvc3QoJm1fcGxhdGZvcm1TZW1hcGhvcmUpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBzZW1f
dCBtX3BsYXRmb3JtU2VtYXBob3JlOworfTsKK3N0YXRpYyBMYXp5TmV2ZXJEZXN0cm95ZWQ8U2Vt
YXBob3JlPiBnbG9iYWxTZW1hcGhvcmVGb3JTdXNwZW5kUmVzdW1lOwogCiAvLyBXZSB1c2UgU0lH
VVNSMSB0byBzdXNwZW5kIGFuZCByZXN1bWUgbWFjaGluZSB0aHJlYWRzIGluIEphdmFTY3JpcHRD
b3JlLgogc3RhdGljIGNvbnN0ZXhwciBjb25zdCBpbnQgU2lnVGhyZWFkU3VzcGVuZFJlc3VtZSA9
IFNJR1VTUjE7CkBAIC0xNTYsOSArMTc3LDkgQEAgdm9pZCBUaHJlYWQ6OnNpZ25hbEhhbmRsZXJT
dXNwZW5kUmVzdW1lKGludCwgc2lnaW5mb190Kiwgdm9pZCogdWNvbnRleHQpCiAgICAgLy8gc2Vt
X3Bvc3QgaXMgYXN5bmMtc2lnbmFsLXNhZmUgZnVuY3Rpb24uIEl0IG1lYW5zIHRoYXQgd2UgY2Fu
IGNhbGwgdGhpcyBmcm9tIGEgc2lnbmFsIGhhbmRsZXIuCiAgICAgLy8gaHR0cDovL3B1YnMub3Bl
bmdyb3VwLm9yZy9vbmxpbmVwdWJzLzAwOTY5NTM5OS9mdW5jdGlvbnMveHNoX2NoYXAwMl8wNC5o
dG1sI3RhZ18wMl8wNF8wMwogICAgIC8vCi0gICAgLy8gQW5kIHNlbV9wb3N0IGVtaXRzIG1lbW9y
eSBiYXJyaWVyIHRoYXQgZW5zdXJlcyB0aGF0IHN1c3BlbmRlZE1hY2hpbmVDb250ZXh0IGlzIGNv
cnJlY3RseSBzYXZlZC4KKyAgICAvLyBBbmQgc2VtX3Bvc3QgZW1pdHMgbWVtb3J5IGJhcnJpZXIg
dGhhdCBlbnN1cmVzIHRoYXQgUGxhdGZvcm1SZWdpc3RlcnMgYXJlIGNvcnJlY3RseSBzYXZlZC4K
ICAgICAvLyBodHRwOi8vcHVicy5vcGVuZ3JvdXAub3JnL29ubGluZXB1YnMvOTY5OTkxOTc5OS9i
YXNlZGVmcy9WMV9jaGFwMDQuaHRtbCN0YWdfMDRfMTEKLSAgICBzZW1fcG9zdCgmdGhyZWFkLT5t
X3NlbWFwaG9yZUZvclN1c3BlbmRSZXN1bWUpOworICAgIGdsb2JhbFNlbWFwaG9yZUZvclN1c3Bl
bmRSZXN1bWUtPnBvc3QoKTsKIAogICAgIC8vIFJlYWNoaW5nIGhlcmUsIFNpZ1RocmVhZFN1c3Bl
bmRSZXN1bWUgaXMgYmxvY2tlZCBpbiB0aGlzIGhhbmRsZXIgKHRoaXMgaXMgY29uZmlndXJlZCBi
eSBzaWdhY3Rpb24ncyBzYV9tYXNrKS4KICAgICAvLyBTbyBiZWZvcmUgY2FsbGluZyBzaWdzdXNw
ZW5kLCBTaWdUaHJlYWRTdXNwZW5kUmVzdW1lIHRvIHRoaXMgdGhyZWFkIGlzIGRlZmVycmVkLiBU
aGlzIGVuc3VyZXMgdGhhdCB0aGUgaGFuZGxlciBpcyBub3QgZXhlY3V0ZWQgcmVjdXJzaXZlbHku
CkBAIC0xNzAsNyArMTkxLDcgQEAgdm9pZCBUaHJlYWQ6OnNpZ25hbEhhbmRsZXJTdXNwZW5kUmVz
dW1lKGludCwgc2lnaW5mb190Kiwgdm9pZCogdWNvbnRleHQpCiAgICAgdGhyZWFkLT5tX3BsYXRm
b3JtUmVnaXN0ZXJzID0gbnVsbHB0cjsKIAogICAgIC8vIEFsbG93IHJlc3VtZSBjYWxsZXIgdG8g
c2VlIHRoYXQgdGhpcyB0aHJlYWQgaXMgcmVzdW1lZC4KLSAgICBzZW1fcG9zdCgmdGhyZWFkLT5t
X3NlbWFwaG9yZUZvclN1c3BlbmRSZXN1bWUpOworICAgIGdsb2JhbFNlbWFwaG9yZUZvclN1c3Bl
bmRSZXN1bWUtPnBvc3QoKTsKIH0KIAogI2VuZGlmIC8vICFPUyhEQVJXSU4pCkBAIC0xNzgsNiAr
MTk5LDggQEAgdm9pZCBUaHJlYWQ6OnNpZ25hbEhhbmRsZXJTdXNwZW5kUmVzdW1lKGludCwgc2ln
aW5mb190Kiwgdm9pZCogdWNvbnRleHQpCiB2b2lkIFRocmVhZDo6aW5pdGlhbGl6ZVBsYXRmb3Jt
VGhyZWFkaW5nKCkKIHsKICNpZiAhT1MoREFSV0lOKQorICAgIGdsb2JhbFNlbWFwaG9yZUZvclN1
c3BlbmRSZXN1bWUuY29uc3RydWN0KDApOworCiAgICAgLy8gU2lnbmFsIGhhbmRsZXJzIGFyZSBw
cm9jZXNzIGdsb2JhbCBjb25maWd1cmF0aW9uLgogICAgIC8vIEludGVudGlvbmFsbHkgYmxvY2sg
U2lnVGhyZWFkU3VzcGVuZFJlc3VtZSBpbiB0aGUgaGFuZGxlci4KICAgICAvLyBTaWdUaHJlYWRT
dXNwZW5kUmVzdW1lIHdpbGwgYmUgYWxsb3dlZCBpbiB0aGUgaGFuZGxlciBieSBzaWdzdXNwZW5k
LgpAQCAtMzQzLDcgKzM2Niw3IEBAIGF1dG8gVGhyZWFkOjpzdXNwZW5kKCkgLT4gRXhwZWN0ZWQ8
dm9pZCwgUGxhdGZvcm1TdXNwZW5kRXJyb3I+CiAgICAgICAgIGludCByZXN1bHQgPSBwdGhyZWFk
X2tpbGwobV9oYW5kbGUsIFNpZ1RocmVhZFN1c3BlbmRSZXN1bWUpOwogICAgICAgICBpZiAocmVz
dWx0KQogICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKHJlc3VsdCk7Ci0gICAgICAg
IHNlbV93YWl0KCZtX3NlbWFwaG9yZUZvclN1c3BlbmRSZXN1bWUpOworICAgICAgICBnbG9iYWxT
ZW1hcGhvcmVGb3JTdXNwZW5kUmVzdW1lLT53YWl0KCk7CiAgICAgICAgIC8vIFJlbGVhc2UgYmFy
cmllciBlbnN1cmVzIHRoYXQgdGhpcyBvcGVyYXRpb24gaXMgYWx3YXlzIGV4ZWN1dGVkIGFmdGVy
IGFsbCB0aGUgYWJvdmUgcHJvY2Vzc2luZyBpcyBkb25lLgogICAgICAgICBtX3N1c3BlbmRlZC5z
dG9yZSh0cnVlLCBzdGQ6Om1lbW9yeV9vcmRlcl9yZWxlYXNlKTsKICAgICB9CkBAIC0zNzAsNyAr
MzkzLDcgQEAgdm9pZCBUaHJlYWQ6OnJlc3VtZSgpCiAgICAgICAgIHRhcmdldFRocmVhZC5zdG9y
ZSh0aGlzKTsKICAgICAgICAgaWYgKHB0aHJlYWRfa2lsbChtX2hhbmRsZSwgU2lnVGhyZWFkU3Vz
cGVuZFJlc3VtZSkgPT0gRVNSQ0gpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIHNlbV93
YWl0KCZtX3NlbWFwaG9yZUZvclN1c3BlbmRSZXN1bWUpOworICAgICAgICBnbG9iYWxTZW1hcGhv
cmVGb3JTdXNwZW5kUmVzdW1lLT53YWl0KCk7CiAgICAgICAgIC8vIFJlbGVhc2UgYmFycmllciBl
bnN1cmVzIHRoYXQgdGhpcyBvcGVyYXRpb24gaXMgYWx3YXlzIGV4ZWN1dGVkIGFmdGVyIGFsbCB0
aGUgYWJvdmUgcHJvY2Vzc2luZyBpcyBkb25lLgogICAgICAgICBtX3N1c3BlbmRlZC5zdG9yZShm
YWxzZSwgc3RkOjptZW1vcnlfb3JkZXJfcmVsZWFzZSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvVGhyZWFkaW5nV2luLmNwcCBiL1NvdXJjZS9XVEYvd3RmL1RocmVhZGluZ1dp
bi5jcHAKaW5kZXggNTVhYmIzZDYzYjRlYzI0ZmJlZDFiODZjMzMyOTlmODBiMjQyOTUzNS4uY2Rm
ZWMzMGE5YmMzYmVkYjRiMjk5OTViZjgyZDQ1M2RmNzg5ZDhjNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi93dGYvVGhyZWFkaW5nV2luLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmdX
aW4uY3BwCkBAIC0xMDMsMTAgKzEwMyw2IEBAIG5hbWVzcGFjZSBXVEYgewogCiBzdGF0aWMgU3Rh
dGljTG9jayBnbG9iYWxTdXNwZW5kTG9jazsKIAotVGhyZWFkOjpUaHJlYWQoKQotewotfQotCiBU
aHJlYWQ6On5UaHJlYWQoKQogewogICAgIC8vIEl0IGlzIE9LIGJlY2F1c2UgRkxTQWxsb2MncyBj
YWxsYmFjayB3aWxsIGJlIGNhbGxlZCBldmVuIGJlZm9yZSB0aGVyZSBhcmUgc29tZSBvcGVuIGhh
bmRsZXMuCg==
</data>
<flag name="review"
          id="337704"
          type_id="1"
          status="+"
          setter="cgarcia"
    />
          </attachment>
      

    </bug>

</bugzilla>