We should be able to terminate here since there is a loop. This is a bug. I will make sure to fix the issue on bleeding_edge today.
Thanks for reporting this! -- Mads On Sat, Nov 21, 2009 at 4:45 PM, Xiang Zhong <[email protected]> wrote: > Hi, All, > > It seems that script v8::V8::TerminateExecution can't terminate the simplest > script like: > for (;;) > { > print("Still running"); > } > Why?? > > Reproduction steps: > ----------------------------- > There is a test-thread-termination.cc under project ccTest, > Change function Doloop to following, then the test case > "test-thread-termination/TerminateOnlyV8ThreadFromThreadItself" will fail > v8::Handle<v8::Value> DoLoop(const v8::Arguments& args) { > v8::TryCatch try_catch; > //v8::Script::Compile(v8::String::New("function f() {" > // " var term = true;" > // " try {" > // " while(true) {" > // " if (term) terminate();" > // " term = false;" > // " }" > // " fail();" > // " } catch(e) {" > // " fail();" > // " }" > // "}" > // "f()"))->Run(); > v8::Script::Compile(v8::String::New("var term = true; while(true){if > (term) terminate(); term = false;}"))->Run(); > > CHECK(try_catch.HasCaught()); > CHECK(try_catch.Exception()->IsNull()); > CHECK(try_catch.Message().IsEmpty()); > CHECK(!try_catch.CanContinue()); > return v8::Undefined(); > } > > Does anyone encounter the same situation? > > Sincerely~ > Xiang > > > --~--~---------~--~----~------------~-------~--~----~ v8-users mailing list [email protected] http://groups.google.com/group/v8-users -~----------~----~----~----~------~----~------~--~---
