<?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>85799</bug_id>
          
          <creation_ts>2012-05-07 06:40:37 -0700</creation_ts>
          <short_desc>IconDatabase: Move icon retain/release off of the main thread.</short_desc>
          <delta_ts>2012-05-18 07:24:20 -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>Page Loading</component>
          <version>528+ (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>
          <dependson>86854</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Andreas Kling">kling</reporter>
          <assigned_to name="Andreas Kling">kling</assigned_to>
          <cc>beidson</cc>
    
    <cc>japhet</cc>
    
    <cc>levin+threading</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>617569</commentid>
    <comment_count>0</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2012-05-07 06:40:37 -0700</bug_when>
    <thetext>&lt;rdar://problem/9507113&gt;

We&apos;re seeing quite a few spins below IconDatabase::retainIconForPageURL(), we should avoid blocking the main thread on this operation (and its release sibling.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>624762</commentid>
    <comment_count>1</comment_count>
      <attachid>142104</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2012-05-15 17:23:03 -0700</bug_when>
    <thetext>Created attachment 142104
Patch

Here&apos;s one way we can do this- batch up the retain/release operations and execute them on the sync thread.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>626892</commentid>
    <comment_count>2</comment_count>
      <attachid>142104</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2012-05-17 13:06:51 -0700</bug_when>
    <thetext>Comment on attachment 142104
Patch

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

&gt; Source/WebCore/loader/icon/IconDatabase.cpp:1513
&gt; +
&gt; +    // NOTE: The caller is assumed to hold m_urlAndIconLock.
&gt; +

In the past I thought we had a way to ASSERT this.

Do we still?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>627005</commentid>
    <comment_count>3</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2012-05-17 14:49:10 -0700</bug_when>
    <thetext>Committed r117501: &lt;http://trac.webkit.org/changeset/117501&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>142104</attachid>
            <date>2012-05-15 17:23:03 -0700</date>
            <delta_ts>2012-05-17 13:06:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-85799.diff</filename>
            <type>text/plain</type>
            <size>13125</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBiNDE2MWJkLi5iNjY4YWUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDYg
QEAKKzIwMTItMDUtMTUgIEFuZHJlYXMgS2xpbmcgIDxrbGluZ0B3ZWJraXQub3JnPgorCisgICAg
ICAgIEljb25EYXRhYmFzZTogTW92ZSBpY29uIHJldGFpbi9yZWxlYXNlIG9mZiBvZiB0aGUgbWFp
biB0aHJlYWQuCisgICAgICAgIDxodHRwOi8vd2Via2l0Lm9yZy9iLzg1Nzk5PgorICAgICAgICA8
cmRhcjovL3Byb2JsZW0vOTUwNzExMz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBCYXRjaCB1cCB0aGUgcmV0YWluL3JlbGVhc2Ugb3BlcmF0aW9ucyBh
bmQgZXhlY3V0ZSB0aGVtIGFzIHBhcnQgb2YgdGhlIHN5bmMgdGhyZWFkIGxvb3AuCisgICAgICAg
IFRoZSBiYXRjaCBleGVjdXRpb24gaXMgZ3VhcmRlZCBieSBhIG5ldyBtdXRleCAobV91cmxzVG9S
ZXRhaW5PclJlbGVhc2VMb2NrLikKKyAgICAgICAgVGhpcyBhdm9pZHMgYmxvY2tpbmcgdGhlIG1h
aW4gdGhyZWFkIG9uIG1fdXJsQW5kSWNvbkxvY2sgZm9yIGJhc2ljIHJldGFpbi9yZWxlYXNlLgor
CisgICAgICAgIFRoZXJlIGlzIG9uZSBleGNlcHRpb247IGlmIHRoZXJlIGFyZSBwZW5kaW5nIHJl
dGFpbi9yZWxlYXNlIG9wZXJhdGlvbnMgaW4gc3luY2hyb25vdXNJY29uRm9yUGFnZVVSTCwKKyAg
ICAgICAgaXQgd2lsbCBhY3F1aXJlIHRoZSBsb2NrIGFuZCBmbHVzaCB0aGUgb3BlcmF0aW9ucy4K
KworICAgICAgICBUaGVyZSBzaG91bGQgYmUgbm8gYmVoYXZpb3IgY2hhbmdlLCB0aGlzIGlzIG9u
bHkgbWVhbnQgdG8gcmVkdWNlIGxvY2sgY29udGVudGlvbi4KKworICAgICAgICAqIGxvYWRlci9p
Y29uL1BhZ2VVUkxSZWNvcmQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VVUkxSZWNvcmQ6OnJl
dGFpbik6CisgICAgICAgIChXZWJDb3JlOjpQYWdlVVJMUmVjb3JkOjpyZWxlYXNlKToKKworICAg
ICAgICAgICAgQWRkZWQgYSAnY291bnQnIGFyZ3VtZW50IHRvIHRoZXNlIHNvIHdlIGNhbiBiYXRj
aCB1cCB0aGUgb3BlcmF0aW9ucyBpbiBJY29uRGF0YWJhc2UuCisKKyAgICAgICAgKiBsb2FkZXIv
aWNvbi9JY29uRGF0YWJhc2UuaDoKKyAgICAgICAgKiBsb2FkZXIvaWNvbi9JY29uRGF0YWJhc2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SWNvbkRhdGFiYXNlOjpwZXJmb3JtU2NoZWR1bGVPckRl
ZmVyU3luY1RpbWVyKToKKyAgICAgICAgKFdlYkNvcmU6Okljb25EYXRhYmFzZTo6cGVyZm9ybVNj
aGVkdWxlT3JEZWZlclN5bmNUaW1lck9uTWFpblRocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpJ
Y29uRGF0YWJhc2U6OnNjaGVkdWxlT3JEZWZlclN5bmNUaW1lcik6CisKKyAgICAgICAgICAgIFBl
cmZvcm0gdGhlIHRoZSB0aW1lciBzY2hlZHVsaW5nIG9uIHRoZSBtYWluIHRocmVhZCBhcyBpdCBj
YW4gYmUgZG9uZSBvbiBhIGRpZmZlcmVudAorICAgICAgICAgICAgdGhyZWFkIGJ5IHdheSBvZiBy
ZXRhaW5JY29uRm9yUGFnZVVSTCBvciByZWxlYXNlSWNvbkZvclBhZ2VVUkwuCisKKyAgICAgICAg
KFdlYkNvcmU6Okljb25EYXRhYmFzZTo6c3luY2hyb25vdXNJY29uRm9yUGFnZVVSTCk6CisgICAg
ICAgIChXZWJDb3JlOjpJY29uRGF0YWJhc2U6OnJldGFpbkljb25Gb3JQYWdlVVJMKToKKyAgICAg
ICAgKFdlYkNvcmU6Okljb25EYXRhYmFzZTo6cGVyZm9ybVJldGFpbkljb25Gb3JQYWdlVVJMKToK
KyAgICAgICAgKFdlYkNvcmU6Okljb25EYXRhYmFzZTo6cmVsZWFzZUljb25Gb3JQYWdlVVJMKToK
KyAgICAgICAgKFdlYkNvcmU6Okljb25EYXRhYmFzZTo6cGVyZm9ybVJlbGVhc2VJY29uRm9yUGFn
ZVVSTCk6CisgICAgICAgIChXZWJDb3JlOjpJY29uRGF0YWJhc2U6OnJldGFpbmVkUGFnZVVSTENv
dW50KToKKyAgICAgICAgKFdlYkNvcmU6Okljb25EYXRhYmFzZTo6SWNvbkRhdGFiYXNlKToKKyAg
ICAgICAgKFdlYkNvcmU6Okljb25EYXRhYmFzZTo6cGVyZm9ybVVSTEltcG9ydCk6CisgICAgICAg
IChXZWJDb3JlOjpJY29uRGF0YWJhc2U6OnN5bmNUaHJlYWRNYWluTG9vcCk6CisgICAgICAgIChX
ZWJDb3JlOjpJY29uRGF0YWJhc2U6OnBlcmZvcm1QZW5kaW5nUmV0YWluQW5kUmVsZWFzZU9wZXJh
dGlvbnMpOgorCiAyMDEyLTA1LTE1ICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5j
b20+CiAKICAgICAgICAgVXNlIHVuYWNjZWxlcmF0ZWQgc2Nyb2xsaW5nIGRlbHRhcyB3aGVuIHJ1
YmJlci1iYW5kaW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29u
RGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkRhdGFiYXNlLmNw
cAppbmRleCA2ZTk3YzAyLi42ZGFiNTg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvaWNvbi9JY29uRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29u
L0ljb25EYXRhYmFzZS5jcHAKQEAgLTIyMiw2ICsyMjIsOSBAQCBJbWFnZSogSWNvbkRhdGFiYXNl
OjpzeW5jaHJvbm91c0ljb25Gb3JQYWdlVVJMKGNvbnN0IFN0cmluZyYgcGFnZVVSTE9yaWdpbmFs
LCBjbwogICAgICAgICByZXR1cm4gMDsKIAogICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX3VybEFu
ZEljb25Mb2NrKTsKKworICAgIGlmIChtX3JldGFpbk9yUmVsZWFzZUljb25SZXF1ZXN0ZWQpCisg
ICAgICAgIHBlcmZvcm1QZW5kaW5nUmV0YWluQW5kUmVsZWFzZU9wZXJhdGlvbnMoKTsKICAgICAK
ICAgICBTdHJpbmcgcGFnZVVSTENvcHk7IC8vIENyZWF0ZXMgYSBudWxsIHN0cmluZyBmb3IgZWFz
eSB0ZXN0aW5nCiAgICAgCkBAIC0zODksMTggKzM5MiwyMCBAQCBJbWFnZSogSWNvbkRhdGFiYXNl
OjpkZWZhdWx0SWNvbihjb25zdCBJbnRTaXplJiBzaXplKQogICAgIHJldHVybiBtX2RlZmF1bHRJ
Y29uUmVjb3JkLT5pbWFnZShzaXplKTsKIH0KIAotCi12b2lkIEljb25EYXRhYmFzZTo6cmV0YWlu
SWNvbkZvclBhZ2VVUkwoY29uc3QgU3RyaW5nJiBwYWdlVVJMT3JpZ2luYWwpCi17ICAgIAordm9p
ZCBJY29uRGF0YWJhc2U6OnJldGFpbkljb25Gb3JQYWdlVVJMKGNvbnN0IFN0cmluZyYgcGFnZVVS
TCkKK3sKICAgICBBU1NFUlRfTk9UX1NZTkNfVEhSRUFEKCk7Ci0gICAgCi0gICAgLy8gQ2Fubm90
IGRvIGFueXRoaW5nIHdpdGggcGFnZVVSTE9yaWdpbmFsIHRoYXQgd291bGQgZW5kIHVwIHN0b3Jp
bmcgaXQgd2l0aG91dCBkZWVwIGNvcHlpbmcgZmlyc3QKLSAgICAKLSAgICBpZiAoIWlzRW5hYmxl
ZCgpIHx8ICFkb2N1bWVudENhbkhhdmVJY29uKHBhZ2VVUkxPcmlnaW5hbCkpCisKKyAgICBpZiAo
IWlzRW5hYmxlZCgpIHx8ICFkb2N1bWVudENhbkhhdmVJY29uKHBhZ2VVUkwpKQogICAgICAgICBy
ZXR1cm47CiAgICAgICAgCi0gICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fdXJsQW5kSWNvbkxvY2sp
OworICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX3VybHNUb1JldGFpbk9yUmVsZWFzZUxvY2spOwor
ICAgIG1fdXJsc1RvUmV0YWluLmFkZChwYWdlVVJMKTsKKyAgICBzY2hlZHVsZU9yRGVmZXJTeW5j
VGltZXIoKTsKK30KIAordm9pZCBJY29uRGF0YWJhc2U6OnBlcmZvcm1SZXRhaW5JY29uRm9yUGFn
ZVVSTChjb25zdCBTdHJpbmcmIHBhZ2VVUkxPcmlnaW5hbCwgaW50IHJldGFpbkNvdW50KQorewog
ICAgIFBhZ2VVUkxSZWNvcmQqIHJlY29yZCA9IG1fcGFnZVVSTFRvUmVjb3JkTWFwLmdldChwYWdl
VVJMT3JpZ2luYWwpOwogICAgIAogICAgIFN0cmluZyBwYWdlVVJMOwpAQCAtNDEyLDcgKzQxNyw3
IEBAIHZvaWQgSWNvbkRhdGFiYXNlOjpyZXRhaW5JY29uRm9yUGFnZVVSTChjb25zdCBTdHJpbmcm
IHBhZ2VVUkxPcmlnaW5hbCkKICAgICAgICAgbV9wYWdlVVJMVG9SZWNvcmRNYXAuc2V0KHBhZ2VV
UkwsIHJlY29yZCk7CiAgICAgfQogICAgIAotICAgIGlmICghcmVjb3JkLT5yZXRhaW4oKSkgewor
ICAgIGlmICghcmVjb3JkLT5yZXRhaW4ocmV0YWluQ291bnQpKSB7CiAgICAgICAgIGlmIChwYWdl
VVJMLmlzTnVsbCgpKQogICAgICAgICAgICAgcGFnZVVSTCA9IHBhZ2VVUkxPcmlnaW5hbC5pc29s
YXRlZENvcHkoKTsKIApAQCAtNDM0LDE3ICs0MzksMjMgQEAgdm9pZCBJY29uRGF0YWJhc2U6OnJl
dGFpbkljb25Gb3JQYWdlVVJMKGNvbnN0IFN0cmluZyYgcGFnZVVSTE9yaWdpbmFsKQogICAgIH0K
IH0KIAotdm9pZCBJY29uRGF0YWJhc2U6OnJlbGVhc2VJY29uRm9yUGFnZVVSTChjb25zdCBTdHJp
bmcmIHBhZ2VVUkxPcmlnaW5hbCkKK3ZvaWQgSWNvbkRhdGFiYXNlOjpyZWxlYXNlSWNvbkZvclBh
Z2VVUkwoY29uc3QgU3RyaW5nJiBwYWdlVVJMKQogewogICAgIEFTU0VSVF9OT1RfU1lOQ19USFJF
QUQoKTsKICAgICAgICAgCiAgICAgLy8gQ2Fubm90IGRvIGFueXRoaW5nIHdpdGggcGFnZVVSTE9y
aWdpbmFsIHRoYXQgd291bGQgZW5kIHVwIHN0b3JpbmcgaXQgd2l0aG91dCBkZWVwIGNvcHlpbmcg
Zmlyc3QKICAgICAKLSAgICBpZiAoIWlzRW5hYmxlZCgpIHx8ICFkb2N1bWVudENhbkhhdmVJY29u
KHBhZ2VVUkxPcmlnaW5hbCkpCisgICAgaWYgKCFpc0VuYWJsZWQoKSB8fCAhZG9jdW1lbnRDYW5I
YXZlSWNvbihwYWdlVVJMKSkKICAgICAgICAgcmV0dXJuOwotICAgIAotICAgIE11dGV4TG9ja2Vy
IGxvY2tlcihtX3VybEFuZEljb25Mb2NrKTsKIAorICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX3Vy
bHNUb1JldGFpbk9yUmVsZWFzZUxvY2spOworICAgIG1fdXJsc1RvUmVsZWFzZS5hZGQocGFnZVVS
TCk7CisgICAgbV9yZXRhaW5PclJlbGVhc2VJY29uUmVxdWVzdGVkID0gdHJ1ZTsKKyAgICBzY2hl
ZHVsZU9yRGVmZXJTeW5jVGltZXIoKTsKK30KKwordm9pZCBJY29uRGF0YWJhc2U6OnBlcmZvcm1S
ZWxlYXNlSWNvbkZvclBhZ2VVUkwoY29uc3QgU3RyaW5nJiBwYWdlVVJMT3JpZ2luYWwsIGludCBy
ZWxlYXNlQ291bnQpCit7CiAgICAgLy8gQ2hlY2sgaWYgdGhpcyBwYWdlVVJMIGlzIGFjdHVhbGx5
IHJldGFpbmVkCiAgICAgaWYgKCFtX3JldGFpbmVkUGFnZVVSTHMuY29udGFpbnMocGFnZVVSTE9y
aWdpbmFsKSkgewogICAgICAgICBMT0dfRVJST1IoIkF0dGVtcHRpbmcgdG8gcmVsZWFzZSBpY29u
IGZvciBVUkwgJXMgd2hpY2ggaXMgbm90IHJldGFpbmVkIiwgdXJsRm9yTG9nZ2luZyhwYWdlVVJM
T3JpZ2luYWwpLmFzY2lpKCkuZGF0YSgpKTsKQEAgLTQ1OCw3ICs0NjksNyBAQCB2b2lkIEljb25E
YXRhYmFzZTo6cmVsZWFzZUljb25Gb3JQYWdlVVJMKGNvbnN0IFN0cmluZyYgcGFnZVVSTE9yaWdp
bmFsKQogICAgIEFTU0VSVChwYWdlUmVjb3JkLT5yZXRhaW5Db3VudCgpID4gMCk7CiAgICAgICAg
IAogICAgIC8vIElmIGl0IHN0aWxsIGhhcyBhIHBvc2l0aXZlIHJldGFpbiBjb3VudCwgc3RvcmUg
dGhlIG5ldyBjb3VudCBhbmQgYmFpbAotICAgIGlmIChwYWdlUmVjb3JkLT5yZWxlYXNlKCkpCisg
ICAgaWYgKHBhZ2VSZWNvcmQtPnJlbGVhc2UocmVsZWFzZUNvdW50KSkKICAgICAgICAgcmV0dXJu
OwogICAgICAgICAKICAgICAvLyBUaGlzIHBhZ2VSZWNvcmQgaGFzIG5vdyBiZWVuIGZ1bGx5IHJl
bGVhc2VkLiAgRG8gdGhlIGFwcHJvcHJpYXRlIGNsZWFudXAKQEAgLTQ5OCw5ICs1MDksNiBAQCB2
b2lkIEljb25EYXRhYmFzZTo6cmVsZWFzZUljb25Gb3JQYWdlVVJMKGNvbnN0IFN0cmluZyYgcGFn
ZVVSTE9yaWdpbmFsKQogICAgIH0KICAgICAKICAgICBkZWxldGUgcGFnZVJlY29yZDsKLQotICAg
IGlmIChpc09wZW4oKSkKLSAgICAgICAgc2NoZWR1bGVPckRlZmVyU3luY1RpbWVyKCk7CiB9CiAK
IHZvaWQgSWNvbkRhdGFiYXNlOjpzZXRJY29uRGF0YUZvckljb25VUkwoUGFzc1JlZlB0cjxTaGFy
ZWRCdWZmZXI+IGRhdGFPcmlnaW5hbCwgY29uc3QgU3RyaW5nJiBpY29uVVJMT3JpZ2luYWwpCkBA
IC03MzYsNiArNzQ0LDEwIEBAIHNpemVfdCBJY29uRGF0YWJhc2U6OnBhZ2VVUkxNYXBwaW5nQ291
bnQoKQogc2l6ZV90IEljb25EYXRhYmFzZTo6cmV0YWluZWRQYWdlVVJMQ291bnQoKQogewogICAg
IE11dGV4TG9ja2VyIGxvY2tlcihtX3VybEFuZEljb25Mb2NrKTsKKworICAgIGlmIChtX3JldGFp
bk9yUmVsZWFzZUljb25SZXF1ZXN0ZWQpCisgICAgICAgIHBlcmZvcm1QZW5kaW5nUmV0YWluQW5k
UmVsZWFzZU9wZXJhdGlvbnMoKTsKKwogICAgIHJldHVybiBtX3JldGFpbmVkUGFnZVVSTHMuc2l6
ZSgpOwogfQogCkBAIC03NjIsNiArNzc0LDcgQEAgc2l6ZV90IEljb25EYXRhYmFzZTo6aWNvblJl
Y29yZENvdW50V2l0aERhdGEoKQogSWNvbkRhdGFiYXNlOjpJY29uRGF0YWJhc2UoKQogICAgIDog
bV9zeW5jVGltZXIodGhpcywgJkljb25EYXRhYmFzZTo6c3luY1RpbWVyRmlyZWQpCiAgICAgLCBt
X3N5bmNUaHJlYWRSdW5uaW5nKGZhbHNlKQorICAgICwgbV9zY2hlZHVsZU9yRGVmZXJTeW5jVGlt
ZXJSZXF1ZXN0ZWQoZmFsc2UpCiAgICAgLCBtX2lzRW5hYmxlZChmYWxzZSkKICAgICAsIG1fcHJp
dmF0ZUJyb3dzaW5nRW5hYmxlZChmYWxzZSkKICAgICAsIG1fdGhyZWFkVGVybWluYXRpb25SZXF1
ZXN0ZWQoZmFsc2UpCkBAIC04MjMsMTcgKzgzNiwzMCBAQCB2b2lkIEljb25EYXRhYmFzZTo6d2Fr
ZVN5bmNUaHJlYWQoKQogICAgIG1fc3luY0NvbmRpdGlvbi5zaWduYWwoKTsKIH0KIAordm9pZCBJ
Y29uRGF0YWJhc2U6OnBlcmZvcm1TY2hlZHVsZU9yRGVmZXJTeW5jVGltZXIoKQoreworICAgIG1f
c3luY1RpbWVyLnN0YXJ0T25lU2hvdCh1cGRhdGVUaW1lckRlbGF5KTsKKyAgICBtX3NjaGVkdWxl
T3JEZWZlclN5bmNUaW1lclJlcXVlc3RlZCA9IGZhbHNlOworfQorCit2b2lkIEljb25EYXRhYmFz
ZTo6cGVyZm9ybVNjaGVkdWxlT3JEZWZlclN5bmNUaW1lck9uTWFpblRocmVhZCh2b2lkKiBjb250
ZXh0KQoreworICAgIHN0YXRpY19jYXN0PEljb25EYXRhYmFzZSo+KGNvbnRleHQpLT5wZXJmb3Jt
U2NoZWR1bGVPckRlZmVyU3luY1RpbWVyKCk7Cit9CisKIHZvaWQgSWNvbkRhdGFiYXNlOjpzY2hl
ZHVsZU9yRGVmZXJTeW5jVGltZXIoKQogewogICAgIEFTU0VSVF9OT1RfU1lOQ19USFJFQUQoKTsK
IAotICAgIGlmICghbV9zeW5jVGltZXIuaXNBY3RpdmUoKSkgewotICAgICAgICAvLyBUaGUgZm9s
bG93aW5nIGlzIGJhbGFuY2VkIGJ5IHRoZSBjYWxsIHRvIGVuYWJsZVN1ZGRlblRlcm1pbmF0aW9u
IGluIHRoZQotICAgICAgICAvLyBzeW5jVGltZXJGaXJlZCBmdW5jdGlvbi4KLSAgICAgICAgZGlz
YWJsZVN1ZGRlblRlcm1pbmF0aW9uKCk7Ci0gICAgfQorICAgIGlmIChtX3NjaGVkdWxlT3JEZWZl
clN5bmNUaW1lclJlcXVlc3RlZCkKKyAgICAgICAgcmV0dXJuOwogCi0gICAgbV9zeW5jVGltZXIu
c3RhcnRPbmVTaG90KHVwZGF0ZVRpbWVyRGVsYXkpOworICAgIC8vIFRoZSBmb2xsb3dpbmcgaXMg
YmFsYW5jZWQgYnkgdGhlIGNhbGwgdG8gZW5hYmxlU3VkZGVuVGVybWluYXRpb24gaW4gdGhlCisg
ICAgLy8gc3luY1RpbWVyRmlyZWQgZnVuY3Rpb24uCisgICAgZGlzYWJsZVN1ZGRlblRlcm1pbmF0
aW9uKCk7CisKKyAgICBtX3NjaGVkdWxlT3JEZWZlclN5bmNUaW1lclJlcXVlc3RlZCA9IHRydWU7
CisgICAgY2FsbE9uTWFpblRocmVhZChwZXJmb3JtU2NoZWR1bGVPckRlZmVyU3luY1RpbWVyT25N
YWluVGhyZWFkLCB0aGlzKTsKIH0KIAogdm9pZCBJY29uRGF0YWJhc2U6OnN5bmNUaW1lckZpcmVk
KFRpbWVyPEljb25EYXRhYmFzZT4qKQpAQCAtMTMwNiw3ICsxMzMyLDEwIEBAIHZvaWQgSWNvbkRh
dGFiYXNlOjpwZXJmb3JtVVJMSW1wb3J0KCkKICAgICAvLyBLZWVwIGEgc2V0IG9mIG9uZXMgdGhh
dCBhcmUgcmV0YWluZWQgYW5kIHBlbmRpbmcgbm90aWZpY2F0aW9uCiAgICAgewogICAgICAgICBN
dXRleExvY2tlciBsb2NrZXIobV91cmxBbmRJY29uTG9jayk7Ci0gICAgICAgIAorCisgICAgICAg
IGlmIChtX3JldGFpbk9yUmVsZWFzZUljb25SZXF1ZXN0ZWQpCisgICAgICAgICAgICBwZXJmb3Jt
UGVuZGluZ1JldGFpbkFuZFJlbGVhc2VPcGVyYXRpb25zKCk7CisKICAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IHVybHMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgICAgIGlmICghbV9y
ZXRhaW5lZFBhZ2VVUkxzLmNvbnRhaW5zKHVybHNbaV0pKSB7CiAgICAgICAgICAgICAgICAgUGFn
ZVVSTFJlY29yZCogcmVjb3JkID0gbV9wYWdlVVJMVG9SZWNvcmRNYXAuZ2V0KHVybHNbaV0pOwpA
QCAtMTM4Nyw2ICsxNDE2LDExIEBAIHZvaWQgSWNvbkRhdGFiYXNlOjpzeW5jVGhyZWFkTWFpbkxv
b3AoKQogICAgICAgICAvLyBUaGVuLCBpZiB0aGUgdGhyZWFkIHNob3VsZCBiZSBxdWl0dGluZywg
cXVpdCBub3chCiAgICAgICAgIGlmIChtX3RocmVhZFRlcm1pbmF0aW9uUmVxdWVzdGVkKQogICAg
ICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgaWYgKG1fcmV0YWluT3JSZWxlYXNlSWNvblJlcXVl
c3RlZCkgeworICAgICAgICAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fdXJsQW5kSWNvbkxvY2sp
OworICAgICAgICAgICAgcGVyZm9ybVBlbmRpbmdSZXRhaW5BbmRSZWxlYXNlT3BlcmF0aW9ucygp
OworICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBib29sIGRpZEFueVdvcmsgPSB0cnVlOwog
ICAgICAgICB3aGlsZSAoZGlkQW55V29yaykgewpAQCAtMTQ3MSw2ICsxNTA1LDI0IEBAIHZvaWQg
SWNvbkRhdGFiYXNlOjpzeW5jVGhyZWFkTWFpbkxvb3AoKQogICAgIH0KIH0KIAordm9pZCBJY29u
RGF0YWJhc2U6OnBlcmZvcm1QZW5kaW5nUmV0YWluQW5kUmVsZWFzZU9wZXJhdGlvbnMoKQorewor
ICAgIEFTU0VSVChtX3JldGFpbk9yUmVsZWFzZUljb25SZXF1ZXN0ZWQpOworCisgICAgLy8gTk9U
RTogVGhlIGNhbGxlciBpcyBhc3N1bWVkIHRvIGhvbGQgbV91cmxBbmRJY29uTG9jay4KKworICAg
IE11dGV4TG9ja2VyIHZlY3RvckxvY2tlcihtX3VybHNUb1JldGFpbk9yUmVsZWFzZUxvY2spOwor
CisgICAgZm9yIChIYXNoQ291bnRlZFNldDxTdHJpbmc+Ojpjb25zdF9pdGVyYXRvciBpdCA9IG1f
dXJsc1RvUmV0YWluLmJlZ2luKCksIGVuZCA9IG1fdXJsc1RvUmV0YWluLmVuZCgpOyBpdCAhPSBl
bmQ7ICsraXQpCisgICAgICAgIHBlcmZvcm1SZXRhaW5JY29uRm9yUGFnZVVSTChpdC0+Zmlyc3Qs
IGl0LT5zZWNvbmQpOworICAgIGZvciAoSGFzaENvdW50ZWRTZXQ8U3RyaW5nPjo6Y29uc3RfaXRl
cmF0b3IgaXQgPSBtX3VybHNUb1JlbGVhc2UuYmVnaW4oKSwgZW5kID0gbV91cmxzVG9SZWxlYXNl
LmVuZCgpOyBpdCAhPSBlbmQ7ICsraXQpCisgICAgICAgIHBlcmZvcm1SZWxlYXNlSWNvbkZvclBh
Z2VVUkwoaXQtPmZpcnN0LCBpdC0+c2Vjb25kKTsKKworICAgIG1fdXJsc1RvUmV0YWluLmNsZWFy
KCk7CisgICAgbV91cmxzVG9SZWxlYXNlLmNsZWFyKCk7CisgICAgbV9yZXRhaW5PclJlbGVhc2VJ
Y29uUmVxdWVzdGVkID0gZmFsc2U7Cit9CisKIGJvb2wgSWNvbkRhdGFiYXNlOjpyZWFkRnJvbURh
dGFiYXNlKCkKIHsKICAgICBBU1NFUlRfSUNPTl9TWU5DX1RIUkVBRCgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkRhdGFiYXNlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvaWNvbi9JY29uRGF0YWJhc2UuaAppbmRleCBlNGQ4Y2E3Li4zZWM5Yjc0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uRGF0YWJhc2UuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uRGF0YWJhc2UuaApAQCAtMjksNiArMjksNyBA
QAogCiAjaW5jbHVkZSAiSWNvbkRhdGFiYXNlQmFzZS5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCisj
aW5jbHVkZSA8d3RmL0hhc2hDb3VudGVkU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4K
ICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgpA
QCAtMTM1LDYgKzEzNiwxMSBAQCBwcml2YXRlOgogCiAgICAgUmVmUHRyPEljb25SZWNvcmQ+IG1f
ZGVmYXVsdEljb25SZWNvcmQ7CiAKKyAgICBzdGF0aWMgdm9pZCBwZXJmb3JtU2NoZWR1bGVPckRl
ZmVyU3luY1RpbWVyT25NYWluVGhyZWFkKHZvaWQqKTsKKyAgICB2b2lkIHBlcmZvcm1TY2hlZHVs
ZU9yRGVmZXJTeW5jVGltZXIoKTsKKworICAgIGJvb2wgbV9zY2hlZHVsZU9yRGVmZXJTeW5jVGlt
ZXJSZXF1ZXN0ZWQ7CisKIC8vICoqKiBBbnkgVGhyZWFkICoqKgogcHVibGljOgogICAgIHZpcnR1
YWwgYm9vbCBpc09wZW4oKSBjb25zdDsKQEAgLTE1OSw2ICsxNjUsNyBAQCBwcml2YXRlOgogICAg
IGJvb2wgbV9pY29uVVJMSW1wb3J0Q29tcGxldGU7CiAgICAgYm9vbCBtX3N5bmNUaHJlYWRIYXNX
b3JrVG9EbzsKICAgICBib29sIG1fZGlzYWJsZWRTdWRkZW5UZXJtaW5hdGlvbkZvclN5bmNUaHJl
YWQ7CisgICAgYm9vbCBtX3JldGFpbk9yUmVsZWFzZUljb25SZXF1ZXN0ZWQ7CiAKICAgICBNdXRl
eCBtX3VybEFuZEljb25Mb2NrOwogICAgIC8vIEhvbGRpbmcgbV91cmxBbmRJY29uTG9jayBpcyBy
ZXF1aXJlZCB3aGVuIGFjY2Vzc2luZyBhbnkgb2YgdGhlIGZvbGxvd2luZyBkYXRhIHN0cnVjdHVy
ZXMgb3IgdGhlIG9iamVjdHMgdGhleSBjb250YWluCkBAIC0xNzcsNiArMTg0LDExIEBAIHByaXZh
dGU6CiAgICAgSGFzaFNldDxTdHJpbmc+IG1fcGFnZVVSTHNJbnRlcmVzdGVkSW5JY29uczsKICAg
ICBIYXNoU2V0PEljb25SZWNvcmQqPiBtX2ljb25zUGVuZGluZ1JlYWRpbmc7CiAKKyAgICBNdXRl
eCBtX3VybHNUb1JldGFpbk9yUmVsZWFzZUxvY2s7CisgICAgLy8gSG9sZGluZyBtX3VybHNUb1Jl
dGFpbk9yUmVsZWFzZUxvY2sgaXMgcmVxdWlyZWQgd2hlbiBhY2Nlc3NpbmcgYW55IG9mIHRoZSBm
b2xsb3dpbmcgZGF0YSBzdHJ1Y3R1cmVzLgorICAgIEhhc2hDb3VudGVkU2V0PFN0cmluZz4gbV91
cmxzVG9SZXRhaW47CisgICAgSGFzaENvdW50ZWRTZXQ8U3RyaW5nPiBtX3VybHNUb1JlbGVhc2U7
CisKIC8vICoqKiBTeW5jIFRocmVhZCBPbmx5ICoqKgogcHVibGljOgogICAgIC8vIFNob3VsZCBi
ZSB1c2VkIG9ubHkgb24gdGhlIHN5bmMgdGhyZWFkIGFuZCBvbmx5IGJ5IHRoZSBTYWZhcmkgMiBJ
Y29ucyBpbXBvcnQgcHJvY2VkdXJlCkBAIC0yMDIsNiArMjE0LDggQEAgcHJpdmF0ZToKICAgICB2
b2lkIHJlbW92ZUFsbEljb25zT25UaHJlYWQoKTsKICAgICB2b2lkIGRlbGV0ZUFsbFByZXBhcmVk
U3RhdGVtZW50cygpOwogICAgIHZvaWQqIGNsZWFudXBTeW5jVGhyZWFkKCk7CisgICAgdm9pZCBw
ZXJmb3JtUmV0YWluSWNvbkZvclBhZ2VVUkwoY29uc3QgU3RyaW5nJiwgaW50IHJldGFpbkNvdW50
KTsKKyAgICB2b2lkIHBlcmZvcm1SZWxlYXNlSWNvbkZvclBhZ2VVUkwoY29uc3QgU3RyaW5nJiwg
aW50IHJlbGVhc2VDb3VudCk7CiAKICAgICAvLyBSZWNvcmQgKG9uIGRpc2spIHdoZXRoZXIgb3Ig
bm90IFNhZmFyaSAyLXN0eWxlIGljb25zIHdlcmUgaW1wb3J0ZWQgKG9uY2UgcGVyIGRhdGFhYnNl
KQogICAgIGJvb2wgaW1wb3J0ZWQoKTsKQEAgLTIyMCw3ICsyMzQsOSBAQCBwcml2YXRlOgogICAg
IFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBnZXRJbWFnZURhdGFGb3JJY29uVVJMRnJvbVNRTERh
dGFiYXNlKGNvbnN0IFN0cmluZyYgaWNvblVSTCk7CiAgICAgdm9pZCByZW1vdmVJY29uRnJvbVNR
TERhdGFiYXNlKGNvbnN0IFN0cmluZyYgaWNvblVSTCk7CiAgICAgdm9pZCB3cml0ZUljb25TbmFw
c2hvdFRvU1FMRGF0YWJhc2UoY29uc3QgSWNvblNuYXBzaG90Jik7ICAgIAotICAgIAorCisgICAg
dm9pZCBwZXJmb3JtUGVuZGluZ1JldGFpbkFuZFJlbGVhc2VPcGVyYXRpb25zKCk7CisKICAgICAv
LyBNZXRob2RzIHRvIGRpc3BhdGNoIGNsaWVudCBjYWxsYmFja3Mgb24gdGhlIG1haW4gdGhyZWFk
CiAgICAgdm9pZCBkaXNwYXRjaERpZEltcG9ydEljb25VUkxGb3JQYWdlVVJMT25NYWluVGhyZWFk
KGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQgZGlzcGF0Y2hEaWRJbXBvcnRJY29uRGF0YUZvclBh
Z2VVUkxPbk1haW5UaHJlYWQoY29uc3QgU3RyaW5nJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvaWNvbi9QYWdlVVJMUmVjb3JkLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
aWNvbi9QYWdlVVJMUmVjb3JkLmgKaW5kZXggYjllMGE0MS4uMzA3YTcxOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vUGFnZVVSTFJlY29yZC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9pY29uL1BhZ2VVUkxSZWNvcmQuaApAQCAtNjksMTMgKzY5LDE5IEBAIHB1
YmxpYzoKICAgICBQYWdlVVJMU25hcHNob3Qgc25hcHNob3QoYm9vbCBmb3JEZWxldGlvbiA9IGZh
bHNlKSBjb25zdDsKIAogICAgIC8vIFJldHVybnMgZmFsc2UgaWYgdGhlIHBhZ2Ugd2Fzbid0IHJl
dGFpbmVkIGJlZm9yZWhhbmQsIHRydWUgaWYgdGhlIHJldGFpbiBjb3VudCB3YXMgYWxyZWFkeSAx
IG9yIGhpZ2hlcgotICAgIGlubGluZSBib29sIHJldGFpbigpIHsgcmV0dXJuIG1fcmV0YWluQ291
bnQrKzsgfQorICAgIGJvb2wgcmV0YWluKGludCBjb3VudCkKKyAgICB7CisgICAgICAgIGJvb2wg
d2FzUmV0YWluZWQgPSBtX3JldGFpbkNvdW50ID4gMDsKKyAgICAgICAgbV9yZXRhaW5Db3VudCAr
PSBjb3VudDsKKyAgICAgICAgcmV0dXJuIHdhc1JldGFpbmVkOworICAgIH0KIAogICAgIC8vIFJl
dHVybnMgdHJ1ZSBpZiB0aGUgcGFnZSBpcyBzdGlsbCByZXRhaW5lZCBhZnRlciB0aGUgY2FsbC4g
IEZhbHNlIGlmIHRoZSByZXRhaW4gY291bnQganVzdCBkcm9wcGVkIHRvIDAKLSAgICBpbmxpbmUg
Ym9vbCByZWxlYXNlKCkKKyAgICBib29sIHJlbGVhc2UoaW50IGNvdW50KQogICAgIHsKLSAgICAg
ICAgQVNTRVJUKG1fcmV0YWluQ291bnQgPiAwKTsKLSAgICAgICAgcmV0dXJuIC0tbV9yZXRhaW5D
b3VudDsKKyAgICAgICAgQVNTRVJUKG1fcmV0YWluQ291bnQgPj0gY291bnQpOworICAgICAgICBt
X3JldGFpbkNvdW50IC09IGNvdW50OworICAgICAgICByZXR1cm4gbV9yZXRhaW5Db3VudCA+IDA7
CiAgICAgfQogCiAgICAgaW5saW5lIGludCByZXRhaW5Db3VudCgpIGNvbnN0IHsgcmV0dXJuIG1f
cmV0YWluQ291bnQ7IH0K
</data>
<flag name="review"
          id="148360"
          type_id="1"
          status="+"
          setter="beidson"
    />
          </attachment>
      

    </bug>

</bugzilla>