<?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>127582</bug_id>
          
          <creation_ts>2014-01-24 13:38:53 -0800</creation_ts>
          <short_desc>ASSERT(!m_markedSpace.m_currentDelayedReleaseScope) reloading page in inspector</short_desc>
          <delta_ts>2014-01-24 15:41:38 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</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></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="Mark Lam">mark.lam</assigned_to>
          <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mhahnenberg</cc>
    
    <cc>msaboff</cc>
    
    <cc>oliver</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>971734</commentid>
    <comment_count>0</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2014-01-24 13:38:53 -0800</bug_when>
    <thetext>Seeing an ASSERT reloading a page with the inspector.

* STEPS TO REPRODUCE
1. Inspect &lt;http://bogojoker.com/shell/&gt;
2. Set some breakpoints in easySlider.min.js that should trigger on load
3. Reload the page
  =&gt; ASSERT


(lldb) f
frame #0: 0x000000010830685a JavaScriptCore`WTFCrash + 42 at Assertions.cpp:333
   330 	        globalHook();
   331 	
   332 	    WTFReportBacktrace();
-&gt; 333 	    *(int *)(uintptr_t)0xbbadbeef = 0;
   334 	    // More reliable, but doesn&apos;t say BBADBEEF.
   335 	#if COMPILER(CLANG)
   336 	    __builtin_trap();

(lldb) up
frame #1: 0x0000000107f97a4a JavaScriptCore`JSC::DelayedReleaseScope::DelayedReleaseScope(this=0x00007fff5efe4290, markedSpace=0x00007fc39c82bad8) + 106 at DelayedReleaseScope.h:41
   38  	    DelayedReleaseScope(MarkedSpace&amp; markedSpace)
   39  	        : m_markedSpace(markedSpace)
   40  	    {
-&gt; 41  	        ASSERT(!m_markedSpace.m_currentDelayedReleaseScope);
   42  	        m_markedSpace.m_currentDelayedReleaseScope = this;
   43  	    }
   44  	

(lldb) p *m_markedSpace.m_currentDelayedReleaseScope
(JSC::DelayedReleaseScope) $1 = {
  m_markedSpace = 0x00007fc39c82bad8
  m_delayedReleaseObjects = { size = 0, capacity = 0 } {
    m_size = 0
    m_capacity = 0
    m_buffer = 0x0000000000000000
  }
}

(lldb) bt
* thread #1: tid = 0x1b8a01, 0x000000010830685a JavaScriptCore`WTFCrash + 42 at Assertions.cpp:333, queue = &apos;com.apple.main-thread, stop reason = EXC_BAD_ACCESS (code=1, address=0xbbadbeef)
    frame #0: 0x000000010830685a JavaScriptCore`WTFCrash + 42 at Assertions.cpp:333
    frame #1: 0x0000000107f97a4a JavaScriptCore`JSC::DelayedReleaseScope::DelayedReleaseScope(this=0x00007fff5efe4290, markedSpace=0x00007fc39c82bad8) + 106 at DelayedReleaseScope.h:41
    frame #2: 0x0000000107f8cf3d JavaScriptCore`JSC::DelayedReleaseScope::DelayedReleaseScope(this=0x00007fff5efe4290, markedSpace=0x00007fc39c82bad8) + 29 at DelayedReleaseScope.h:43
    frame #3: 0x0000000108135427 JavaScriptCore`JSC::MarkedSpace::resumeAllocating(this=0x00007fc39c82bad8) + 87 at MarkedSpace.cpp:216
    frame #4: 0x0000000108135ba3 JavaScriptCore`JSC::MarkedSpace::didFinishIterating(this=0x00007fc39c82bad8) + 83 at MarkedSpace.cpp:349
    frame #5: 0x0000000107f88ecc JavaScriptCore`JSC::Heap::didFinishIterating(this=0x00007fc39c82b818) + 28 at Heap.cpp:427
    frame #6: 0x0000000107d63618 JavaScriptCore`JSC::HeapIterationScope::~HeapIterationScope(this=0x00007fff5efe4358) + 24 at HeapIterationScope.h:52
    frame #7: 0x0000000107d52345 JavaScriptCore`JSC::HeapIterationScope::~HeapIterationScope(this=0x00007fff5efe4358) + 21 at HeapIterationScope.h:51
    frame #8: 0x0000000107d4fbfb JavaScriptCore`JSC::Debugger::clearDebuggerRequests(this=0x00007fc398f264e0, globalObject=0x000000011283c470) + 155 at Debugger.cpp:525
    frame #9: 0x0000000107d4fac6 JavaScriptCore`JSC::Debugger::detach(this=0x00007fc398f264e0, globalObject=0x000000011283c470) + 198 at Debugger.cpp:193
    frame #10: 0x000000010802ff0f JavaScriptCore`JSC::JSGlobalObject::~JSGlobalObject(this=0x000000011283c470) + 63 at JSGlobalObject.cpp:167
    frame #11: 0x000000010a06db05 WebCore`WebCore::JSDOMGlobalObject::~JSDOMGlobalObject(this=0x000000011283c470) + 85 at JSDOMGlobalObject.h:44
    frame #12: 0x000000010a0f1661 WebCore`WebCore::JSDOMWindowBase::~JSDOMWindowBase(this=0x000000011283c470) + 49 at JSDOMWindowBase.h:37
    frame #13: 0x000000010a0ee095 WebCore`WebCore::JSDOMWindowBase::~JSDOMWindowBase(this=0x000000011283c470) + 21 at JSDOMWindowBase.h:37
    frame #14: 0x000000010a0ed335 WebCore`WebCore::JSDOMWindowBase::destroy(cell=0x000000011283c470) + 21 at JSDOMWindowBase.cpp:84
    frame #15: 0x0000000107f8ae16 JavaScriptCore`JSC::Heap::FinalizerOwner::finalize(this=0x00007fc39c835bb0, handle=Handle&lt;JSC::Unknown&gt; at 0x00007fff5efe44f0, context=0x000000010a0ed320) + 70 at Heap.cpp:1024
    frame #16: 0x00000001082b2a3d JavaScriptCore`JSC::WeakBlock::finalize(this=0x00000001047bd000, weakImpl=0x00000001047bdf60) + 189 at WeakSetInlines.h:52
    frame #17: 0x00000001082b23fe JavaScriptCore`JSC::WeakBlock::sweep(this=0x00000001047bd000) + 158 at WeakBlock.cpp:76
    frame #18: 0x00000001082b9b00 JavaScriptCore`JSC::WeakSet::sweep(this=0x0000000112830448) + 64 at WeakSet.cpp:47
    frame #19: 0x0000000108132f4d JavaScriptCore`JSC::MarkedBlock::sweep(this=0x0000000112830000, sweepMode=SweepOnly) + 109 at MarkedBlock.cpp:109
    frame #20: 0x0000000107f9e489 JavaScriptCore`JSC::IncrementalSweeper::sweepNextBlock(this=0x00007fc39ab477f0) + 137 at IncrementalSweeper.cpp:100
    frame #21: 0x0000000107f9e37a JavaScriptCore`JSC::IncrementalSweeper::doSweep(this=0x00007fc39ab477f0, sweepBeginTime=85259.169231679) + 106 at IncrementalSweeper.cpp:78
    frame #22: 0x0000000107f9e302 JavaScriptCore`JSC::IncrementalSweeper::doWork(this=0x00007fc39ab477f0) + 34 at IncrementalSweeper.cpp:71
    frame #23: 0x0000000107f9a472 JavaScriptCore`JSC::HeapTimer::timerDidFire(timer=0x00007fc39ab47890, context=0x00007fc39ab46280) + 338 at HeapTimer.cpp:97
    frame #24: 0x00007fff95ff8564 CoreFoundation`__CFRUNLOOP_IS_CALLING_OUT_TO_A_TIMER_CALLBACK_FUNCTION__ + 20
    frame #25: 0x00007fff95ff809f CoreFoundation`__CFRunLoopDoTimer + 1151
    frame #26: 0x00007fff960695aa CoreFoundation`__CFRunLoopDoTimers + 298
    frame #27: 0x00007fff95fb38e5 CoreFoundation`__CFRunLoopRun + 1525
    frame #28: 0x00007fff95fb30b5 CoreFoundation`CFRunLoopRunSpecific + 309
    frame #29: 0x00007fff8c2c7a0d HIToolbox`RunCurrentEventLoopInMode + 226
    frame #30: 0x00007fff8c2c77b7 HIToolbox`ReceiveNextEventCommon + 479
    frame #31: 0x00007fff8c2c75bc HIToolbox`_BlockUntilNextEventMatchingListInModeWithFilter + 65
    frame #32: 0x00007fff926ad6de AppKit`_DPSNextEvent + 1434
    frame #33: 0x00007fff926acd2b AppKit`-[NSApplication nextEventMatchingMask:untilDate:inMode:dequeue:] + 122
    frame #34: 0x00007fff926a0e2c AppKit`-[NSApplication run] + 553
    frame #35: 0x00007fff9268bbf3 AppKit`NSApplicationMain + 940
    frame #36: 0x00007fff8dd1fc0f XPCService`_xpc_main + 385
    frame #37: 0x00007fff93840bde libxpc.dylib`xpc_main + 399
    frame #38: 0x0000000100c19365 com.apple.WebKit.WebContent.Development`main(argc=1, argv=0x00007fff5efe7130) + 37 at XPCServiceMain.Development.mm:166
    frame #39: 0x00007fff8bdae5fd libdyld.dylib`start + 1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>971773</commentid>
    <comment_count>1</comment_count>
      <attachid>222160</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2014-01-24 15:14:18 -0800</bug_when>
    <thetext>Created attachment 222160
the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>971776</commentid>
    <comment_count>2</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2014-01-24 15:16:48 -0800</bug_when>
    <thetext>The assertion failure is because we had entered a HeapIterationScope while the JSGlobalObject is destructing, which in turn means that a GC is progress. It&apos;s not legal to iterate the heap while a GC is in progress.

To fix this:
1. We should not enter a HeapIterationScope when we iterate the CodeBlocks.  Apparently, iterating the CodeBlocks does not count as heap iteration.

2. If we&apos;re detaching the debugger due to the JSGlobalObject destructing, then we don&apos;t need to clear the debugger requests in the associated CodeBlocks. The JSGlobalObject destructing would mean that those CodeBlocks would be destructing too, and it may not be safe to access them anyway at this point.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>971777</commentid>
    <comment_count>3</comment_count>
      <attachid>222160</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2014-01-24 15:19:48 -0800</bug_when>
    <thetext>Comment on attachment 222160
the patch.

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

r=me

&gt; Source/JavaScriptCore/ChangeLog:19
&gt; +        while the JSGlobalObject is destructing, which in turn means that a GC
&gt; +        is progress. It&apos;s not legal to iterate the heap while a GC is in

Not true. We were in the middle of sweeping, not collecting.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>971784</commentid>
    <comment_count>4</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2014-01-24 15:41:38 -0800</bug_when>
    <thetext>Thanks.  The comment has been fixed.  Landed in r162735: &lt;http://trac.webkit.org/r162735&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>222160</attachid>
            <date>2014-01-24 15:14:18 -0800</date>
            <delta_ts>2014-01-24 15:19:48 -0800</delta_ts>
            <desc>the patch.</desc>
            <filename>bug-127582.patch</filename>
            <type>text/plain</type>
            <size>7675</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTYyNzI2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM1IEBA
CisyMDE0LTAxLTI0ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBB
U1NFUlQoIW1fbWFya2VkU3BhY2UubV9jdXJyZW50RGVsYXllZFJlbGVhc2VTY29wZSkgcmVsb2Fk
aW5nIHBhZ2UgaW4gaW5zcGVjdG9yLgorICAgICAgICA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMTI3
NTgyPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIDEu
IFdlIHNob3VsZCBub3QgZW50ZXIgYSBIZWFwSXRlcmF0aW9uU2NvcGUgd2hlbiB3ZSBpdGVyYXRl
IHRoZSBDb2RlQmxvY2tzLgorICAgICAgICAgICBBcHBhcmVudGx5LCBpdGVyYXRpbmcgdGhlIENv
ZGVCbG9ja3MgZG9lcyBub3QgY291bnQgYXMgaGVhcCBpdGVyYXRpb24uCisKKyAgICAgICAgMi4g
SWYgd2UncmUgZGV0YWNoaW5nIHRoZSBkZWJ1Z2dlciBkdWUgdG8gdGhlIEpTR2xvYmFsT2JqZWN0
IGRlc3RydWN0aW5nLAorICAgICAgICAgICB0aGVuIHdlIGRvbid0IG5lZWQgdG8gY2xlYXIgdGhl
IGRlYnVnZ2VyIHJlcXVlc3RzIGluIHRoZSBhc3NvY2lhdGVkCisgICAgICAgICAgIENvZGVCbG9j
a3MuIFRoZSBKU0dsb2JhbE9iamVjdCBkZXN0cnVjdGluZyB3b3VsZCBtZWFuIHRoYXQgdGhvc2UK
KyAgICAgICAgICAgQ29kZUJsb2NrcyB3b3VsZCBiZSBkZXN0cnVjdGluZyB0b28sIGFuZCBpdCBt
YXkgbm90IGJlIHNhZmUgdG8gYWNjZXNzCisgICAgICAgICAgIHRoZW0gYW55d2F5IGF0IHRoaXMg
cG9pbnQuCisKKyAgICAgICAgVGhlIGFzc2VydGlvbiBmYWlsdXJlIGlzIGJlY2F1c2Ugd2UgaGFk
IGVudGVyZWQgYSBIZWFwSXRlcmF0aW9uU2NvcGUKKyAgICAgICAgd2hpbGUgdGhlIEpTR2xvYmFs
T2JqZWN0IGlzIGRlc3RydWN0aW5nLCB3aGljaCBpbiB0dXJuIG1lYW5zIHRoYXQgYSBHQworICAg
ICAgICBpcyBwcm9ncmVzcy4gSXQncyBub3QgbGVnYWwgdG8gaXRlcmF0ZSB0aGUgaGVhcCB3aGls
ZSBhIEdDIGlzIGluCisgICAgICAgIHByb2dyZXNzLiBPbmNlIHdlIGZpeGVkIHRoZSBhYm92ZSAy
IGlzc3Vlcywgd2Ugd2lsbCBubyBsb25nZXIgaGF2ZSB0aGUKKyAgICAgICAgY29uZGl0aW9ucyB0
aGF0IG1hbmlmZXN0cyB0aGlzIGFzc2VydGlvbiBmYWlsdXJlLgorCisgICAgICAgICogZGVidWdn
ZXIvRGVidWdnZXIuY3BwOgorICAgICAgICAoSlNDOjpEZWJ1Z2dlcjo6ZGV0YWNoKToKKyAgICAg
ICAgKEpTQzo6RGVidWdnZXI6OnNldFN0ZXBwaW5nTW9kZSk6CisgICAgICAgIChKU0M6OkRlYnVn
Z2VyOjp0b2dnbGVCcmVha3BvaW50KToKKyAgICAgICAgKEpTQzo6RGVidWdnZXI6OmNsZWFyQnJl
YWtwb2ludHMpOgorICAgICAgICAoSlNDOjpEZWJ1Z2dlcjo6Y2xlYXJEZWJ1Z2dlclJlcXVlc3Rz
KToKKyAgICAgICAgKiBkZWJ1Z2dlci9EZWJ1Z2dlci5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNH
bG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6fkpTR2xvYmFs
T2JqZWN0KToKKwogMjAxNC0wMS0yNCAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNv
bT4KIAogICAgICAgICBbV2luXSBDb252ZXJ0IHNvbWUgTk1ha2UgZmlsZXMgdG8gTVNCdWlsZCBw
cm9qZWN0IGZpbGVzCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdn
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1
Z2dlci5jcHAJKHJldmlzaW9uIDE2MjcyNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1
Z2dlci9EZWJ1Z2dlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3Niw3ICsxNzYsNyBAQCB2b2lk
IERlYnVnZ2VyOjphdHRhY2goSlNHbG9iYWxPYmplY3QqIGdsCiAgICAgbV9nbG9iYWxPYmplY3Rz
LmFkZChnbG9iYWxPYmplY3QpOwogfQogCi12b2lkIERlYnVnZ2VyOjpkZXRhY2goSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCkKK3ZvaWQgRGVidWdnZXI6OmRldGFjaChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBSZWFzb25Gb3JEZXRhY2ggcmVhc29uKQogewogICAgIC8vIElmIHdl
J3JlIGRldGFjaGluZyBmcm9tIHRoZSBjdXJyZW50bHkgZXhlY3V0aW5nIGdsb2JhbCBvYmplY3Qs
IG1hbnVhbGx5IHRlYXIgZG93biBvdXIKICAgICAvLyBzdGFjaywgc2luY2Ugd2Ugd29uJ3QgZ2V0
IGZ1cnRoZXIgZGVidWdnZXIgY2FsbGJhY2tzIHRvIGRvIHNvLiBBbHNvLCByZXN1bWUgZXhlY3V0
aW9uLApAQCAtMTkwLDcgKzE5MCwxMiBAQCB2b2lkIERlYnVnZ2VyOjpkZXRhY2goSlNHbG9iYWxP
YmplY3QqIGdsCiAgICAgQVNTRVJUKG1fZ2xvYmFsT2JqZWN0cy5jb250YWlucyhnbG9iYWxPYmpl
Y3QpKTsKICAgICBtX2dsb2JhbE9iamVjdHMucmVtb3ZlKGdsb2JhbE9iamVjdCk7CiAKLSAgICBj
bGVhckRlYnVnZ2VyUmVxdWVzdHMoZ2xvYmFsT2JqZWN0KTsKKyAgICAvLyBJZiB0aGUgZ2xvYmFs
T2JqZWN0IGlzIGRlc3RydWN0aW5nLCB0aGVuIGl0cyBDb2RlQmxvY2tzIHdpbGwgYWxzbyBiZQor
ICAgIC8vIGRlc3RydWN0ZWQuIFRoZXJlIGlzIG5vIG5lZWQgdG8gZG8gdGhlIGRlYnVnZ2VyIHJl
cXVlc3RzIGNsZWFuIHVwLCBhbmQKKyAgICAvLyBpdCBpcyBub3Qgc2FmZSB0byBhY2Nlc3MgdGhv
c2UgQ29kZUJsb2NrcyBhdCB0aGlzIHRpbWUgYW55d2F5LgorICAgIGlmIChyZWFzb24gIT0gR2xv
YmFsT2JqZWN0SXNEZXN0cnVjdGluZykKKyAgICAgICAgY2xlYXJEZWJ1Z2dlclJlcXVlc3RzKGds
b2JhbE9iamVjdCk7CisKICAgICBnbG9iYWxPYmplY3QtPnNldERlYnVnZ2VyKDApOwogICAgIGlm
ICghbV9nbG9iYWxPYmplY3RzLnNpemUoKSkKICAgICAgICAgbV92bSA9IG51bGxwdHI7CkBAIC0y
MjgsNyArMjMzLDYgQEAgdm9pZCBEZWJ1Z2dlcjo6c2V0U3RlcHBpbmdNb2RlKFN0ZXBwaW5nTQog
CiAgICAgaWYgKCFtX3ZtKQogICAgICAgICByZXR1cm47Ci0gICAgSGVhcEl0ZXJhdGlvblNjb3Bl
IGl0ZXJhdGlvblNjb3BlKG1fdm0tPmhlYXApOwogICAgIFNldFN0ZXBwaW5nTW9kZUZ1bmN0b3Ig
ZnVuY3Rvcih0aGlzLCBtb2RlKTsKICAgICBtX3ZtLT5oZWFwLmZvckVhY2hDb2RlQmxvY2soZnVu
Y3Rvcik7CiB9CkBAIC0zMTMsNyArMzE3LDYgQEAgdm9pZCBEZWJ1Z2dlcjo6dG9nZ2xlQnJlYWtw
b2ludChCcmVha3BvaQogewogICAgIGlmICghbV92bSkKICAgICAgICAgcmV0dXJuOwotICAgIEhl
YXBJdGVyYXRpb25TY29wZSBpdGVyYXRpb25TY29wZShtX3ZtLT5oZWFwKTsKICAgICBUb2dnbGVC
cmVha3BvaW50RnVuY3RvciBmdW5jdG9yKHRoaXMsIGJyZWFrcG9pbnQsIGVuYWJsZWRPck5vdCk7
CiAgICAgbV92bS0+aGVhcC5mb3JFYWNoQ29kZUJsb2NrKGZ1bmN0b3IpOwogfQpAQCAtNDkzLDcg
KzQ5Niw2IEBAIHZvaWQgRGVidWdnZXI6OmNsZWFyQnJlYWtwb2ludHMoKQogCiAgICAgaWYgKCFt
X3ZtKQogICAgICAgICByZXR1cm47Ci0gICAgSGVhcEl0ZXJhdGlvblNjb3BlIGl0ZXJhdGlvblNj
b3BlKG1fdm0tPmhlYXApOwogICAgIENsZWFyQ29kZUJsb2NrRGVidWdnZXJSZXF1ZXN0c0Z1bmN0
b3IgZnVuY3Rvcih0aGlzKTsKICAgICBtX3ZtLT5oZWFwLmZvckVhY2hDb2RlQmxvY2soZnVuY3Rv
cik7CiB9CkBAIC01MTksNyArNTIxLDYgQEAgcHJpdmF0ZToKIHZvaWQgRGVidWdnZXI6OmNsZWFy
RGVidWdnZXJSZXF1ZXN0cyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogewogICAgIEFT
U0VSVChtX3ZtKTsKLSAgICBIZWFwSXRlcmF0aW9uU2NvcGUgaXRlcmF0aW9uU2NvcGUobV92bS0+
aGVhcCk7CiAgICAgQ2xlYXJEZWJ1Z2dlclJlcXVlc3RzRnVuY3RvciBmdW5jdG9yKGdsb2JhbE9i
amVjdCk7CiAgICAgbV92bS0+aGVhcC5mb3JFYWNoQ29kZUJsb2NrKGZ1bmN0b3IpOwogfQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyLmgJKHJldmlzaW9uIDE2
MjcyNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlci5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC02MSw3ICs2MSwxMSBAQCBwdWJsaWM6CiAgICAgYm9vbCBuZWVkc0V4Y2Vw
dGlvbkNhbGxiYWNrcygpIGNvbnN0IHsgcmV0dXJuIG1fcGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZSAh
PSBEb250UGF1c2VPbkV4Y2VwdGlvbnM7IH0KIAogICAgIHZvaWQgYXR0YWNoKEpTR2xvYmFsT2Jq
ZWN0Kik7Ci0gICAgdmlydHVhbCB2b2lkIGRldGFjaChKU0dsb2JhbE9iamVjdCopOworICAgIGVu
dW0gUmVhc29uRm9yRGV0YWNoIHsKKyAgICAgICAgVGVybWluYXRpbmdEZWJ1Z2dpbmdTZXNzaW9u
LAorICAgICAgICBHbG9iYWxPYmplY3RJc0Rlc3RydWN0aW5nCisgICAgfTsKKyAgICB2aXJ0dWFs
IHZvaWQgZGV0YWNoKEpTR2xvYmFsT2JqZWN0KiwgUmVhc29uRm9yRGV0YWNoKTsKIAogICAgIEJy
ZWFrcG9pbnRJRCBzZXRCcmVha3BvaW50KEJyZWFrcG9pbnQsIHVuc2lnbmVkJiBhY3R1YWxMaW5l
LCB1bnNpZ25lZCYgYWN0dWFsQ29sdW1uKTsKICAgICB2b2lkIHJlbW92ZUJyZWFrcG9pbnQoQnJl
YWtwb2ludElEKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFs
T2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dsb2JhbE9iamVjdC5jcHAJKHJldmlzaW9uIDE2MjcyNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTY0LDcg
KzE2NCw3IEBAIEpTR2xvYmFsT2JqZWN0OjpKU0dsb2JhbE9iamVjdChWTSYgdm0sIFMKIEpTR2xv
YmFsT2JqZWN0Ojp+SlNHbG9iYWxPYmplY3QoKQogewogICAgIGlmIChtX2RlYnVnZ2VyKQotICAg
ICAgICBtX2RlYnVnZ2VyLT5kZXRhY2godGhpcyk7CisgICAgICAgIG1fZGVidWdnZXItPmRldGFj
aCh0aGlzLCBEZWJ1Z2dlcjo6R2xvYmFsT2JqZWN0SXNEZXN0cnVjdGluZyk7CiAKICAgICBpZiAo
TGVnYWN5UHJvZmlsZXIqIHByb2ZpbGVyID0gdm0oKS5lbmFibGVkUHJvZmlsZXIoKSkKICAgICAg
ICAgcHJvZmlsZXItPnN0b3BQcm9maWxpbmcodGhpcyk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lv
biAxNjI3MjYpCisrKyBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAg
LTEsMyArMSwxOCBAQAorMjAxNC0wMS0yNCAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+
CisKKyAgICAgICAgQVNTRVJUKCFtX21hcmtlZFNwYWNlLm1fY3VycmVudERlbGF5ZWRSZWxlYXNl
U2NvcGUpIHJlbG9hZGluZyBwYWdlIGluIGluc3BlY3Rvci4KKyAgICAgICAgPGh0dHBzOi8vd2Vi
a2l0Lm9yZy9iLzEyNzU4Mj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBObyBuZXcgdGVzdHMuCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRD
b250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6OmF0dGFj
aERlYnVnZ2VyKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclNjcmlwdENvbnRyb2xsZXI6OmRldGFjaERl
YnVnZ2VyKToKKyAgICAgICAgLSBBZGRpbmcgcmVhc29ucyBmb3IgZGV0YWNoaW5nIGEgZ2xvYmFs
T2JqZWN0IGZyb20gdGhlIGRlYnVnZ2VyLgorCiAyMDE0LTAxLTI0ICBEYXZpZCBIeWF0dCAgPGh5
YXR0QGFwcGxlLmNvbT4KIAogICAgICAgICBbTmV3IE11bHRpY29sdW1uXSBEb24ndCBkZXN0cm95
IGFsbCB0aGUgcmVuZGVyZXJzIHdoZW4gYSBtdWx0aS1jb2x1bW4gYmxvY2sgc3RvcHMgYmVpbmcg
bXVsdGktY29sdW1uIChhbmQgdmljZSB2ZXJzYSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiAxNjI3MjQpCisrKyBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjg2LDcgKzI4Niw3IEBAIHZvaWQgU2NyaXB0Q29udHJvbGxlcjo6YXR0YWNoRGVi
dWdnZXIoSlMKICAgICBpZiAoZGVidWdnZXIpCiAgICAgICAgIGRlYnVnZ2VyLT5hdHRhY2goZ2xv
YmFsT2JqZWN0KTsKICAgICBlbHNlIGlmIChKU0M6OkRlYnVnZ2VyKiBjdXJyZW50RGVidWdnZXIg
PSBnbG9iYWxPYmplY3QtPmRlYnVnZ2VyKCkpCi0gICAgICAgIGN1cnJlbnREZWJ1Z2dlci0+ZGV0
YWNoKGdsb2JhbE9iamVjdCk7CisgICAgICAgIGN1cnJlbnREZWJ1Z2dlci0+ZGV0YWNoKGdsb2Jh
bE9iamVjdCwgSlNDOjpEZWJ1Z2dlcjo6VGVybWluYXRpbmdEZWJ1Z2dpbmdTZXNzaW9uKTsKIH0K
IAogdm9pZCBTY3JpcHRDb250cm9sbGVyOjp1cGRhdGVEb2N1bWVudCgpCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmNw
cAkocmV2aXNpb24gMTYyNzI0KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV29ya2Vy
U2NyaXB0Q29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIwMCw3ICsyMDAsNyBAQCB2
b2lkIFdvcmtlclNjcmlwdENvbnRyb2xsZXI6OmF0dGFjaERlYnVnCiAKIHZvaWQgV29ya2VyU2Ny
aXB0Q29udHJvbGxlcjo6ZGV0YWNoRGVidWdnZXIoSlNDOjpEZWJ1Z2dlciogZGVidWdnZXIpCiB7
Ci0gICAgZGVidWdnZXItPmRldGFjaChtX3dvcmtlckdsb2JhbFNjb3BlV3JhcHBlci0+Z2xvYmFs
T2JqZWN0KCkpOworICAgIGRlYnVnZ2VyLT5kZXRhY2gobV93b3JrZXJHbG9iYWxTY29wZVdyYXBw
ZXItPmdsb2JhbE9iamVjdCgpLCBKU0M6OkRlYnVnZ2VyOjpUZXJtaW5hdGluZ0RlYnVnZ2luZ1Nl
c3Npb24pOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCg==
</data>
<flag name="review"
          id="246128"
          type_id="1"
          status="+"
          setter="mhahnenberg"
    />
          </attachment>
      

    </bug>

</bugzilla>