<?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>47873</bug_id>
          
          <creation_ts>2010-10-18 19:37:51 -0700</creation_ts>
          <short_desc>iOS: ASSERT in Cache::adjustSize running layout tests</short_desc>
          <delta_ts>2010-10-19 13:35:37 -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>WebKit Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</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="Joseph Pecoraro">joepeck</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>ap</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>joepeck</cc>
    
    <cc>koivisto</cc>
    
    <cc>psolanki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>295926</commentid>
    <comment_count>0</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2010-10-18 19:37:51 -0700</bug_when>
    <thetext>&lt;rdar://problem/8470328&gt; ASSERTION FAILED: delta &gt;= 0 || ((int)m_deadSize + delta &gt;= 0) in WebCore/loader/Cache.cpp:686 void WebCore::Cache::adjustSize(bool, int)

iOS has Cache::shouldMakeResourcePurgeableOnEviction returning true, and is seeing
the following ASSERT running LayoutTests:

    Thread 0 Crashed:  Dispatch queue: com.apple.main-thread
    0   WebCore    0x01122c09 WebCore::Cache::adjustSize(bool, int) + 201 (Cache.cpp:686)
    1   WebCore    0x01123c1a WebCore::Cache::makeResourcePurgeable(WebCore::CachedResource*) + 168 (Cache.cpp:436)
    2   WebCore    0x01123fc4 WebCore::Cache::pruneDeadResources() + 922 (Cache.cpp:384)
    3   WebCore    0x0112961b WebCore::Cache::prune() + 85 (Cache.h:142)

The ASSERT is:

    ASSERT(delta &gt;= 0 || ((int)m_deadSize + delta &gt;= 0));

It appears as though resources are removing themselves (via adjustSize) multiple times
when pruning dead resources. The &quot;makeResourcePurgeable&quot; performs an adjustSize
on an already purgeable resource.

   (gdb) b WebCore::Cache::adjustSize
   Breakpoint 1 at 0x1336717: file WebCore/loader/Cache.cpp, line 684.

   (gdb) commands
   Type commands for when breakpoint 1 is hit, one per line.
   End with a line saying just &quot;end&quot;.
   &gt; bt 10
   &gt; c
   &gt; end

   Breakpoint 1, WebCore::Cache::adjustSize (this=0x881a000, live=false, delta=-45470) at WebCore/loader/Cache.cpp:684
   684	    if (live) {
   #0  WebCore::Cache::adjustSize (this=0x881a000, live=false, delta=-45470) at WebCore/loader/Cache.cpp:684
   #1  0x013377f6 in WebCore::Cache::makeResourcePurgeable (this=0x881a000, resource=0x103bd800) at WebCore/loader/Cache.cpp:435
   #2  0x01337ba0 in WebCore::Cache::pruneDeadResources (this=0x881a000) at WebCore/loader/Cache.cpp:385
   #3  0x0133d207 in WebCore::Cache::prune (this=0x881a000) at Cache.h:141
   #4  0x01338092 in WebCore::Cache::setCapacities (this=0x881a000, minDeadBytes=0, maxDeadBytes=0, totalBytes=4194304) at WebCore/loader/Cache.cpp:418
   #5  0x0573b754 in +[WebView(WebFileInternal) _setCacheModel:] (self=0x57ea814, _cmd=0x57582e0, cacheModel=0) at WebKit/mac/WebView/WebView.mm:6537
   #6  0x0573ae23 in +[WebView(WebFileInternal) _preferencesChangedNotification:] (self=0x57ea814, _cmd=0x57904cb, notification=0x11852240) at WebKit/mac/WebView/WebView.mm:6584
   #7  0x007286c1 in _nsnote_callback ()
   #8  0x00302f99 in __CFXNotificationPost_old ()
   #9  0x0028233a in _CFXNotificationPostNotification ()

   ... a little later ... without it showing up in between ...

   Breakpoint 1, WebCore::Cache::adjustSize (this=0x881a000, live=false, delta=-45470) at WebCore/loader/Cache.cpp:684
   684	    if (live) {
   #0  WebCore::Cache::adjustSize (this=0x881a000, live=false, delta=-45470) at WebCore/loader/Cache.cpp:684
   #1  0x013377f6 in WebCore::Cache::makeResourcePurgeable (this=0x881a000, resource=0x103bd800) at WebCore/loader/Cache.cpp:435
   #2  0x01337ba0 in WebCore::Cache::pruneDeadResources (this=0x881a000) at WebCore/loader/Cache.cpp:385
   #3  0x0133d207 in WebCore::Cache::prune (this=0x881a000) at Cache.h:141
   #4  0x01345c0f in WebCore::CachedResource::removeClient (this=0x118710b0, client=0x11872bf4) at WebCore/loader/CachedResource.cpp:210
   #5  0x01d142a5 in WebCore::ScriptElementData::execute (this=0x11872bf4, cachedScript=0x118710b0) at WebCore/dom/ScriptElement.cpp:207
   #6  0x014d7505 in WebCore::Document::executeScriptSoonTimerFired (this=0x834ec00, timer=0x834f21c) at WebCore/dom/Document.cpp:4966
   #7  0x014f72e9 in WebCore::Timer&lt;WebCore::Document&gt;::fired (this=0x834f21c) at Timer.h:102
   #8  0x01e988c6 in WebCore::ThreadTimers::sharedTimerFiredInternal (this=0x902ea50) at WebCore/platform/ThreadTimers.cpp:126
   #9  0x01e9897d in WebCore::ThreadTimers::sharedTimerFired () at WebCore/platform/ThreadTimers.cpp:101

   Program received signal EXC_BAD_ACCESS, Could not access memory.
   Reason: KERN_INVALID_ADDRESS at address: 0xbbadbeef
   0x013367cd in WebCore::Cache::adjustSize (this=0x881a000, live=false, delta=-45470) at WebCore/loader/Cache.cpp:688
   688	        ASSERT(delta &gt;= 0 || ((int)m_deadSize + delta &gt;= 0));</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>295932</commentid>
    <comment_count>1</comment_count>
      <attachid>71120</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2010-10-18 19:46:14 -0700</bug_when>
    <thetext>Created attachment 71120
[PATCH] Proposed Change

I&apos;ll be rebasing and re-running test to verify.

If desired I may be able to make a test for this:

  - Cache a resource
  - Loop and continually prune the cache enough that it would likely underflow (m_deadSize is unsigned and underflowing triggers the ASSERT)
  - Have the test pass if there was no assertion.

Another approach might be to add a method to Cache to verify its integrity.
This might be worth doing, so let me know!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>296234</commentid>
    <comment_count>2</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2010-10-19 09:36:17 -0700</bug_when>
    <thetext>Actually, I think I can (and should) return &quot;true&quot; here. That way it would not
get evicted the second pass through the pruneDeadResources list and instead
stay in the lists with its &quot;purgeable&quot; but &quot;not purged&quot; state. It would eventually
get evicted if it ever &quot;wasPurged()&quot; in an code block inside of pruning.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>296278</commentid>
    <comment_count>3</comment_count>
      <attachid>71185</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2010-10-19 10:54:31 -0700</bug_when>
    <thetext>Created attachment 71185
[PATCH] Return True and Keep Purgeable Resource in the Lists</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>296337</commentid>
    <comment_count>4</comment_count>
      <attachid>71185</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2010-10-19 12:39:23 -0700</bug_when>
    <thetext>Comment on attachment 71185
[PATCH] Return True and Keep Purgeable Resource in the Lists

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>296371</commentid>
    <comment_count>5</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2010-10-19 13:35:37 -0700</bug_when>
    <thetext>Thanks!

Committed r70077
	M	WebCore/ChangeLog
	M	WebCore/loader/Cache.cpp
r70077 = 4fb7c2de4c7e231e9a2ade392063bffe48002ab7
http://trac.webkit.org/changeset/70077</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>71120</attachid>
            <date>2010-10-18 19:46:14 -0700</date>
            <delta_ts>2010-10-19 10:54:31 -0700</delta_ts>
            <desc>[PATCH] Proposed Change</desc>
            <filename>cache.patch</filename>
            <type>text/plain</type>
            <size>2573</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MDdmMmE2NS4uYTU4NmIxZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNiBAQAorMjAxMC0xMC0xOCAgSm9zZXBoIFBlY29y
YXJvICA8am9lcGVja0B3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIGlPUzogQVNTRVJUIGluIENhY2hlOjphZGp1c3RTaXplIHJ1bm5p
bmcgbGF5b3V0IHRlc3RzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD00Nzg3MworCisgICAgICAgIEluc2lkZSBDYWNoZTo6cHJ1bmVEZWFkUmVzb3VyY2Vz
IHdlIGxvb3Agb3ZlciB0aGUgTFJVIGxpc3RzIGFuZCBtYWtlIHJlc291cmNlcyBwdXJnZWFibGUK
KyAgICAgICAgd2l0aCBDYWNoZTo6bWFrZVJlc291cmNlUHVyZ2VhYmxlKCkuIFRoaXMgd2Fzbid0
IHRha2luZyBpbnRvIGFjY291bnQgd2hldGhlciB0aGUgcmVzb3VyY2UKKyAgICAgICAgd2FzIGFs
cmVhZHkgcHVyZ2VhYmxlIG9yIG5vdCwgYW5kIHRoZSBtYWtlUmVzb3VyY2VQdXJnZWFibGUgY2Fs
bCB3YXMgYWx3YXlzIGNhbGxpbmcKKyAgICAgICAgYWRqdXN0U2l6ZSgpLiBOb3cgd2UgbWFrZSBz
dXJlIG1ha2VSZXNvdXJjZVB1cmdhYmxlIG9ubHkgYWRqdXN0cyB0aGUgc2l6ZSBvZiB0aGUgQ2Fj
aGUncworICAgICAgICBkZWFkIHNpemVzIHdoZW4gaXQgZmlyc3QgbWFya3MgdGhlIHJlc291cmNl
IHB1cmdlYWJsZS4gTGlrZXdpc2UsIGlmIGEgcmVzb3VyY2UgaXMgbWFya2VkCisgICAgICAgIGFz
IHB1cmdlYWJsZSBhbmQgdGhlbiBldmljdGVkLCB3ZSBzaG91bGQgbm90IGFkanVzdCB0aGUgc2l6
ZSBhZ2Fpbi4KKworICAgICAgICBUaGUgYmFsYW5jaW5nIGNhbGwgaXMgd2hlbiB3ZSBoYXZlIGEg
cmVzb3VyY2UgdGhhdCBoYXMgYmVlbiBtYXJrZWQgYXMgcHVyZ2VhYmxlIGFuZCB3ZQorICAgICAg
ICBzdWNjZXNzZnVsbHkgbWFyayBpdCBhcyBubyBsb25nZXIgcHVyZ2VhYmxlIGluIENhY2hlOjpy
ZXNvdXJjZUZvclVSTC4KKworICAgICAgICBObyB0ZXN0IGFkZGVkIGJlY2F1c2UgdGhpcyByZXF1
aXJlcyB0ZXN0aW5nIHB1cmdlYWJsZSBtZW1vcnkuCisKKyAgICAgICAgKiBsb2FkZXIvQ2FjaGUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGU6Om1ha2VSZXNvdXJjZVB1cmdlYWJsZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpDYWNoZTo6ZXZpY3QpOgorCiAyMDEwLTEwLTExICBKb3NlcGggUGVj
b3Jhcm8gIDxqb2VwZWNrQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBD
YXJsc29uLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9sb2FkZXIvQ2FjaGUuY3BwIGIvV2ViQ29yZS9s
b2FkZXIvQ2FjaGUuY3BwCmluZGV4IDI4YzlmOTMuLjk5NWZiMDEgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvbG9hZGVyL0NhY2hlLmNwcAorKysgYi9XZWJDb3JlL2xvYWRlci9DYWNoZS5jcHAKQEAgLTQx
MSw2ICs0MTEsOSBAQCBib29sIENhY2hlOjptYWtlUmVzb3VyY2VQdXJnZWFibGUoQ2FjaGVkUmVz
b3VyY2UqIHJlc291cmNlKQogICAgIGlmICghcmVzb3VyY2UtPmluQ2FjaGUoKSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCisgICAgaWYgKHJlc291cmNlLT5pc1B1cmdlYWJsZSgpKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisKICAgICBpZiAoIXJlc291cmNlLT5pc1NhZmVUb01ha2VQdXJnZWFi
bGUoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC00MzYsOCArNDM5LDkgQEAgdm9pZCBD
YWNoZTo6ZXZpY3QoQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlKQogICAgICAgICByZW1vdmVGcm9t
TGl2ZURlY29kZWRSZXNvdXJjZXNMaXN0KHJlc291cmNlKTsKIAogICAgICAgICAvLyBJZiB0aGUg
cmVzb3VyY2Ugd2FzIHB1cmdlZCwgaXQgbWVhbnMgd2UgaGFkIGFscmVhZHkgZGVjcmVtZW50ZWQg
dGhlIHNpemUgd2hlbiB3ZSBtYWRlIHRoZQotICAgICAgICAvLyByZXNvdXJjZSBwdXJnZWFibGUg
aW4gbWFrZVJlc291cmNlUHVyZ2VhYmxlKCkuCi0gICAgICAgIGlmICghQ2FjaGU6OnNob3VsZE1h
a2VSZXNvdXJjZVB1cmdlYWJsZU9uRXZpY3Rpb24oKSB8fCAhcmVzb3VyY2UtPndhc1B1cmdlZCgp
KQorICAgICAgICAvLyByZXNvdXJjZSBwdXJnZWFibGUgaW4gbWFrZVJlc291cmNlUHVyZ2VhYmxl
KCkuIFNvIGFkanVzdCB0aGUgc2l6ZSBpZiB3ZSBhcmUgZXZpY3RpbmcgYQorICAgICAgICAvLyBy
ZXNvdXJjZSB0aGF0IHdhcyBub3QgbWFya2VkIGFzIHB1cmdlYWJsZS4KKyAgICAgICAgaWYgKCFD
YWNoZTo6c2hvdWxkTWFrZVJlc291cmNlUHVyZ2VhYmxlT25FdmljdGlvbigpIHx8ICFyZXNvdXJj
ZS0+aXNQdXJnZWFibGUoKSkKICAgICAgICAgICAgIGFkanVzdFNpemUocmVzb3VyY2UtPmhhc0Ns
aWVudHMoKSwgLXN0YXRpY19jYXN0PGludD4ocmVzb3VyY2UtPnNpemUoKSkpOwogICAgIH0gZWxz
ZQogICAgICAgICBBU1NFUlQobV9yZXNvdXJjZXMuZ2V0KHJlc291cmNlLT51cmwoKSkgIT0gcmVz
b3VyY2UpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>71185</attachid>
            <date>2010-10-19 10:54:31 -0700</date>
            <delta_ts>2010-10-19 12:39:23 -0700</delta_ts>
            <desc>[PATCH] Return True and Keep Purgeable Resource in the Lists</desc>
            <filename>cache2.patch</filename>
            <type>text/plain</type>
            <size>2564</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MDc4ODA3Yi4uMzEyMDE2ZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNiBAQAorMjAxMC0xMC0xOCAgSm9zZXBoIFBlY29y
YXJvICA8am9lcGVja0B3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIGlPUzogQVNTRVJUIGluIENhY2hlOjphZGp1c3RTaXplIHJ1bm5p
bmcgbGF5b3V0IHRlc3RzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD00Nzg3MworCisgICAgICAgIEluc2lkZSBDYWNoZTo6cHJ1bmVEZWFkUmVzb3VyY2Vz
IHdlIGxvb3Agb3ZlciB0aGUgTFJVIGxpc3RzIGFuZCBtYWtlIHJlc291cmNlcyBwdXJnZWFibGUK
KyAgICAgICAgd2l0aCBDYWNoZTo6bWFrZVJlc291cmNlUHVyZ2VhYmxlKCkuIFRoaXMgd2Fzbid0
IHRha2luZyBpbnRvIGFjY291bnQgd2hldGhlciB0aGUgcmVzb3VyY2UKKyAgICAgICAgd2FzIGFs
cmVhZHkgcHVyZ2VhYmxlIG9yIG5vdCwgYW5kIHRoZSBtYWtlUmVzb3VyY2VQdXJnZWFibGUgY2Fs
bCB3YXMgYWx3YXlzIGNhbGxpbmcKKyAgICAgICAgYWRqdXN0U2l6ZSgpLiBOb3cgd2UgbWFrZSBz
dXJlIG1ha2VSZXNvdXJjZVB1cmdhYmxlIG9ubHkgYWRqdXN0cyB0aGUgc2l6ZSBvZiB0aGUgQ2Fj
aGUncworICAgICAgICBkZWFkIHNpemVzIHdoZW4gaXQgZmlyc3QgbWFya3MgdGhlIHJlc291cmNl
IHB1cmdlYWJsZS4gTGlrZXdpc2UsIGlmIGEgcmVzb3VyY2UgaXMgbWFya2VkCisgICAgICAgIGFz
IHB1cmdlYWJsZSBhbmQgdGhlbiBldmljdGVkLCB3ZSBzaG91bGQgbm90IGFkanVzdCB0aGUgc2l6
ZSBhZ2Fpbi4KKworICAgICAgICBUaGUgYmFsYW5jaW5nIGNhbGwgaXMgd2hlbiB3ZSBoYXZlIGEg
cmVzb3VyY2UgdGhhdCBoYXMgYmVlbiBtYXJrZWQgYXMgcHVyZ2VhYmxlIGFuZCB3ZQorICAgICAg
ICBzdWNjZXNzZnVsbHkgbWFyayBpdCBhcyBubyBsb25nZXIgcHVyZ2VhYmxlIGluIENhY2hlOjpy
ZXNvdXJjZUZvclVSTC4KKworICAgICAgICBObyB0ZXN0IGFkZGVkIGJlY2F1c2UgdGhpcyByZXF1
aXJlcyB0ZXN0aW5nIHB1cmdlYWJsZSBtZW1vcnkuCisKKyAgICAgICAgKiBsb2FkZXIvQ2FjaGUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGU6Om1ha2VSZXNvdXJjZVB1cmdlYWJsZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpDYWNoZTo6ZXZpY3QpOgorCiAyMDEwLTEwLTE4ICBPbGl2ZXIgSHVu
dCAgPG9saXZlckBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU2FtIFdlaW5pZy4K
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvbG9hZGVyL0NhY2hlLmNwcCBiL1dlYkNvcmUvbG9hZGVyL0Nh
Y2hlLmNwcAppbmRleCBkNjc2NTM4Li42ZWY2NWMwIDEwMDY0NAotLS0gYS9XZWJDb3JlL2xvYWRl
ci9DYWNoZS5jcHAKKysrIGIvV2ViQ29yZS9sb2FkZXIvQ2FjaGUuY3BwCkBAIC00MjQsNiArNDI0
LDkgQEAgYm9vbCBDYWNoZTo6bWFrZVJlc291cmNlUHVyZ2VhYmxlKENhY2hlZFJlc291cmNlKiBy
ZXNvdXJjZSkKICAgICBpZiAoIXJlc291cmNlLT5pbkNhY2hlKCkpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIAorICAgIGlmIChyZXNvdXJjZS0+aXNQdXJnZWFibGUoKSkKKyAgICAgICAgcmV0dXJu
IHRydWU7CisKICAgICBpZiAoIXJlc291cmNlLT5pc1NhZmVUb01ha2VQdXJnZWFibGUoKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC00NTAsOCArNDUzLDkgQEAgdm9pZCBDYWNoZTo6ZXZp
Y3QoQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlKQogICAgICAgICByZW1vdmVGcm9tTGl2ZURlY29k
ZWRSZXNvdXJjZXNMaXN0KHJlc291cmNlKTsKIAogICAgICAgICAvLyBJZiB0aGUgcmVzb3VyY2Ug
d2FzIHB1cmdlZCwgaXQgbWVhbnMgd2UgaGFkIGFscmVhZHkgZGVjcmVtZW50ZWQgdGhlIHNpemUg
d2hlbiB3ZSBtYWRlIHRoZQotICAgICAgICAvLyByZXNvdXJjZSBwdXJnZWFibGUgaW4gbWFrZVJl
c291cmNlUHVyZ2VhYmxlKCkuCi0gICAgICAgIGlmICghQ2FjaGU6OnNob3VsZE1ha2VSZXNvdXJj
ZVB1cmdlYWJsZU9uRXZpY3Rpb24oKSB8fCAhcmVzb3VyY2UtPndhc1B1cmdlZCgpKQorICAgICAg
ICAvLyByZXNvdXJjZSBwdXJnZWFibGUgaW4gbWFrZVJlc291cmNlUHVyZ2VhYmxlKCkuIFNvIGFk
anVzdCB0aGUgc2l6ZSBpZiB3ZSBhcmUgZXZpY3RpbmcgYQorICAgICAgICAvLyByZXNvdXJjZSB0
aGF0IHdhcyBub3QgbWFya2VkIGFzIHB1cmdlYWJsZS4KKyAgICAgICAgaWYgKCFDYWNoZTo6c2hv
dWxkTWFrZVJlc291cmNlUHVyZ2VhYmxlT25FdmljdGlvbigpIHx8ICFyZXNvdXJjZS0+aXNQdXJn
ZWFibGUoKSkKICAgICAgICAgICAgIGFkanVzdFNpemUocmVzb3VyY2UtPmhhc0NsaWVudHMoKSwg
LXN0YXRpY19jYXN0PGludD4ocmVzb3VyY2UtPnNpemUoKSkpOwogICAgIH0gZWxzZQogICAgICAg
ICBBU1NFUlQobV9yZXNvdXJjZXMuZ2V0KHJlc291cmNlLT51cmwoKSkgIT0gcmVzb3VyY2UpOwo=
</data>
<flag name="review"
          id="61184"
          type_id="1"
          status="+"
          setter="ddkilzer"
    />
          </attachment>
      

    </bug>

</bugzilla>