<?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>17932</bug_id>
          
          <creation_ts>2008-03-18 18:38:47 -0700</creation_ts>
          <short_desc>&quot;ASSERTION FAILED: type != Continue&quot; with do/while and try/finally</short_desc>
          <delta_ts>2008-06-08 21:49:01 -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>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</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>HasReduction, InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>13638</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Jesse Ruderman">jruderman</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>gavin.sharp</cc>
    
    <cc>jwalden+bwo</cc>
    
    <cc>mrowe</cc>
    
    <cc>zwarich</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>74368</commentid>
    <comment_count>0</comment_count>
    <who name="Jesse Ruderman">jruderman</who>
    <bug_when>2008-03-18 18:38:47 -0700</bug_when>
    <thetext>This script:

  do try { continue; } finally { } while (0);

triggers an assertion failure in a Debug ToT testksj:

ASSERTION FAILED: type != Continue
(/Users/jruderman/WebKit/JavaScriptCore/kjs/ExecState.h:117 void KJS::ExecState::setCompletionType(KJS::ComplType))

The script doesn&apos;t seem to cause any problems in a Release (as opposed to Debug) build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>74372</commentid>
    <comment_count>1</comment_count>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2008-03-18 18:59:45 -0700</bug_when>
    <thetext>&lt;rdar://problem/5806712&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>74382</commentid>
    <comment_count>2</comment_count>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2008-03-18 21:56:30 -0700</bug_when>
    <thetext>TryNode::execute saves the current completion type before executing the &quot;finally&quot; block, and then uses setCompletionType to restore it afterwards:

    if (m_finallyBlock) {
        ComplType savedCompletionType = exec-&gt;completionType();
        JSValue* finallyResult = m_finallyBlock-&gt;execute(exec);
        if (exec-&gt;completionType() != Normal)
            result = finallyResult;
        else
            exec-&gt;setCompletionType(savedCompletionType);
    }

setCompletionType is implemented thusly:
        // Only for use in the implementation of execute().
        void setCompletionType(ComplType type)
        {
            ASSERT(type != Break);
            ASSERT(type != Continue);
            m_completionType = type;
        }

I suspect that this could lead to an actual bug in a release build if a targeted break or continue was used inside the &quot;finally&quot; block, as the target is not saved and restored.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>74385</commentid>
    <comment_count>3</comment_count>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2008-03-18 22:20:08 -0700</bug_when>
    <thetext>Yup, the following code behaves differently in JSCore vs SpiderMonkey:

do {
  try {
    print(&apos;continuing outer loop&apos;);
    continue;
  } finally {
    innerLoop:
    while (1) {
      print(&apos;breaking out of innerLoop&apos;);
      break innerLoop;
    }
  }
} while (1);

JSCore prints:
continuing outer loop
breaking out of innerLoop

and then exits.  SpiderMonkey prints:
continuing outer loop
breaking out of innerLoop
continuing outer loop
breaking out of innerLoop
continuing outer loop
breaking out of innerLoop
[.. and so on ..]


When the outer DoWhileNode checks exec-&gt;breakOrContinueTarget(), the target is still set to &quot;innerLoop&quot; from the break statement within the &quot;finally&quot; block.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>82602</commentid>
    <comment_count>4</comment_count>
    <who name="Cameron Zwarich (cpst)">zwarich</who>
    <bug_when>2008-06-07 21:21:24 -0700</bug_when>
    <thetext>This is fixed by SquirrelFish. I will write a layout test for this bug and some similar issues that came up during SquirrelFish development.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>82709</commentid>
    <comment_count>5</comment_count>
      <attachid>21588</attachid>
    <who name="Cameron Zwarich (cpst)">zwarich</who>
    <bug_when>2008-06-08 21:42:39 -0700</bug_when>
    <thetext>Created attachment 21588
Test cases

Here are some test cases so we can close this bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>82710</commentid>
    <comment_count>6</comment_count>
      <attachid>21588</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2008-06-08 21:43:44 -0700</bug_when>
    <thetext>Comment on attachment 21588
Test cases

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>82712</commentid>
    <comment_count>7</comment_count>
    <who name="Cameron Zwarich (cpst)">zwarich</who>
    <bug_when>2008-06-08 21:49:01 -0700</bug_when>
    <thetext>Landed in r34461.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>21588</attachid>
            <date>2008-06-08 21:42:39 -0700</date>
            <delta_ts>2008-06-08 21:43:44 -0700</delta_ts>
            <desc>Test cases</desc>
            <filename>targets.diff</filename>
            <type>text/plain</type>
            <size>4531</size>
            <attacher name="Cameron Zwarich (cpst)">zwarich</attacher>
            
              <data encoding="base64">SW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDM0NDU5KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTcgQEAKKzIwMDgtMDYtMDggIENhbWVyb24gWndhcmljaCAg
PGN3endhcmljaEB1d2F0ZXJsb28uY2E+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQnVnIDE3OTMyOiAiQVNTRVJUSU9OIEZBSUxFRDogdHlwZSAhPSBD
b250aW51ZSIgd2l0aCBkby93aGlsZSBhbmQgdHJ5L2ZpbmFsbHkKKyAgICAgICAgPGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzkzMj4KKworICAgICAgICBUaGlzIGJ1
ZyB3YXMgZml4ZWQgYnkgU3F1aXJyZWxGaXNoLCBidXQgd2Ugc2hvdWxkIGFkZCBhIHRlc3QsIGFz
IHdlbGwKKyAgICAgICAgYXMgdGVzdHMgZm9yIHJlbGF0ZWQgaXNzdWVzIGZvdW5kIHdoaWxlIGRl
dmVsb3BpbmcgU3F1aXJyZWxGaXNoLgorCisgICAgICAgICogZmFzdC9qcy9jb250aW51ZS1icmVh
ay1tdWx0aXBsZS1sYWJlbHMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvanMvY29udGlu
dWUtYnJlYWstbXVsdGlwbGUtbGFiZWxzLmh0bWw6CisgICAgICAgICogZmFzdC9qcy9yZXNvdXJj
ZXMvY29udGludWUtYnJlYWstbXVsdGlwbGUtbGFiZWxzLmpzOiBBZGRlZC4KKwogMjAwOC0wNi0w
OCAgRGFuIEJlcm5zdGVpbiAgPG1pdHpAYXBwbGUuY29tPgogCiAgICAgICAgIC0gdGVzdCBmb3Ig
PHJkYXI6Ly9wcm9ibGVtLzU5NjE5Nzc+IENyYXNoIGluIFJlbmRlckJsb2NrOjpsYXlvdXRDb2x1
bW5zKCkKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMvY29udGludWUtYnJlYWstbXVsdGlwbGUt
bGFiZWxzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL2Nv
bnRpbnVlLWJyZWFrLW11bHRpcGxlLWxhYmVscy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDM0NDU5
KQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy9jb250aW51ZS1icmVhay1tdWx0aXBsZS1sYWJlbHMt
ZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsMTQgQEAKLUV4cGVjdGVkOiAx
MjM1Njc4OQotQWN0dWFsOiAxMjM1Njc4OQotRXhwZWN0ZWQ6IDEyMwotQWN0dWFsOiAxMjMKLVRl
c3QgZG9uZQorVGhpcyB0ZXN0IGNoZWNrcyBicmVhayBhbmQgY29udGludWUgYmVoYXZpb3VyIGlu
IHRoZSBwcmVzZW5jZSBvZiBtdWx0aXBsZSBsYWJlbHMuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxs
IHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBM
RVRFIi4KKworCitQQVNTIHRlc3QxKCkgaXMgJzEyMzU2Nzg5JworUEFTUyB0ZXN0MigpIGlzICcx
MjMnCitQQVNTIHRlc3QzKCkgaXMgMTAKK1BBU1MgdGVzdDQoKSBpcyAxCitQQVNTIHRlc3Q1KCkg
aXMgMQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCiAK
SW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMvY29udGludWUtYnJlYWstbXVsdGlwbGUtbGFiZWxz
Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9jb250aW51ZS1icmVhay1t
dWx0aXBsZS1sYWJlbHMuaHRtbAkocmV2aXNpb24gMzQ0NTkpCisrKyBMYXlvdXRUZXN0cy9mYXN0
L2pzL2NvbnRpbnVlLWJyZWFrLW11bHRpcGxlLWxhYmVscy5odG1sCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDI4ICsxLDEzIEBACi08c2NyaXB0PgotZnVuY3Rpb24gcHJpbnQobXNnKSB7Ci0gICAgZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoImxvZyIpLmlubmVySFRNTCArPSBtc2c7Ci19Ci1mdW5jdGlv
biB0ZXN0KCkgewotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAg
IGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICBwcmludCgiRXhwZWN0ZWQ6
IDEyMzU2Nzg5PGJyPkFjdHVhbDogIik7Ci0gICAgYToKLSAgICBiOgotICAgIGZvciAodmFyIGZv
byA9IDE7IGZvbyA8IDEwOyBmb28rKykgewotICAgICAgIGlmIChmb28gPT0gNCkKLSAgICAgICAg
ICAgIGNvbnRpbnVlIGE7Ci0gICAgICAgcHJpbnQoZm9vKTsKLSAgICB9Ci0gICAgcHJpbnQoIjxi
cj5FeHBlY3RlZDogMTIzPGJyPkFjdHVhbDogIik7Ci0gICAgYzoKLSAgICBkOgotICAgIGZvciAo
dmFyIGJhciA9IDE7IGJhciA8IDEwOyBiYXIrKykgewotICAgICAgIGlmIChiYXIgPT0gNCkKLSAg
ICAgICAgICAgIGJyZWFrIGM7Ci0gICAgICAgcHJpbnQoYmFyKTsKLSAgICB9Ci0gICAgcHJpbnQo
Ijxicj5UZXN0IGRvbmU8YnI+Iik7Ci19Ci08L3NjcmlwdD4KLTxib2R5IG9ubG9hZD0idGVzdCgp
Ij4KLTxkaXYgaWQ9ImxvZyI+PC9kaXY+Cis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYv
L0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBo
cmVmPSJyZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9InJlc291cmNl
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNj
cmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IHNyYz0icmVz
b3VyY2VzL2NvbnRpbnVlLWJyZWFrLW11bHRpcGxlLWxhYmVscy5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0icmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8
L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pzL3Jlc291cmNlcy9jb250aW51ZS1icmVh
ay1tdWx0aXBsZS1sYWJlbHMuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9y
ZXNvdXJjZXMvY29udGludWUtYnJlYWstbXVsdGlwbGUtbGFiZWxzLmpzCShyZXZpc2lvbiAwKQor
KysgTGF5b3V0VGVzdHMvZmFzdC9qcy9yZXNvdXJjZXMvY29udGludWUtYnJlYWstbXVsdGlwbGUt
bGFiZWxzLmpzCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDkwIEBACitkZXNjcmlwdGlvbigKKydU
aGlzIHRlc3QgY2hlY2tzIGJyZWFrIGFuZCBjb250aW51ZSBiZWhhdmlvdXIgaW4gdGhlIHByZXNl
bmNlIG9mIG11bHRpcGxlIGxhYmVscy4nCispOworCitmdW5jdGlvbiB0ZXN0MSgpCit7CisgICAg
dmFyIHMgPSAiIjsKKyAgICAKKyAgICBhOgorICAgIGI6CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCAxMDsgaSsrKSB7CisgICAgICAgaWYgKGkgPT0gNCkKKyAgICAgICAgICAgIGNvbnRpbnVlIGE7
CisgICAgICAgcyArPSBpOworICAgIH0KKyAgICAKKyAgICByZXR1cm4gczsKK30KKworc2hvdWxk
QmUoInRlc3QxKCkiLCAiJzEyMzU2Nzg5JyIpOworCitmdW5jdGlvbiB0ZXN0MigpCit7CisgICAg
dmFyIHMgPSAiIjsKKyAgICAKKyAgICBhOgorICAgIGI6CisgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCAxMDsgaSsrKSB7CisgICAgICAgIGlmIChpID09IDQpCisgICAgICAgICAgICBicmVhayBhOwor
ICAgICAgICBzICs9IGk7CisgICAgfQorICAgIAorICAgIHJldHVybiBzOworfQorCitzaG91bGRC
ZSgidGVzdDIoKSIsICInMTIzJyIpOworCitmdW5jdGlvbiB0ZXN0MygpCit7CisgICAgdmFyIGk7
CisgICAgZm9yIChpID0gMTsgaSA8IDEwOyBpKyspIHsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAg
ICAgIGNvbnRpbnVlOworICAgICAgICB9IGZpbmFsbHkgeworICAgICAgICAgICAgaW5uZXJMb29w
OgorICAgICAgICAgICAgd2hpbGUgKDEpIHsKKyAgICAgICAgICAgICAgICBicmVhayBpbm5lckxv
b3A7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgcmV0dXJuIGk7
Cit9CisKK3Nob3VsZEJlKCJ0ZXN0MygpIiwgIjEwIik7CisKK2Z1bmN0aW9uIHRlc3Q0KCkKK3sK
KyAgICB2YXIgaSA9IDA7CisgICAgCisgICAgYToKKyAgICBpKys7CisgICAgd2hpbGUgKDEpIHsK
KyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIAorICAgIHJldHVybiBpOworfQorCitzaG91bGRC
ZSgidGVzdDQoKSIsICIxIik7CisKK2Z1bmN0aW9uIHRlc3Q1KCkKK3sKKyAgICB2YXIgaSA9IDA7
CisgICAgCisgICAgc3dpdGNoICgxKSB7CisgICAgZGVmYXVsdDoKKyAgICAgICAgd2hpbGUgKDEp
IHsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGkrKzsKKyAgICB9Cisg
ICAgCisgICAgcmV0dXJuIGk7Cit9CisKK3Nob3VsZEJlKCJ0ZXN0NSgpIiwgIjEiKTsKKwordmFy
IHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cg==
</data>
<flag name="review"
          id="9466"
          type_id="1"
          status="+"
          setter="oliver"
    />
          </attachment>
      

    </bug>

</bugzilla>