Hi Ricky, Yeah, that looks like a dead object.
I would suspect a Handle-misuse somewhere. However it is hard to diagnose. You need to look through your code and check that you have HandleScopes in proper places, that you use Persistent handles where appropriate and does not simply return Local handles without properly closing containing HandleScope. -- Vyacheslav Egorov On Thu, Apr 21, 2011 at 8:04 PM, Ricky Charlet <[email protected]> wrote: > BTW, > This is trunk code from 4/21. > > On Apr 21, 10:51 am, Ricky Charlet <[email protected]> wrote: >> Howdy, >> I'm new to v8. However my company has been using v8 since 1.3. >> I've got the task to investigate modernizing it. So I've got two >> variables in play here... I'm changing from v8-1.3 to v8-3.3.1 and >> also changing from a 32bit architecture to a 64 bit architecture. I'm >> suspecting the 64 bit change is causing my crash for the modest reason >> that there are so many casts in my path to the crash. >> >> OK, So I have v8-3.3.1 complied with >> `scons arch=x64 arch_size=64 mode=debug` and I've statically linked my >> code to libv8_g.a (renamed to libv8.a). >> >> My program is calling v8::Array::Length in api.cc. I guess I'm >> calling length on a dead object because of the "deadbee..." in >> "#1 0x00000000006034e0 in v8::internal::HeapObject::map >> (this=0xdeadbeedbeadbe05) at src/objects-inl.h:1176" >> >> I've noticed many casts up and down the frame0 through frame5 stuff. >> That may or may not be germane to the issue and I did not ponder them >> very deeply before I just ran to this list to see if anyone else wants >> to chime in with some experience and wisdom here. >> >> Here is my gdb stack trace. >> >> Program received signal SIGSEGV, Segmentation fault. >> 0x0000000000603536 in v8::internal::HeapObject::map_word >> (this=0xdeadbeedbeadbe05) >> at src/objects-inl.h:1186 >> 1186 return MapWord(reinterpret_cast<uintptr_t>(READ_FIELD(this, >> kMapOffset))); >> (gdb) bt >> #0 0x0000000000603536 in v8::internal::HeapObject::map_word ( >> this=0xdeadbeedbeadbe05) at src/objects-inl.h:1186 >> #1 0x00000000006034e0 in v8::internal::HeapObject::map >> (this=0xdeadbeedbeadbe05) >> at src/objects-inl.h:1176 >> #2 0x000000000060224a in v8::internal::Object::IsHeapNumber() () >> #3 0x00000000006026ae in v8::internal::Object::IsNumber() () >> #4 0x00000000006031f6 in v8::internal::Object::Number() () >> #5 0x00000000005fac84 in v8::Array::Length (this=0x147ded8) at src/ >> api.cc:4297 >> #6 0x00000000004566c5 in mus_parser::_create_step >> (this=0x7fffffffdff0, obj=...) >> at ../../mus_parser_gen.cc:2840 >> #7 0x000000000043f9d2 in mus_parser::_create_scenario >> (this=0x7fffffffdff0, obj=...) >> at ../../mus_parser.cc:276 >> #8 0x0000000000442764 in mus_parser::load (this=0x7fffffffdff0, >> musl=...) >> at ../../mus_parser.cc:681 >> #9 0x0000000000480ea6 in mus_test_builder::make_scenario >> (this=0x7fffffffe990, >> scheduler=0x7fffffffe820, obj=..., error=...) at ../../ >> mus_test_builder.cc:200 >> #10 0x000000000048014d in mus_test_builder::make_track >> (this=0x7fffffffe990, >> scheduler=0x7fffffffe820, obj=..., error=...) at ../../ >> mus_test_builder.cc:141 >> #11 0x000000000047ff1f in mus_test_builder::build_test_internal ( >> this=0x7fffffffe990, scheduler=0x7fffffffe820, json=..., >> error=...) >> at ../../mus_test_builder.cc:125 >> #12 0x000000000047fb8e in mus_test_builder::build_test >> (this=0x7fffffffe990, >> scheduler=0x7fffffffe820, json=..., error=...) at ../../ >> mus_test_builder.cc:73 >> #13 0x000000000040e3a5 in execute_json (opts=...) at ../../testr.cc: >> 552 >> #14 0x000000000040e816 in main (argc=0, argv=0x7fffffffec70) at ../../ >> testr.cc:621 >> (gdb) list >> 1181 set_map_word(MapWord::FromMap(value)); >> 1182 } >> 1183 >> 1184 >> 1185 MapWord HeapObject::map_word() { >> 1186 return MapWord(reinterpret_cast<uintptr_t>(READ_FIELD(this, >> kMapOffset))); >> 1187 } >> 1188 >> 1189 >> 1190 void HeapObject::set_map_word(MapWord map_word) { >> (gdb) :q >> Undefined command: "". Try "help". >> (gdb) frame 6 >> #6 0x00000000004566c5 in mus_parser::_create_step >> (this=0x7fffffffdff0, obj=...) >> at ../../mus_parser_gen.cc:2840 >> 2840 for (uint32_t n=0; n<variables->Length(); ++n) { >> (gdb) l >> 2835 if (v_payload == 0) goto bummer; >> 2836 v->payload(v_payload); >> 2837 } >> 2838 >> 2839 Handle<Array> variables = _array(obj, "variables"); >> 2840 for (uint32_t n=0; n<variables->Length(); ++n) { >> 2841 Handle<Object> variable_obj = _object(variables, n); >> 2842 mus_step_variable *variable = _create_variable(v, >> variable_obj); >> 2843 if (variable == 0) goto bummer; >> 2844 v->variables(variable); >> >> Hopefully, >> Ricky Charlet > > -- > 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
