This should have been fixed by the following change, can you try again
with a later version? It should work fine without any flags and also
with the "--inline-construct" flag.

http://code.google.com/p/v8/source/detail?r=10920

Best regards,
Michael



On Fri, Mar 9, 2012 at 16:23, Henry Rodrick <[email protected]> wrote:

> 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
>

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

Reply via email to