Uploaded image for project: 'Harmony'
  1. Harmony
  2. HARMONY-4388

[drlvm][jvmti] DRLVM crashes in jvmti_start_single_step_in_virtual_method(), file jvmti_step.cpp, line 504: assertion "vtable"

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Fixed
    • None
    • None
    • DRLVM
    • None
    • Windows/x86, harmony-jdk-r553376

    Description

      After applying patch HARMONY-2889 for JDWP agent the following JDWP stress test:

      org.apache.harmony.test.stress.jpda.jdwp.scenario.EVENT014.EventTest014

      crashes DRLVM in function jvmti_start_single_step_in_virtual_method(), file jvmti_step.cpp, line 504: assertion "vtable".
      Stack trace is the following:

      > harmonyvm.dll!_assert(const char * expr=0x007fe9cc, const char * filename=0x007fe970, unsigned int lineno=504) Line 295 C
      harmonyvm.dll!jvmti_start_single_step_in_virtual_method(DebugUtilsTI * ti=0x016150a0, VMBreakPoint * bp=0x03e9fa94, void * data=0x038d5950) Line 504 + 0x1a C++
      harmonyvm.dll!jvmti_process_jit_single_step_event(TIEnv * unused_env=0x00000000, VMBreakPoint * bp=0x03e9fa94, void * data=0x038d5950) Line 589 + 0x11 C++
      harmonyvm.dll!VMBreakPoints::process_native_breakpoint() Line 673 + 0x25 C++
      harmonyvm.dll!process_native_breakpoint_event() Line 1329 C++
      harmonyvm.dll!asm_process_native_breakpoint_event() Line 1341 C++
      12737a4c()
      harmonyvm.dll!vm_invoke_native_array_stub(unsigned int * args=0x03e9fd14, int sz=1, void * f=0x0188c5d0) Line 77 C++
      harmonyvm.dll!JIT_execute_method_default(void * jit=0x00000000, _jmethodID * methodID=0x02f9a148, jvalue * return_value=0x00000000, jvalue * args=0x03e9fef4) Line 200 C++
      em.dll!DrlEMImpl::executeMethod(_jmethodID * meth=0x02f9a148, jvalue * return_value=0x00000000, jvalue * args=0x03e9fef4) Line 509 + 0x16 C++
      em.dll!ExecuteMethod(_jmethodID * meth=0x02f9a148, jvalue * return_value=0x00000000, jvalue * args=0x03e9fef4) Line 43 + 0x21 C++
      harmonyvm.dll!vm_execute_java_method_array(_jmethodID * method=0x02f9a148, jvalue * result=0x00000000, jvalue * args=0x03e9fef4) Line 60 + 0x1b C++
      harmonyvm.dll!Objects_To_Finalize::do_finalization(int quantity=0) Line 519 + 0xf C++
      harmonyvm.dll!vm_do_finalization(int quantity=0) Line 631 C++
      harmonyvm.dll!finalizer_thread_func(void * * args=0x035f02a0) Line 241 + 0x7 C++
      hythr.dll!thread_start_proc(void * arg=0x00427320) Line 729 + 0x9 C
      hythr.dll!_threadstartex(void * ptd=0x00427418) Line 241 + 0xd C
      kernel32.dll!77e66063()

      This crash happens only in JIT mode. If debugg VM is started in -Xint mode (using option "-Djpda.settings.debuggeeVMExtraOptions=-Xint"), test successfully passes. I believe this is bug in implementation of JVMTI single step support in JIT mode.

      Attachments

        1. H-4388_excludes.diff
          0.5 kB
          Ilya Berezhniuk
        2. H-4388.diff
          0.4 kB
          Ilya Berezhniuk

        Issue Links

          Activity

            People

              gshimansky Gregory Shimansky
              ipopov Ivan Popov
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: