I use V8 under Visual Studio 2010 on Windows 7.
I have following problem. I try to run several Java Scripts, each in a separate thread. For each thread I use a separate isolate.
This works fine if the script works well, so it does not produce any exceptions.
But if an exception occurs (e.g. caused by a syntax error), following ASSERT is thrown:
V8Test.exe!v8::internal::OS::DebugBreak() Line 1009 C++
V8Test.exe!v8::internal::OS::Abort() Line 1000 C++
V8Test.exe!API_Fatal(const char * location, const char * format, ...) Line 101 C++
V8Test.exe!v8::DefaultFatalErrorHandler(const char * location, const char * message) Line 134 C++
V8Test.exe!v8::Utils::ReportApiFailure(const char * location, const char * message) Line 226 C++
V8Test.exe!v8::ApiCheck(bool condition, const char * location, const char * message) Line 240 C++
V8Test.exe!v8::HandleScope::Initialize(v8::Isolate * isolate) Line 667 C++
V8Test.exe!v8::HandleScope::HandleScope(v8::Isolate * isolate) Line 662 C++
> V8Test.exe!v8::internal::Factory::NewError(const char * maker, const char * type, v8::internal::Vector<v8::internal::Handle<v8::internal::Object> > args) Line 720 C++
V8Test.exe!v8::internal::Factory::NewReferenceError(const char * type, v8::internal::Vector<v8::internal::Handle<v8::internal::Object> > args) Line 706 C++
V8Test.exe!v8::internal::IC::ReferenceError(const char * type, v8::internal::Handle<v8::internal::String> name) Line 286 C++
V8Test.exe!v8::internal::LoadIC::Load(v8::internal::InlineCacheState state, v8::internal::Handle<v8::internal::Object> object, v8::internal::Handle<v8::internal::String> name) Line 901 C++
V8Test.exe!v8::internal::LoadIC_Miss(v8::internal::Arguments args, v8::internal::Isolate * isolate) Line 2090 C++
....
The Problem can be avoided if I lock the whole script execution, but that would be no practicable solution for me.
Any help would be appreciated. Thanks!