Status: New
Owner: ----

New issue 884 by emit.sorrels: shell sample Infinite loop in JSObject::LookupCallbackSetterInPrototypes
http://code.google.com/p/v8/issues/detail?id=884

x64 Linux release mode, but not in debug mode.

I'm not sure if this is a gcc bug or v8 bug because this only happens when I compile under release mode, g++ 4.5.1 (arch linux box).
Works fine both release&debug w/ g++ 4.4.5 (debian box).
Both machines use x64 kernels/libs.

fresh checkout as of now:

svn co http://v8.googlecode.com/svn/trunk v8
scons sample=shell arch=x64 mode=release

./shell
(infinite loop)

gdb shell
^C
(gdb) bt
<snip>
#7 0x000000000049c533 in v8::internal::JSObject::LookupCallbackSetterInPrototypes(v8::internal::String*, v8::internal::LookupResult*) () #8 0x00000000004a39af in v8::internal::JSObject::SetProperty(v8::internal::LookupResult*, v8::internal::String*, v8::internal::Object*, PropertyAttributes) () #9 0x00000000004a3d09 in v8::internal::JSObject::SetProperty(v8::internal::String*, v8::internal::Object*, PropertyAttributes) () #10 0x000000000044f9de in v8::internal::SetProperty(v8::internal::Handle<v8::internal::JSObject>, v8::internal::Handle<v8::internal::String>, v8::internal::Handle<v8::internal::Object>, PropertyAttributes) () #11 0x0000000000442446 in v8::internal::Factory::NewFunctionWithPrototype(v8::internal::Handle<v8::internal::String>, v8::internal::InstanceType, int, v8::internal::Handle<v8::internal::JSObject>, v8::internal::Handle<v8::internal::Code>, bool) () #12 0x000000000041670c in v8::internal::InstallFunction(v8::internal::Handle<v8::internal::JSObject>, char const*, v8::internal::InstanceType, int, v8::internal::Handle<v8::internal::JSObject>, v8::internal::Builtins::Name, bool) () #13 0x00000000004182ef in v8::internal::Genesis::InitializeGlobal(v8::internal::Handle<v8::internal::GlobalObject>, v8::internal::Handle<v8::internal::JSFunction>) () #14 0x000000000041de5d in v8::internal::Genesis::Genesis(v8::internal::Handle<v8::internal::Object>, v8::Handle<v8::ObjectTemplate>, v8::ExtensionConfiguration*) () #15 0x000000000041dfeb in v8::internal::Bootstrapper::CreateEnvironment(v8::internal::Handle<v8::internal::Object>, v8::Handle<v8::ObjectTemplate>, v8::ExtensionConfiguration*) () #16 0x0000000000411372 in v8::Context::New(v8::ExtensionConfiguration*, v8::Handle<v8::ObjectTemplate>, v8::Handle<v8::Value>) ()
#17 0x0000000000403692 in RunMain(int, char**) ()
#18 0x0000000000403896 in main ()

-----
the pt != Heap::null_value() condition in the for loop is never satisfied so it goes on forever.
checking the value of pt->GetPrototype(), it is the same as pt...

doing some additional traces, the correctly working shell (i.e. "shell_g") goes through this method with name parameters ("constructor", "constructor", "Object", "constructor", "Function", "constructor", "Array", "Number", etc) before presenting the repl.

the nonfunctional shell goes into the infinite loop on "constructor", between "Object", "constructor" and "Function" (never gets to "Function").

If anyone has suggestions on how to track down the bug, please let me know and I will investigate further... it may just be my "bleeding edge" libs uninitializing and/or corrupting memory, but in any case there seems to be a bug of some sort somewhere.



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

Reply via email to