Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-6774299

crash when using .net-2003-compiled jni code with jdk 1.4.2 u15

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Won't Fix
    • Icon: P3 P3
    • 1.4-pool
    • 1.4.2
    • hotspot
    • x86
    • windows_xp

      A .NET application that uses JDK 1.4.2 crashes in JNI code
      The crash dump can be obtained from /java/jle_specials/<CU>/65951304/"user(July 3rd)(Case65951304).zip"
      JDK in use is JDK 1.4.2 u15 fcs (b02)
      The customer admits that they are using Visual Studio 2003 for the native code and there is no way that they can switch to Visual Studio 6.0.

      Looking at the crash one can see the following stack trace of the crashing thread

      0be45478 080e7ffd jvm!get_method_id(struct JNIEnv_ * env = 0x3099fad0, class _jclass * clazz = 0x00000001, char * name_str = 0x3099fe88 "???", char * sig = 0x3099fe88 "???", int is_static = 815398536, class Thread * __the_thread__ = 0x3099fe88)+0xb6 [D:/BUILD_AREA/jdk142-update/ws/fcs/hotspot\src\share\vm\prims\jni.cpp @ 878]

      0be454a4 10004962 jvm!jni_GetMethodID(struct JNIEnv_ * env = 0x084ba534, class _jclass * clazz = 0x084b604c, char * name = 0x0052d9ac "setSpClientExternalId", char * sig = 0x0051ff80 "(Ljava/lang/String;Lcom/<CU>/portal/cmf/core/CmfTransaction;)V")+0x7d [D:/BUILD_AREA/jdk142-update/ws/fcs/hotspot\src\share\vm\prims\jni.cpp @ 904]

      WARNING: Stack unwind information not available. Following frames may be wrong.

      0be454c0 10021011 CppRt20!jcpp_base::get_field_owner_type_name+0x205
      0be454e4 1002434e CppRt20!jcpp_method::get_methodid+0x66
      0be45514 0048c60e CppRt20!jcpp_void_method::call+0x39
      0be4553c 0042a252 CCTTapiC+0x8c60e
      0be45540 0be45588 CCTTapiC+0x2a252
      0be45544 0be455cc 0xbe45588
      0be45588 0051932c 0xbe455cc
      0be4558c 00519310 CCTTapiC+0x11932c
      0be45590 00519324 CCTTapiC+0x119310
      0be45594 00519334 CCTTapiC+0x119324
      0be45598 00000000 CCTTapiC+0x119334

      Note that arguments change between the top 2 frames. The body of function jni_GetMethodID is trivial

      JNI_ENTRY(jmethodID, jni_GetMethodID(JNIEnv *env, jclass clazz, const char *name, const char *sig))
         JNIWrapper("GetMethodID");
         return get_method_id(env, clazz, (char*) name, (char*) sig, false, thread);
      JNI_END

      Therefore it is suspected that the crash is due to the wrong argument passing to jni_GetMethodID. This could be caused by incompatibility of runtime libraries that come with Visual Studio 6.0 amd 2003.

      The customer needs to see a clear message about why this is happening.

      If JDK has compatibility issues with other compilers/versions there must be a clear description of those limitations in the documentation. In this case this bug will be reclasified and re-addressed to the documentation

            Unassigned Unassigned
            ikrylov Ivan Krylov (Inactive)
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

              Created:
              Updated:
              Resolved:
              Imported:
              Indexed: