Собственный метод, вызываемый Java, не совпадает - PullRequest
0 голосов
/ 17 августа 2011

Я получил это из файла дампа, сгенерированного jvm, когда он падал.Как вы можете видеть, java callstack вызывает собственный метод syncCalendarEntry.Тем не менее, собственный callstack пытается выполнить другой собственный метод.

Как это возможно?И есть идеи, как это исправить?

3XMTHREADINFO1            (native thread ID:0x1B24, native priority:0x5, native policy:UNKNOWN)
3XMTHREADINFO3           Java callstack:
4XESTACKTRACE                at com/rightsize/hessian/sync/endpoint/ems/DominoService.syncCalendarEntry(Native Method)
4XESTACKTRACE                at sun/reflect/NativeMethodAccessorImpl.invoke0(Native Method)
4XESTACKTRACE                at sun/reflect/NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:48)
4XESTACKTRACE                at sun/reflect/DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37)
4XESTACKTRACE                at java/lang/reflect/Method.invoke(Method.java:600)
4XESTACKTRACE                at com/caucho/hessian/server/HessianSkeleton.invoke(HessianSkeleton.java:180)
4XESTACKTRACE                at com/caucho/hessian/server/HessianSkeleton.invoke(HessianSkeleton.java:113)
4XESTACKTRACE                at com/rightsize/hessian/sync/connector/HessianSyncHandler.handleRemoteMethod(HessianSyncHandler.java:115)
4XESTACKTRACE                at com/rightsize/hessian/sync/connector/HessianSyncHandler$Listener.run(HessianSyncHandler.java:175)
3XMTHREADINFO3           Native callstack:
4XENATIVESTACK               JNI_CreateJavaVM+0x3ab4 (0x00C3DDE4 [j9vm24+0x1dde4])
4XENATIVESTACK               Java_com_rightsize_hessian_sync_endpoint_ems_DominoService_initializeCalendar+0x31b4 (0x725D8424 [LaunchService+0x8424])
4XENATIVESTACK               (0x00C22651 [j9vm24+0x2651])
4XENATIVESTACK               WaitForSingleObjectEx+0x8f (0x75631270 [kernel32+0x11270])
4XENATIVESTACK               RtlFreeHandle+0x3598 (0x770C30FB [ntdll+0x630fb])
4XENATIVESTACK               QueryPerformanceCounter+0x14 (0x756337B1 [kernel32+0x137b1])
4XENATIVESTACK               (0x00C228AA [j9vm24+0x28aa])
4XENATIVESTACK               JNI_CreateJavaVM+0xe7c (0x00C3B1AC [j9vm24+0x1b1ac])
4XENATIVESTACK               JVM_InvokeMethod+0x50 (jvm.c:3969, 0x00024560 [jvm+0x4560])
4XENATIVESTACK               _Java_sun_reflect_NativeMethodAccessorImpl_invoke0@20+0x15 (0x5E38663E [java+0x663e])
4XENATIVESTACK               JNI_CreateJavaVM+0x2229d (0x00C5C5CD [j9vm24+0x3c5cd])
4XENATIVESTACK               JNI_CreateJavaVM+0x22ac5 (0x00C5CDF5 [j9vm24+0x3cdf5])
4XENATIVESTACK               BaseThreadInitThunk+0xe (0x756AF13C [kernel32+0x8f13c])
4XENATIVESTACK               RtlCreateUserProcess+0x8c (0x770DD80D [ntdll+0x7d80d])
4XENATIVESTACK               RtlCreateProcessParameters+0x4e (0x770DDA1F [ntdll+0x7da1f])

Это интерфейс метода вызова Java:

public native List<CalendarEntry> syncCalendarEntry(
        UserProfile profile);
public native Object initializeCalendar(UserProfile profile,
        List<CalendarEntry> entries);

Вот как они выглядят в сгенерированном заголовочном файле:

/*
 * Class:     DominoService
 * Method:    syncCalendarEntry
 * Signature: (Lmodel/LaunchUserProfile;)Ljava/util/List;
 */
    JNIEXPORT jobject JNICALL Java_DominoService_syncCalendarEntry
      (JNIEnv *, jobject, jobject);
/*
 * Class:     DominoService
 * Method:    initializeCalendar
 * Signature: (Lmodel/UserProfile;Ljava/util/List;)Ljava/lang/Object;
*/
    JNIEXPORT jobject JNICALL Java_DominoService_initializeCalendar
      (JNIEnv *, jobject, jobject, jobject);
...