Hello Icyrong, Does the problem you have described happen after your modifications only?
Thanks! On Wed, Feb 18, 2009 at 5:03 AM, 史成荣 <[email protected]> wrote: > hi, all. > I modify the vmcore, but an assert error happened when the method > "si_goto_previous" in stack_iterator_ia32.cpp is executed. The souce code of > method "si_goto_previous" is as follow. The bold line is the error assert > and it is the second condition " si->cci->get_method()" that makes the whole > express false. > Could anyone tell me why the "_method" field of "si->cci" is NULL and > when it will happen? > void si_goto_previous(StackIterator* si, bool over_popped) > { > ASSERT_NO_INTERPRETER > if (si->cci) { > TRACE2("si", ("si_goto_previous from ip = %p (%s%s)", > (void*)si_get_ip(si), > method_get_name(si->cci->get_method()), > method_get_descriptor(si->cci->get_method()))); > *assert(si->cci->get_jit() && si->cci->get_method()); > * si->cci->get_jit()->unwind_stack_frame(si->cci->get_method(), > si_get_jit_context(si)); > si->c.is_ip_past = TRUE; > } else { > TRACE2("si", ("si_goto_previous from ip = %p (M2N)", > (void*)si_get_ip(si))); > if (!si->m2nfl) return; > si_unwind_from_m2n(si, over_popped); > } > Global_Env *vm_env = VM_Global_State::loader_env; > si->cci = vm_env->vm_methods->find(si_get_ip(si), > si_get_jit_context(si)->is_ip_past); > if (si->cci) { > TRACE2("si", ("si_goto_previous to ip = %p (%s%s)", > (void*)si_get_ip(si), > method_get_name(si->cci->get_method()), > method_get_descriptor(si->cci->get_method()))); > } else { > TRACE2("si", ("si_goto_previous to ip = %p (M2N)", > (void*)si_get_ip(si))); > } > } > -- С уважением, Алексей Федотов, ЗАО <<Телеком Экспресс>>
