<?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>140811</bug_id>
          
          <creation_ts>2015-01-22 18:48:43 -0800</creation_ts>
          <short_desc>Immediate crash when setting JS breakpoint</short_desc>
          <delta_ts>2015-01-23 11:52:27 -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>312.x</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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="Michael Saboff">msaboff</reporter>
          <assigned_to name="Michael Saboff">msaboff</assigned_to>
          <cc>mark.lam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1063567</commentid>
    <comment_count>0</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2015-01-22 18:48:43 -0800</bug_when>
    <thetext>Sometimes when setting a breakpoint in JavaScript code using the inspector you&apos;ll get an immediate crash.  The reason for the crash is because the codeBlock says its scopeRegister is at offset 0 (which should never be).   The crash trace from a debug build is below:

(lldb) bt 15
* thread #1: tid = 0xcd1d7, 0x00000001125e121d JavaScriptCore`JSC::StructureIDTable::get(this=0x0000206000000338, structureID=1462580048) + 45 at StructureIDTable.h:85, queue = &apos;com.apple.main-thread&apos;, stop reason = EXC_BAD_ACCESS (code=1, address=0x206000000360)
    frame #0: 0x00000001125e121d JavaScriptCore`JSC::StructureIDTable::get(this=0x0000206000000338, structureID=1462580048) + 45 at StructureIDTable.h:85
    frame #1: 0x00000001125e7b76 JavaScriptCore`JSC::JSCell::structure(this=0x00007fff572d3270, vm=0x0000206000000040) const + 54 at JSCellInlines.h:106
    frame #2: 0x00000001125ef4f1 JavaScriptCore`JSC::JSCell::classInfo(this=0x00007fff572d3270) const + 97 at JSCellInlines.h:245
    frame #3: 0x00000001125e3969 JavaScriptCore`JSC::JSCell::inherits(this=0x00007fff572d3270, info=0x0000000113289b20) const + 25 at JSCellInlines.h:221
    frame #4: 0x000000011272a153 JavaScriptCore`JSC::JSScope* JSC::jsCast&lt;JSC::JSScope*&gt;(from=JSValue at 0x00007fff572d2b78) + 67 at JSCell.h:249
    frame #5: 0x000000011272a102 JavaScriptCore`JSC::Register::scope(this=0x00007fff572d3160) const + 34 at JSScope.h:239
    frame #6: 0x000000011272960d JavaScriptCore`JSC::ExecState::scope(this=0x00007fff572d3160, scopeRegisterOffset=0) const + 45 at CallFrame.h:50
  * frame #7: 0x0000000112728cb8 JavaScriptCore`JSC::DebuggerCallFrame::scope(this=0x0000000137e95e60) + 264 at DebuggerCallFrame.cpp:149
    frame #8: 0x0000000112e83737 JavaScriptCore`Inspector::ScriptDebugServer::exceptionOrCaughtValue(this=0x000000011d7f0138, state=0x00000001205df4b0) + 167 at ScriptDebugServer.cpp:340
    frame #9: 0x0000000112e83638 JavaScriptCore`Inspector::ScriptDebugServer::dispatchDidPause(this=0x000000011d7f0138, listener=0x000000011d7f0010) + 328 at ScriptDebugServer.cpp:138
    frame #10: 0x0000000112e83e35 JavaScriptCore`Inspector::ScriptDebugServer::dispatchFunctionToListeners(this=0x000000011d7f0138, listeners=0x000000011d7f0248, callback=0x0000000112e834f0)(Inspector::ScriptDebugListener*)) + 229 at ScriptDebugServer.cpp:279
    frame #11: 0x0000000112e83d3c JavaScriptCore`Inspector::ScriptDebugServer::dispatchFunctionToListeners(this=0x000000011d7f0138, callback=0x0000000112e834f0)(Inspector::ScriptDebugListener*)) + 156 at ScriptDebugServer.cpp:271
    frame #12: 0x0000000112e84129 JavaScriptCore`Inspector::ScriptDebugServer::handlePause(this=0x000000011d7f0138, vmEntryGlobalObject=0x00000001205df470, (null)=PausedForBreakpoint) + 73 at ScriptDebugServer.cpp:312
    frame #13: 0x0000000112714f4c JavaScriptCore`JSC::Debugger::pauseIfNeeded(this=0x000000011d7f0138, callFrame=0x00007fff572d30e0) + 604 at Debugger.cpp:679
    frame #14: 0x00000001127151ec JavaScriptCore`JSC::Debugger::updateCallFrameAndPauseIfNeeded(this=0x000000011d7f0138, callFrame=0x00007fff572d30e0) + 60 at Debugger.cpp:634
￼</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1063568</commentid>
    <comment_count>1</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2015-01-22 18:49:06 -0800</bug_when>
    <thetext>rdar://problem/19544274</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1063593</commentid>
    <comment_count>2</comment_count>
      <attachid>245203</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2015-01-22 21:02:30 -0800</bug_when>
    <thetext>Created attachment 245203
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1063668</commentid>
    <comment_count>3</comment_count>
      <attachid>245203</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2015-01-23 06:35:47 -0800</bug_when>
    <thetext>Comment on attachment 245203
Patch

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

I think this solution is fine for ensuring that we don’t get an incorrect local for a non-existant scope register in a DFG frame.  However, this will not entirely satisfy the debugger’s need / concept for a scope.  But that’s a different issue that we can address separately later.

Can you add a regression test please (one that sets the breakpoint in a DFG compiled function that does not have a scope register)?

&gt; Source/JavaScriptCore/bytecode/CodeBlock.cpp:1666
&gt; +    ASSERT(m_scopeRegister.isLocal() || !m_scopeRegister.isValid());

We will only clone llint or baseline CodeBlocks.  Hence, shouldn’t the scope always be valid and is a local here?

&gt; Source/JavaScriptCore/bytecode/CodeBlock.cpp:1723
&gt; +    ASSERT(m_scopeRegister.isLocal() || !m_scopeRegister.isValid());

In this case, the scope comes from an UnlinkedCodeBlock.  Should that always be valid and is a local?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1063673</commentid>
    <comment_count>4</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2015-01-23 06:50:38 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; Comment on attachment 245203 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=245203&amp;action=review
&gt; 
&gt; I think this solution is fine for ensuring that we don’t get an incorrect
&gt; local for a non-existant scope register in a DFG frame.  However, this will
&gt; not entirely satisfy the debugger’s need / concept for a scope.  But that’s
&gt; a different issue that we can address separately later.
&gt; 
&gt; Can you add a regression test please (one that sets the breakpoint in a DFG
&gt; compiled function that does not have a scope register)?

I considered adding a test, but with the ASSERT in setScopeRegister(), we crash in testapi without the fix to DFGStackLayoutPhase.cpp for the exact reason of this bug.  I didn&apos;t run any of the JS regression tests, but I expect that multiple tests would crash for the same reason.  Therefore this fix is covered by existing tests.

&gt; &gt; Source/JavaScriptCore/bytecode/CodeBlock.cpp:1666
&gt; &gt; +    ASSERT(m_scopeRegister.isLocal() || !m_scopeRegister.isValid());
&gt; 
&gt; We will only clone llint or baseline CodeBlocks.  Hence, shouldn’t the scope
&gt; always be valid and is a local here?

No.  If we could be copying a code block with an invalid scope register, see below.

&gt; &gt; Source/JavaScriptCore/bytecode/CodeBlock.cpp:1723
&gt; &gt; +    ASSERT(m_scopeRegister.isLocal() || !m_scopeRegister.isValid());
&gt; 
&gt; In this case, the scope comes from an UnlinkedCodeBlock.  Should that always
&gt; be valid and is a local?

No.  If we don&apos;t need a scope register, it will be an invalid virtual register.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1063735</commentid>
    <comment_count>5</comment_count>
      <attachid>245241</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2015-01-23 11:26:29 -0800</bug_when>
    <thetext>Created attachment 245241
Patch with updates after talking with mlam.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1063736</commentid>
    <comment_count>6</comment_count>
      <attachid>245241</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2015-01-23 11:27:43 -0800</bug_when>
    <thetext>Comment on attachment 245241
Patch with updates after talking with mlam.

r=me.  Thanks for the fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1063744</commentid>
    <comment_count>7</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2015-01-23 11:52:27 -0800</bug_when>
    <thetext>Committed r179015: &lt;http://trac.webkit.org/changeset/179015&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>245203</attachid>
            <date>2015-01-22 21:02:30 -0800</date>
            <delta_ts>2015-01-23 11:26:29 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>140811.patch</filename>
            <type>text/plain</type>
            <size>3466</size>
            <attacher name="Michael Saboff">msaboff</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTc4OTgwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI1IEBA
CisyMDE1LTAxLTIyICBNaWNoYWVsIFNhYm9mZiAgPG1zYWJvZmZAYXBwbGUuY29tPgorCisgICAg
ICAgIEltbWVkaWF0ZSBjcmFzaCB3aGVuIHNldHRpbmcgSlMgYnJlYWtwb2ludAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQwODExCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2hlbiB0aGUgREZHIHN0YWNr
IGxheW91dCBwaGFzZSBkb2Vzbid0IGFsbG9jYXRlIGEgcmVnaXN0ZXIgZm9yIHRoZSBzY29wZSBy
ZWdpc3RlciwKKyAgICAgICAgaXQgaW5jb3JyZWN0bHkgc2V0cyB0aGUgc2NvcGUgcmVnaXN0ZXIg
aW4gdGhlIGNvZGUgYmxvY2sgdG8gYSBiYWQgdmFsdWUsIG9uZSB3aXRoCisgICAgICAgIGFuIG9m
ZnNldCBvZiAwLiAgQ2hhbmdlZCBpdCBzbyB0aGF0IHdlIHNldCB0aGUgY29kZSBibG9jaydzIHNj
b3BlIHJlZ2lzdGVyIHRvIHRoZSAKKyAgICAgICAgaW52YWxpZCBWaXJ0dWFsUmVnaXN0ZXIgaW5z
dGVhZC4KKworICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6
OkNvZGVCbG9jazo6Q29kZUJsb2NrKToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suaDoK
KyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpzZXRTY29wZVJlZ2lzdGVyKToKKyAgICAgICAgKEpT
Qzo6Q29kZUJsb2NrOjpzY29wZVJlZ2lzdGVyKToKKyAgICAgICAgQWRkZWQgQVNTRVJUcyB0byBj
YXRjaCBhbnkgZnV0dXJlIGltcHJvcGVyIHNldHRpbmcgb2YgdGhlIGNvZGUgYmxvY2sncyBzY29w
ZSByZWdpc3Rlci4KKworICAgICAgICAqIGRmZy9ERkdTdGFja0xheW91dFBoYXNlLmNwcDoKKyAg
ICAgICAgKEpTQzo6REZHOjpTdGFja0xheW91dFBoYXNlOjpydW4pOgorCiAyMDE1LTAxLTIyICBS
eW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIEFkZCBhIGJ1aWxkIGZs
YWcgZm9yIEVTNiBjbGFzcyBzeW50YXgKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9Db2RlQmxvY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9Db2RlQmxvY2suY3BwCShyZXZpc2lvbiAxNzg5NjUpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTY2Myw3
ICsxNjYzLDggQEAgQ29kZUJsb2NrOjpDb2RlQmxvY2soQ29weVBhcnNlZEJsb2NrVGFnLAogI2Vu
ZGlmCiB7CiAgICAgQVNTRVJUKG1faGVhcC0+aXNEZWZlcnJlZCgpKTsKLSAgICAKKyAgICBBU1NF
UlQobV9zY29wZVJlZ2lzdGVyLmlzTG9jYWwoKSB8fCAhbV9zY29wZVJlZ2lzdGVyLmlzVmFsaWQo
KSk7CisKICAgICBpZiAoU3ltYm9sVGFibGUqIHN5bWJvbFRhYmxlID0gb3RoZXIuc3ltYm9sVGFi
bGUoKSkKICAgICAgICAgbV9zeW1ib2xUYWJsZS5zZXQoKm1fdm0sIG1fb3duZXJFeGVjdXRhYmxl
LmdldCgpLCBzeW1ib2xUYWJsZSk7CiAgICAgCkBAIC0xNzE5LDYgKzE3MjAsNyBAQCBDb2RlQmxv
Y2s6OkNvZGVCbG9jayhTY3JpcHRFeGVjdXRhYmxlKiBvCiAjZW5kaWYKIHsKICAgICBBU1NFUlQo
bV9oZWFwLT5pc0RlZmVycmVkKCkpOworICAgIEFTU0VSVChtX3Njb3BlUmVnaXN0ZXIuaXNMb2Nh
bCgpIHx8ICFtX3Njb3BlUmVnaXN0ZXIuaXNWYWxpZCgpKTsKIAogICAgIGJvb2wgZGlkQ2xvbmVT
eW1ib2xUYWJsZSA9IGZhbHNlOwogICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0NvZGVCbG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9Db2RlQmxvY2suaAkocmV2aXNpb24gMTc4OTY1KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMjQsMTIgKzMy
NCwxMiBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldFNjb3BlUmVnaXN0ZXIoVmlydHVhbFJlZ2lz
dGVyIHNjb3BlUmVnaXN0ZXIpCiAgICAgeworICAgICAgICBBU1NFUlQoc2NvcGVSZWdpc3Rlci5p
c0xvY2FsKCkgfHwgIXNjb3BlUmVnaXN0ZXIuaXNWYWxpZCgpKTsKICAgICAgICAgbV9zY29wZVJl
Z2lzdGVyID0gc2NvcGVSZWdpc3RlcjsKICAgICB9CiAKICAgICBWaXJ0dWFsUmVnaXN0ZXIgc2Nv
cGVSZWdpc3RlcigpIGNvbnN0CiAgICAgewotICAgICAgICBBU1NFUlQobV9zY29wZVJlZ2lzdGVy
LmlzVmFsaWQoKSk7CiAgICAgICAgIHJldHVybiBtX3Njb3BlUmVnaXN0ZXI7CiAgICAgfQogCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0YWNrTGF5b3V0UGhhc2UuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RhY2tMYXlvdXRQaGFz
ZS5jcHAJKHJldmlzaW9uIDE3ODk2NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3RhY2tMYXlvdXRQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2OSw4ICsxNjksOCBAQCBw
dWJsaWM6CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIGlmIChjb2RlQmxvY2soKS0+c2Nv
cGVSZWdpc3RlcigpLmlzVmFsaWQoKSkgewotICAgICAgICAgICAgY29kZUJsb2NrKCktPnNldFNj
b3BlUmVnaXN0ZXIoCi0gICAgICAgICAgICAgICAgdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoYWxs
b2NhdGlvbltjb2RlQmxvY2soKS0+c2NvcGVSZWdpc3RlcigpLnRvTG9jYWwoKV0pKTsKKyAgICAg
ICAgICAgIHVuc2lnbmVkIHNjb3BlUmVnaXN0ZXJBbGxvY2F0aW9uID0gYWxsb2NhdGlvbltjb2Rl
QmxvY2soKS0+c2NvcGVSZWdpc3RlcigpLnRvTG9jYWwoKV07CisgICAgICAgICAgICBjb2RlQmxv
Y2soKS0+c2V0U2NvcGVSZWdpc3RlcihzY29wZVJlZ2lzdGVyQWxsb2NhdGlvbiA9PSBVSU5UX01B
WCA/IFZpcnR1YWxSZWdpc3RlcigpIDogdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoc2NvcGVSZWdp
c3RlckFsbG9jYXRpb24pKTsKICAgICAgICAgfQogCiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9
IG1fZ3JhcGgubV9pbmxpbmVWYXJpYWJsZURhdGEuc2l6ZSgpOyBpLS07KSB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>245241</attachid>
            <date>2015-01-23 11:26:29 -0800</date>
            <delta_ts>2015-01-23 11:27:43 -0800</delta_ts>
            <desc>Patch with updates after talking with mlam.</desc>
            <filename>140811-2.patch</filename>
            <type>text/plain</type>
            <size>3585</size>
            <attacher name="Michael Saboff">msaboff</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTc4OTgzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI4IEBA
CisyMDE1LTAxLTIzICBNaWNoYWVsIFNhYm9mZiAgPG1zYWJvZmZAYXBwbGUuY29tPgorCisgICAg
ICAgIEltbWVkaWF0ZSBjcmFzaCB3aGVuIHNldHRpbmcgSlMgYnJlYWtwb2ludAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQwODExCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2hlbiB0aGUgREZHIHN0YWNr
IGxheW91dCBwaGFzZSBkb2Vzbid0IGFsbG9jYXRlIGEgcmVnaXN0ZXIgZm9yIHRoZSBzY29wZSBy
ZWdpc3RlciwKKyAgICAgICAgaXQgaW5jb3JyZWN0bHkgc2V0cyB0aGUgc2NvcGUgcmVnaXN0ZXIg
aW4gdGhlIGNvZGUgYmxvY2sgdG8gYSBiYWQgdmFsdWUsIG9uZSB3aXRoCisgICAgICAgIGFuIG9m
ZnNldCBvZiAwLiAgQ2hhbmdlZCBpdCBzbyB0aGF0IHdlIHNldCB0aGUgY29kZSBibG9jaydzIHNj
b3BlIHJlZ2lzdGVyIHRvIHRoZSAKKyAgICAgICAgaW52YWxpZCBWaXJ0dWFsUmVnaXN0ZXIgaW5z
dGVhZC4KKworICAgICAgICBObyB0ZXN0cyBuZWVkZWQgYXMgYWRkaW5nIHRoZSBBU1NFUlQgaW4g
c2V0U2NvcGVSZWdpc3RlcigpIHdhcyB1c2VkIHRvIGZpbmQgdGhlIGJ1Zy4KKyAgICAgICAgV2Ug
Y3Jhc2ggd2l0aCB0aGF0IEFTU0VSVCBpbiB0ZXN0YXBpIGFuZCBsaWtlbHkgbWFueSBvdGhlciB0
ZXN0cyBhcyB3ZWxsLgorCisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAg
ICAgKEpTQzo6Q29kZUJsb2NrOjpDb2RlQmxvY2spOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVC
bG9jay5oOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnNldFNjb3BlUmVnaXN0ZXIpOgorICAg
ICAgICAoSlNDOjpDb2RlQmxvY2s6OnNjb3BlUmVnaXN0ZXIpOgorICAgICAgICBBZGRlZCBBU1NF
UlRzIHRvIGNhdGNoIGFueSBmdXR1cmUgaW1wcm9wZXIgc2V0dGluZyBvZiB0aGUgY29kZSBibG9j
aydzIHNjb3BlIHJlZ2lzdGVyLgorCisgICAgICAgICogZGZnL0RGR1N0YWNrTGF5b3V0UGhhc2Uu
Y3BwOgorICAgICAgICAoSlNDOjpERkc6OlN0YWNrTGF5b3V0UGhhc2U6OnJ1bik6CisKIDIwMTUt
MDEtMjIgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgQWRkIGEg
YnVpbGQgZmxhZyBmb3IgRVM2IGNsYXNzIHN5bnRheApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHJldmlzaW9uIDE3ODk4MykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xNjYzLDcgKzE2NjMsOCBAQCBDb2RlQmxvY2s6OkNvZGVCbG9jayhDb3B5UGFyc2VkQmxvY2tU
YWcsCiAjZW5kaWYKIHsKICAgICBBU1NFUlQobV9oZWFwLT5pc0RlZmVycmVkKCkpOwotICAgIAor
ICAgIEFTU0VSVChtX3Njb3BlUmVnaXN0ZXIuaXNMb2NhbCgpKTsKKwogICAgIGlmIChTeW1ib2xU
YWJsZSogc3ltYm9sVGFibGUgPSBvdGhlci5zeW1ib2xUYWJsZSgpKQogICAgICAgICBtX3N5bWJv
bFRhYmxlLnNldCgqbV92bSwgbV9vd25lckV4ZWN1dGFibGUuZ2V0KCksIHN5bWJvbFRhYmxlKTsK
ICAgICAKQEAgLTE3MTksNiArMTcyMCw3IEBAIENvZGVCbG9jazo6Q29kZUJsb2NrKFNjcmlwdEV4
ZWN1dGFibGUqIG8KICNlbmRpZgogewogICAgIEFTU0VSVChtX2hlYXAtPmlzRGVmZXJyZWQoKSk7
CisgICAgQVNTRVJUKG1fc2NvcGVSZWdpc3Rlci5pc0xvY2FsKCkpOwogCiAgICAgYm9vbCBkaWRD
bG9uZVN5bWJvbFRhYmxlID0gZmFsc2U7CiAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCShyZXZpc2lvbiAxNzg5ODMpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTMyNCwx
MiArMzI0LDEyIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0U2NvcGVSZWdpc3RlcihWaXJ0dWFs
UmVnaXN0ZXIgc2NvcGVSZWdpc3RlcikKICAgICB7CisgICAgICAgIEFTU0VSVChzY29wZVJlZ2lz
dGVyLmlzTG9jYWwoKSB8fCAhc2NvcGVSZWdpc3Rlci5pc1ZhbGlkKCkpOwogICAgICAgICBtX3Nj
b3BlUmVnaXN0ZXIgPSBzY29wZVJlZ2lzdGVyOwogICAgIH0KIAogICAgIFZpcnR1YWxSZWdpc3Rl
ciBzY29wZVJlZ2lzdGVyKCkgY29uc3QKICAgICB7Ci0gICAgICAgIEFTU0VSVChtX3Njb3BlUmVn
aXN0ZXIuaXNWYWxpZCgpKTsKICAgICAgICAgcmV0dXJuIG1fc2NvcGVSZWdpc3RlcjsKICAgICB9
CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RhY2tMYXlvdXRQaGFzZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdGFja0xheW91
dFBoYXNlLmNwcAkocmV2aXNpb24gMTc4OTgzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTdGFja0xheW91dFBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTY5LDggKzE2OSw4
IEBAIHB1YmxpYzoKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgaWYgKGNvZGVCbG9jaygp
LT5zY29wZVJlZ2lzdGVyKCkuaXNWYWxpZCgpKSB7Ci0gICAgICAgICAgICBjb2RlQmxvY2soKS0+
c2V0U2NvcGVSZWdpc3RlcigKLSAgICAgICAgICAgICAgICB2aXJ0dWFsUmVnaXN0ZXJGb3JMb2Nh
bChhbGxvY2F0aW9uW2NvZGVCbG9jaygpLT5zY29wZVJlZ2lzdGVyKCkudG9Mb2NhbCgpXSkpOwor
ICAgICAgICAgICAgdW5zaWduZWQgc2NvcGVSZWdpc3RlckFsbG9jYXRpb24gPSBhbGxvY2F0aW9u
W2NvZGVCbG9jaygpLT5zY29wZVJlZ2lzdGVyKCkudG9Mb2NhbCgpXTsKKyAgICAgICAgICAgIGNv
ZGVCbG9jaygpLT5zZXRTY29wZVJlZ2lzdGVyKHNjb3BlUmVnaXN0ZXJBbGxvY2F0aW9uID09IFVJ
TlRfTUFYID8gVmlydHVhbFJlZ2lzdGVyKCkgOiB2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChzY29w
ZVJlZ2lzdGVyQWxsb2NhdGlvbikpOwogICAgICAgICB9CiAKICAgICAgICAgZm9yICh1bnNpZ25l
ZCBpID0gbV9ncmFwaC5tX2lubGluZVZhcmlhYmxlRGF0YS5zaXplKCk7IGktLTspIHsK
</data>
<flag name="review"
          id="270188"
          type_id="1"
          status="+"
          setter="mark.lam"
    />
          </attachment>
      

    </bug>

</bugzilla>