> I need to review my own code I recommend to start by taking a look at _array function which returned Array in question.
> Why did Length() method fail to detect IsDeadCheck()? IsDeadCheck checks whether VM is dead, not whether the object itself is dead. There is no way to detect whether a given object is valid or it died because his space can be already reused for something else. -- Vyacheslav Egorov On Fri, Apr 22, 2011 at 5:44 PM, <rchar...@speakeasy.net> wrote: > > Thanks Vyacheslav, > > Thing #1: I do agree with you, I need to review my own code and track my > objects better and not try to ask for Length() on a dead object. Bummer. > > Thing #2: Why did Length() method fail to detect IsDeadCheck()? It seems > that my `this` pointer is a corrupted form of kZapValue. I have > this=0xdeadbeedbeadbe05 > instead of deadbeeddeadbeed. I think the poignant question here is, "who > corrupted my kZapValue?". But that is probably very difficult to answer. > Bummer^2. > > -- > Ricky Charlet > See Y' Later > > On Fri Apr 22 7:53 , Vyacheslav Egorov sent: > >>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 rchar...@speakeasy.net> wrote: >>> BTW, >>> This is trunk code from 4/21. >>> >>> On Apr 21, 10:51 am, Ricky Charlet rchar...@speakeasy.net> 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(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(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; nLength(); ++n) { >>>> (gdb) l >>>> 2835 if (v_payload == 0) goto bummer; >>>> 2836 v->payload(v_payload); >>>> 2837 } >>>> 2838 >>>> 2839 Handle variables = _array(obj, "variables"); >>>> 2840 for (uint32_t n=0; nLength(); ++n) { >>>> 2841 Handle 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 >>> v8-users@googlegroups.com >>> http://groups.google.com/group/v8-users >>> >> >>-- >>v8-users mailing list >>v8-users@googlegroups.com >>http://groups.google.com/group/v8-users > > > -- v8-users mailing list v8-users@googlegroups.com http://groups.google.com/group/v8-users