2010.4.2日晚-2010.4.3下午:
需要开发个小程序,用到了java 调用dll库。
dll我用delphi开发,其中涉及到处理xml文档.此dll在delphi开发环境下测试通过,可一在java环境中调用,则jvm崩溃.
为解决此问题
,从2010.4.2日下午一直干到2010.4.3日清晨4:00,未解决,在无比郁闷中沉沉睡去。
起床已是4.3日10:00点,隐约醒来,想着未解决的问题,继续郁闷,再睡不着,于是起床继续。
由java调用dll,程序又不报异常,直接由jvm崩溃,无法调试,导致我几乎崩溃。
在我崩溃前最后几秒(2010.4.3
13:49),忽然灵光一闪,想到delphi操作xml文档,前后必加
CoInitialize(nil);
......
coUnInitialize();
是不是此原因呢?
再看delphi代码,果然,在调测dll用的例子中,我加了此两句,但在dll本身中未加此两句,所以用delphi本身的测试用例无问题,一到java中就出问题,于是把此两句加在dll操作xml相关位置。再次运行java,......pass,ok!!!!!
狂喜中!!!
反思开发过程:明知delphi操作xml需加CoInitialize(nil),coUnInitialize(),却又未充分认识它,导致时间浪费了整整一天,还茶不思饭不想。
jvm崩溃日志如下:
#
# A fatal error has been detected by the Java Runtime
Environment:
#
# Internal Error (0xeedfade), pid=5580, tid=3132
#
# JRE version: 6.0_18-b07
# Java VM: Java HotSpot(TM) Client VM (16.0-b13 mixed mode
windows-x86 )
# Problematic frame:
# C [kernel32.dll+0x3fbae]
#
# If you would like to submit a bug report, please visit:
# http://java.sun.com/webapps/bugreport/crash.jsp
# The crash happened outside the Java Virtual Machine in native
code.
# See problematic frame for where to report the bug.
#
--------------- T H R E A D ---------------
Current thread (0x0237ac00): JavaThread "main" [_thread_in_native,
id=3132, stack(0x00a80000,0x00ad0000)]
siginfo: ExceptionCode=0xeedfade, ExceptionInformation=0x04ddca7d
0x04fd1684 0x800401f0 0x04ddca7d 0x04fd1598 0x00abf92c
0x00abf8f8
Registers:
EAX=0x00abf874, EBX=0x800401f0, ECX=0x00000007,
EDX=0x00000000
ESP=0x00abf874, EBP=0x00abf8c4, ESI=0x04ddca7d,
EDI=0x04fd1598
EIP=0x766ffbae, EFLAGS=0x00000216
Top of Stack: (sp=0x00abf874)
0x00abf874: 0eedfade 00000001 00000000 766ffbae
0x00abf884: 00000007 04ddca7d 04fd1684 800401f0
0x00abf894: 04ddca7d 04fd1598 00abf92c 00abf8f8
0x00abf8a4: 04dcd5f6 00000000 04dcd60c 04db33fe
0x00abf8b4: 00000001 04dcd634 00abf8f8 04db33c5
0x00abf8c4: 00abf92c 04ddca7d 0eedfade 00000001
0x00abf8d4: 00000007 00abf8dc 04ddca7d 04fd1684
0x00abf8e4: 800401f0 04ddca7d 04fd1598 00abf92c
Instructions: (pc=0x766ffbae)
0x766ffb9e: a9 00 00 83 c4 0c 8d 45 b0 50 ff 15 14 17 6c 76
0x766ffbae: c9 c2 10 00 90 90 90 90 90 8b ff 55 8b ec 51 51
Stack: [0x00a80000,0x00ad0000], sp=0x00abf874, free
space=fe00abf3d4k
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code,
C=native code)
C [kernel32.dll+0x3fbae]
C [insureDll.dll+0x2ca7d]
C [insureDll.dll+0x5a9f]
C [insureDll.dll+0x2c6b1]
C [insureDll.dll+0x3417b]
Java frames: (J=compiled Java code, j=interpreted, Vv=VM
code)
j org.xvolks.jnative.JNative.nInvoke(I)V+0
j org.xvolks.jnative.JNative.invoke()V+55
j
insure.HospitalDll.get_GlobalParam(Ljava/lang/String;)Ljava/lang/String;+59
j insure.HospitalDll.main([Ljava/lang/String;)V+203
v ~StubRoutines::call_stub
--------------- P R O C E S S ---------------
Java Threads: ( => current thread )
0x02469400 JavaThread "Low Memory Detector" daemon
[_thread_blocked, id=3904, stack(0x04710000,0x04760000)]
0x02467000 JavaThread "CompilerThread0" daemon [_thread_blocked,
id=5708, stack(0x046c0000,0x04710000)]
0x02453c00 JavaThread "JDWP Command Reader" daemon
[_thread_in_native, id=3936, stack(0x04670000,0x046c0000)]
0x02452c00 JavaThread "JDWP Event Helper Thread" daemon
[_thread_blocked, id=1448, stack(0x04620000,0x04670000)]
0x02450000 JavaThread "JDWP Transport Listener: dt_shmem" daemon
[_thread_blocked, id=4408, stack(0x045d0000,0x04620000)]
0x02420800 JavaThread "Attach Listener" daemon [_thread_blocked,
id=1868, stack(0x04580000,0x045d0000)]
0x0241d800 JavaThread "Signal Dispatcher" daemon [_thread_blocked,
id=6024, stack(0x04530000,0x04580000)]
0x0240e800 JavaThread "Finalizer" daemon [_thread_blocked, id=6100,
stack(0x02300000,0x02350000)]
0x02409c00 JavaThread "Reference Handler" daemon [_thread_blocked,
id=5136, stack(0x00bd0000,0x00c20000)]
=>0x0237ac00 JavaThread "main" [_thread_in_native,
id=3132, stack(0x00a80000,0x00ad0000)]
Other Threads:
0x02406400 VMThread [stack: 0x00ad0000,0x00b20000] [id=5956]
0x0246cc00 WatcherThread [stack: 0x04760000,0x047b0000]
[id=3940]
VM state:not at safepoint (normal execution)
VM Mutex/Monitor currently owned by a thread: None
Heap
def new generation total 4928K, used 1029K [0x10010000, 0x10560000,
0x15560000)
eden space 4416K, 23% used [0x10010000, 0x10111620,
0x10460000)
from space 512K, 0% used [0x10460000, 0x10460000, 0x104e0000)
to space 512K, 0% used [0x104e0000, 0x104e0000, 0x10560000)
tenured generation total 10944K, used 0K [0x15560000, 0x16010000,
0x20010000)
the space 10944K, 0% used [0x15560000, 0x15560000, 0x15560200,
0x16010000)
compacting perm gen total 12288K, used 2383K [0x20010000,
0x20c10000, 0x24010000)
the space 12288K, 19% used [0x20010000, 0x20263e60, 0x20264000,
0x20c10000)
No shared spaces configured.
Dynamic libraries:
0x00400000 - 0x00424000 D:\Java\jdk1.6.0\bin\java.exe
0x77c50000 - 0x77d77000 C:\Windows\system32\ntdll.dll
0x766c0000 - 0x7679c000 C:\Windows\system32\kernel32.dll
0x76300000 - 0x763c6000 C:\Windows\system32\ADVAPI32.dll
0x76aa0000 - 0x76b63000 C:\Windows\system32\RPCRT4.dll
0x72850000 - 0x7286e000 C:\Windows\system32\ShimEng.dll
0x76160000 - 0x7618c000 C:\Windows\system32\apphelp.dll
0x6efe0000 - 0x6f068000 C:\Windows\AppPatch\AcLayers.DLL
0x76d50000 - 0x76ded000 C:\Windows\system32\USER32.dll
0x77dd0000 - 0x77e1b000 C:\Windows\system32\GDI32.dll
0x76ee0000 - 0x779f0000 C:\Windows\system32\SHELL32.dll
0x769f0000 - 0x76a9a000 C:\Windows\system32\msvcrt.dll
0x77e20000 - 0x77e79000 C:\Windows\system32\SHLWAPI.dll
0x76b70000 - 0x76cb5000 C:\Windows\system32\ole32.dll
0x76cc0000 - 0x76d4d000 C:\Windows\system32\OLEAUT32.dll
0x761b0000 - 0x761ce000 C:\Windows\system32\USERENV.dll
0x76190000 - 0x761a4000 C:\Windows\system32\Secur32.dll
0x73510000 - 0x73552000 C:\Windows\system32\WINSPOOL.DRV
0x75b80000 - 0x75b94000 C:\Windows\system32\MPR.dll
0x763d0000 - 0x763ee000 C:\Windows\system32\IMM32.DLL
0x77b80000 - 0x77c48000 C:\Windows\system32\MSCTF.dll
0x76470000 - 0x76479000 C:\Windows\system32\LPK.DLL
0x768e0000 - 0x7695d000 C:\Windows\system32\USP10.dll
0x10000000 - 0x10010000
C:\PROGRA~1\KASPER~1\KASPER~1.0FO\r3hook.dll
0x76260000 - 0x76267000 C:\Windows\system32\PSAPI.DLL
0x75d90000 - 0x75f2e000
C:\Windows\WinSxS\x86_microsoft.windows.common-controls_6595b64144ccf1df_6.0.6002.18005_none_5cb72f96088b0de0\comctl32.dll
0x7c340000 - 0x7c396000 D:\Java\jdk1.6.0\jre\bin\msvcr71.dll
0x6d8b0000 - 0x6db47000
D:\Java\jdk1.6.0\jre\bin\client\jvm.dll
0x74b50000 - 0x74b82000 C:\Windows\system32\WINMM.dll
0x74b10000 - 0x74b4d000 C:\Windows\system32\OLEACC.dll
0x6d860000 - 0x6d86c000 D:\Java\jdk1.6.0\jre\bin\verify.dll
0x6d3e0000 - 0x6d3ff000 D:\Java\jdk1.6.0\jre\bin\java.dll
0x6d340000 - 0x6d348000 D:\Java\jdk1.6.0\jre\bin\hpi.dll
0x6d430000 - 0x6d459000 D:\Java\jdk1.6.0\jre\bin\jdwp.dll
0x6d750000 - 0x6d756000 D:\Java\jdk1.6.0\jre\bin\npt.dll
0x6d8a0000 - 0x6d8af000 D:\Java\jdk1.6.0\jre\bin\zip.dll
0x6d2a0000 - 0x6d2a8000 D:\Java\jdk1.6.0\jre\bin\dt_shmem.dll
0x66c40000 - 0x66c61000 D:\insure_XT\insurext\JNativeCpp.dll
0x04db0000 - 0x04df1000 D:\insure_XT\insurext\insureDll.dll
0x00390000 - 0x0039b000 D:\Borland\Delphi7\Bin\borlndmm.dll
0x72c40000 - 0x72c47000 C:\Windows\system32\wsock32.dll
0x77e80000 - 0x77ead000 C:\Windows\system32\WS2_32.dll
0x77dc0000 - 0x77dc6000 C:\Windows\system32\NSI.dll
0x00a40000 - 0x00a6d000 C:\Windows\system32\Mwic_32.dll
VM Arguments:
jvm_args: -Xdebug -Xrunjdwp:transport=dt_shmem,address=javadebug
-Dfile.encoding=UTF-8 -Djava.security.policy=applet.policy
java_command: insure.HospitalDll
Launcher Type: SUN_STANDARD
Environment Variables:
JAVA_HOME=D:\Java\jdk1.6.0
PATH=D:\Java\jdk1.6.0\bin;D:\MinGW\bin;D:\Borland\Delphi7\Bin;D:\Borland\Delphi7\Projects\Bpl\;D:\oracle\lx\product\11.1.0\client_1\bin;D:\JavaFX\javafx-sdk1.2\bin;D:\JavaFX\javafx-sdk1.2\emulator\bin;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Program
Files\Diskeeper Corporation\Diskeeper\;C:\Program Files\Common
Files\Lenovo;C:\Program Files\ThinkPad\ConnectUtilities;C:\Program
Files\Lenovo\Client Security Solution;C:\Program Files\Common
Files\Thunder Network\KanKan\Codecs;d:\Sybase\SQL Anywhere
8\win32;d:\Sybase\Shared\win32;d:\Sybase\Shared\Sybase Central
4.1;d:\Sybase\PowerDynamo\win32;d:\StormII\Codec;d:\StormII
USERNAME=lx
OS=Windows_NT
PROCESSOR_IDENTIFIER=x86 Family 6 Model 15 Stepping 13,
GenuineIntel
--------------- S Y S T E M ---------------
OS: Windows Vista Build 6002 Service Pack 2
CPU:total 2 (2 cores per cpu, 1 threads per core) family 6 model 15
stepping 13, cmov, cx8, fxsr, mmx, sse, sse2, sse3, ssse3
Memory: 4k page, physical 3118628k(1031708k free), swap
6447840k(4033784k free)
vm_info: Java HotSpot(TM) Client VM (16.0-b13) for windows-x86 JRE
(1.6.0_18-b07), built on Dec 17 2009 13:35:55 by "java_re" with MS
VC++ 7.1 (VS2003)
time: Sat Apr 03 12:52:39 2010
elapsed time: 16 seconds