An out of memory situation can leave the VM in an inconsistent state, so it is not possible to continue. It is therefore the expected behavior that we cannot continue here.
Cheers, -- Mads On Wed, Nov 25, 2009 at 3:45 AM, Xiang <[email protected]> wrote: > > Hi, All, > > I have declared v8::V8::IgnoreOutOfMemoryException(), and the out of > memory exception is caught by trycatch as expected. > > However, after disposing the current context, we can't create a new > context. > > The handle is empty. > > Please check the following UT case: > > Reproduction steps > --------------------------------------------------------- > Please add the following case to test-api.cc, > > When creating a new context, > v8::Persistent<v8::Context> context = v8::Context::New(0, > v8::Handle<v8::ObjectTemplate>(), v8::Handle<v8::Value>()); > It will fail > > TEST(CreateNewContextAfterOutOfMemory) { > // It's not possible to read a snapshot into a heap with different > dimensions. > if (v8::internal::Snapshot::IsEnabled()) return; > // Set heap limits. > static const int K = 1024; > v8::ResourceConstraints constraints; > constraints.set_max_young_space_size(256 * K); > constraints.set_max_old_space_size(4 * K * K); > v8::SetResourceConstraints(&constraints); > > // Execute a script that causes out of memory. > v8::HandleScope scope; > { > LocalContext context; > v8::V8::IgnoreOutOfMemoryException(); > Local<Script> script = > Script::Compile(String::New(js_code_causing_out_of_memory)); > Local<Value> result = script->Run(); > > // Check for out of memory state. > CHECK(result.IsEmpty()); > CHECK(context->HasOutOfMemoryException()); > } > > { > v8::Persistent<v8::Context> context = v8::Context::New(0, > v8::Handle<v8::ObjectTemplate>(), v8::Handle<v8::Value>()); > > > //Check here! > > //I think we should be allowed to create a new context > //And the Handle should not be empty > CHECK(!context.IsEmpty()); > context.Dispose(); > context.Clear(); > } > } > > > --~--~---------~--~----~------------~-------~--~----~ v8-dev mailing list [email protected] http://groups.google.com/group/v8-dev -~----------~----~----~----~------~----~------~--~---
