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

[classlib][nio] Can't run simple 3D HWA application using lwjgl library

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Resolved
    • Major
    • Resolution: Fixed
    • None
    • None
    • Classlib
    • None
    • Guru

    Description

      I've tried to run simple 3D HWA application using popular openGL Java wrapper: lwjgl library and found that Harmony crashes at a very early stage of lwjgl initialization.
      This crash prevents even simple scenarios to be run.
      I found that the crash is reproduced for every JIT or interpreter mode we have.
      HereI think that the problem is with DLRVM threading support or with Classlibs NIO implementation.

      Here is the list of the last methods compiled before crash:
      EM: compile start:[CS_OPT n=980] java/nio/DirectByteBuffer::get([BII)Ljava/nio/ByteBuffer;
      EM: compile done:[CS_OPT n=980: OK] java/nio/DirectByteBuffer::get([BII)Ljava/nio/ByteBuffer;
      EM: compile start:[CS_OPT n=981] org/apache/harmony/luni/platform/PlatformAddress::getByteArray(I[BII)V
      EM: compile done:[CS_OPT n=981: OK] org/apache/harmony/luni/platform/PlatformAddress::getByteArray(I[BII)V
      EM: compile start:[CS_OPT n=982] org/lwjgl/opengl/WindowsDisplay::setIcon([Ljava/nio/ByteBuffer;)I
      EM: compile done:[CS_OPT n=982: OK] org/lwjgl/opengl/WindowsDisplay::setIcon([Ljava/nio/ByteBuffer;)I

      Here is stacktrace I've got on Windows:

      > lwjgl.dll!01865f90()
      lwjgl.dll!0186620e()
      harmonyvm.dll!m2n_free_local_handles() Line 267 + 0xc C++
      harmonyvm.dll!get_vm_thread(HyThread * thr=0x011fdfa0) Line 190 + 0xb C++
      011fe010()
      harmonyvm.dll!vm_invoke_native_array_stub(unsigned int * args=0x0013f794, int sz=1, void * f=0x01800010) Line 77 C++
      harmonyvm.dll!JIT_execute_method_default(void * jit=0x00000000, _jmethodID * methodID=0x03105890, jvalue * return_value=0x00000000, jvalue * args=0x02ffa948) Line 200 C++
      em.dll!DrlEMImpl::executeMethod(_jmethodID * meth=0x03105890, jvalue * return_value=0x00000000, jvalue * args=0x02ffa948) Line 539 + 0x16 C++
      em.dll!ExecuteMethod(_jmethodID * meth=0x03105890, jvalue * return_value=0x00000000, jvalue * args=0x02ffa948) Line 43 + 0x21 C++
      harmonyvm.dll!vm_execute_java_method_array(_jmethodID * method=0x03105890, jvalue * result=0x00000000, jvalue * args=0x02ffa948) Line 51 + 0x1b C++
      harmonyvm.dll!call_static_method_no_ref_result(JNIEnv_External * jni_env=0x011fe050, _jobject * clazz=0x03103ee0, _jmethodID * methodID=0x03105890, jvalue * args=0x02ffa948, jvalue * result=0x00000000) Line 1154 + 0x11 C++
      harmonyvm.dll!CallStaticVoidMethodA(JNIEnv_External * jni_env=0x011fe050, _jobject * clazz=0x03103ee0, _jmethodID * methodID=0x03105890, jvalue * args=0x02ffa948) Line 1562 + 0x17 C++
      harmonyvm.dll!CallStaticVoidMethodV(JNIEnv_External * jni_env=0x011fe050, _jobject * clazz=0x03103ee0, _jmethodID * methodID=0x03105890, char * args=0x0013fa18) Line 1547 C++
      harmonyvm.dll!CallStaticVoidMethod(JNIEnv_External * jni_env=0x011fe050, _jobject * clazz=0x03103ee0, _jmethodID * methodID=0x03105890, ...) Line 1537 C++
      java.exe!main_runJavaMain(const JNINativeInterface_ * * env=0x011fe050, char * mainClassName=0x00366f79, int nameIsUTF=0, int java_argc=0, char * * java_argv=0x0036247c, HyPortLibrary * portLibrary=0x0013fbb8) Line 1311 + 0x1b C
      java.exe!invocation(HyPortLibrary * portLibrary=0x0013fbb8, int argc=7, char * * argv=0x00362460, unsigned int handle=5308416, int version=65540, unsigned char ignoreUnrecognized='', char * mainClass=0x00366f79, unsigned int classArg=6, char * propertiesFileName=0x0015db60, int isStandaloneJar=0, char * vmdllsubdir=0x0013fb44) Line 732 + 0x2c C
      java.exe!gpProtectedMain(haCmdlineOptions * args=0x0013fb90) Line 381 + 0x33 C
      java.exe!main(int argc=7, char * * argv=0x00362460, char * * envp=0x00364180) Line 147 + 0xc C
      java.exe!mainCRTStartup() Line 398 + 0xe C

      I checked the same test with SUN and BEA VMs.
      Sun1.4/1.5/1.6 and BEA1.4 runs OK.
      BEA 1.5 crashes.

      Attachments

        1. nio_view.diff
          14 kB
          Alexey Varlamov
        2. lwjgl.zip
          515 kB
          Mikhail Fursov

        Issue Links

          Activity

            People

              varlax Alexey Varlamov
              mfursov Mikhail Fursov
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: