Could you create a reproduction of this issue and file a bug report?
Execution termination throws an exception that cannot be caught by
JavaScript. Control is returned to C++ activations (where the result
will be an empty handle) so that C++ can do cleanup before returning
to the calling JavaScript. When there is no more JavaScript frames on
the stack you can continue using V8. Something might have broken in
the termination support. If you can provide a stand-alone example
program that reproduces the issue we can investigate.

Thanks,    -- Mads

On Sat, May 7, 2011 at 4:26 PM, mcot <[email protected]> wrote:
> Ok... so the problem with terminate execution is that it will
> completely kill a given isolate (as far as I can tell).  What I think
> that means is that all local handles are destroyed and all persistant
> handles are disposed.  What I think you want (and also something I
> want) is to be able to set a timeout for a single call to script-
>>Run().  There is a subtle difference here.  If your application calls
> Run many times and is using a single isolate then we still have a
> problem thats not solved by V8 (as far as I can tell).
>
> Hopefully a V8 dev will come in here and explain this better and
> hopefully offer a solution that I am not seeing.  However, if we get
> enough interest in this, I want to suggest a formal feature
> enhancement to the V8 team to add a parameter to the Run function that
> takes a timeout and maybe also a callback for when the timeout is
> exceeded.
>
> Here is the scenario I want to solve:
>
> 1.) My application is not threaded and it uses a single isolate.
> 2.) My application calls Run() many times.  It does some work in C++,
> calls Run() to run some JS supplied by a user, does some work in C++,
> calls Run() ect...
> 3.) The JS supplied by the user could have infinite loops or long
> running functions where the JS code is not calling into C++ (where I
> could prevent them from running).
>
>
>
>
>
> On May 6, 9:18 am, Chinnu <[email protected]> wrote:
>> Hi,
>>
>> I've been trying to implement a way to limit the execution time of a
>> script in V8. I've seen some previous posts that suggest using Locker
>> and Preemption (which effectively schedules the thread) and check for
>> timeout in the 'OnPreemtionReceived' method. If timeout exceeded,
>> invoke TerminateExecution().
>>
>> However, invoking TerminateExecution() from within
>> 'OnPreemptionReceived()' method is causing issues (I'm guessing it's
>> leaving the stack in an unbalanced state).
>>
>> Is it wrong to invoke TerminateExecution() from within V8's code? Is
>> there a better way to implement the limiting of execution time?
>>
>> Thank you,
>> Ravi
>
> --
> v8-users mailing list
> [email protected]
> http://groups.google.com/group/v8-users
>

-- 
v8-users mailing list
[email protected]
http://groups.google.com/group/v8-users

Reply via email to