Ok, thanks you guys you have been a great help. I think I have narrowed down the issue and so far my tests have been successful and have not seen the crash (crossing fingers). Its great to know there is a place to go to discuss issues on something that is not greatly documented. Thanks again.
On Mar 17, 2:40 am, Søren Gjesse <[email protected]> wrote: > The creation and handling of the objects for the function call looks OK. > Just make sure that the local handles are not used in C++ anywhere outside > the handle scope they where created in. Also make sure that the boundFunc is > valid that is stored in a handle in an outer handle scope or in a persistent > handle. > Regards, > Søren > > On Tue, Mar 17, 2009 at 12:50 AM, <[email protected]> wrote: > > > No I have not tried Debug mode yet, I will have to give that a try. > > But while looking through my code, I was wondering about dynamically > > creating V8 objects. There are many times I handle events and need to > > dynamically create an object and call a bound method from the script. > > As of right now I create a member in my class that is a v8::Handle< > > v8::Object > and then when i need to I create a new object and then > > setup the object to be called into script. > > > All are being created under a new handle and context scope: > > > v8::Local< v8::Object > obj = v8::Object::New(); > > > obj->Set( v8::String::New( "FieldName" ), v8::Object::New() ); > > > v8::Local< v8::Object > objField = obj->Get( v8::String::New > > ( "FieldName" ) )->ToObject(); > > > v8::Handle< v8::Array > arr = v8::Array::New( cnt ); > > > for ( unsigned int i = 0; i < cnt; i++ ) > > { > > arr->Set( v8::Integer::New( i ), > > v8::String::New( tagData[ i ].c_str() ), > > v8::ReadOnly ); > > } > > > objField ->Set( v8::String::New( field.c_str() ), arr, > > v8::ReadOnly ); > > > v8::Handle< v8::Value > argv[ 1 ] = { obj }; > > > v8::TryCatch tryCatch; > > { > > boundFunc->Call( owner, 1, argv ); > > } > > Would you say this is the correct way to handle dynamically creating > > objects to call into the script? > > > On Mar 16, 1:06 pm, Søren Gjesse <[email protected]> wrote: > > > Have you tried running the code in debug mode? V8 has a lot of assertions > > > which might fail and point you in the direction of the error. > > > Regards, > > > Søren > > > > On Mon, Mar 16, 2009 at 7:03 PM, Stephan Beal <[email protected]> > > wrote: > > > > > On Mon, Mar 16, 2009 at 6:56 PM, <[email protected]> wrote: > > > > > The only time I call SetAccessor is to create function templates and > > > > > bind C++ calls to them. Do you think this could happen during runtime > > > > > when creating an array in C++ and sending into script? > > > > > It's theoretically possible, sure. v8 is quite fussy about certain > > > > things. For example, calling Object::Cast(*myHandle) will crash if > > > > myHandle is-not-a Object. In my experience, most of the > > > > harder-to-avoid crashes happen right after main() exits, when certain > > > > objects are trying to destruct after v8 has already gone through the > > > > static destruction phase. > > > > > As a test, try something like: > > > > > myArray->Set( Integer::Cast(*myHandle) ) > > > > > where myHandle is-not-an Integer. It "should" (in my experience) crash > > > > there. Are you using: > > > > > myArray->Set( Integer::New(...), ...) > > > > > or the former form? (The latter should, in theory, not be a problem > > > > unless you just happen to use whatever number v8 reserves for > > > > NaN(???).) > > > > > -- > > > > ----- stephan beal > > > >http://wanderinghorse.net/home/stephan/ --~--~---------~--~----~------------~-------~--~----~ v8-users mailing list [email protected] http://groups.google.com/group/v8-users -~----------~----~----~----~------~----~------~--~---
