Hi all!
I have a strange issue with V8 where my JavaScript programs crash with
the following kind of error:
<unknown>:132: Uncaught TypeError: Cannot set property 'x' of
undefined
A small test JavaScript that will reproduce the problem looks like
this:
------------------------------------ 8<
-------------------------------------
"use strict";
var Thing = function (x, y) {
this.x = x;
this.y = y;
};
for (var i = 0; ; i++) {
print('pass ' + i);
new Thing(1, 2);
}
--------------------------------------------------------------------------------
There is some random behavior here. It will fail if you run the loop
for some number of iterations, usually around 1000-2000 on my system.
The problem doesn't seem to be reproducible without strict mode.
Here is the minimal embedded V8 that i'm using:
------------------------------------ 8<
-------------------------------------
#include <v8.h>
#include <cstdio>
#include <fstream>
using namespace v8;
std::string load_script(const char *filename)
{
std::ifstream t(filename);
std::string str;
t.seekg(0, std::ios::end);
str.reserve(t.tellg());
t.seekg(0, std::ios::beg);
str.assign((std::istreambuf_iterator<char>(t)),
std::istreambuf_iterator<char>());
return str;
}
static Handle<Value> print_callback(const Arguments& args)
{
HandleScope handle_scope;
Local<Value> arg = args[0];
String::Utf8Value value(arg);
printf("%s\n", *value);
return Undefined();
}
int main(int argc, char* argv[]) {
HandleScope handle_scope;
Handle<ObjectTemplate> global = ObjectTemplate::New();
global->Set(String::New("print"),
FunctionTemplate::New(print_callback));
Persistent<Context> context = Context::New(NULL, global);
Context::Scope context_scope(context);
Handle<String> source =
String::New(load_script("test.js").c_str());
Handle<Script> script = Script::Compile(source);
Handle<Value> result = script->Run();
context.Dispose();
String::AsciiValue ascii(result);
printf("%s\n", *ascii);
return 0;
}
--------------------------------------------------------------------------------
I've built the latest stable version of V8 on Illumos with some minor
SConstruct customizations from node.js.
Has anyone seen this issue before? Can you help me investigate whether
it's reproducible on other systems?
Thanks,
Henry
--
v8-users mailing list
[email protected]
http://groups.google.com/group/v8-users