做了一个接口程序,引入英国路透社的数据,
使用的是他们提供的C语言API,我使用JAVA开发,C与JAVA之间使用JNI技术通讯
本来运行一直没有问题,现在发现,运行一段时间侯会出现错误,目录下生成一个错误文件hs_err_pid5220.log
内容如下:#
# An unexpected error has been detected by HotSpot Virtual Machine:
#
#  EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x6d6d8329, pid=5220, tid=4444
#
# Java VM: Java HotSpot(TM) Client VM (1.5.0_05-b05 mixed mode)
# Problematic frame:
# V  [jvm.dll+0x98329]
#---------------  T H R E A D  ---------------Current thread (0x48e30830):  JavaThread "Thread-10" [_thread_in_vm, id=4444]siginfo: ExceptionCode=0xc0000005, reading address 0x00000000Registers:
EAX=0x00000000, EBX=0x435aae80, ECX=0x4966f814, EDX=0x48e308ec
ESP=0x4966f7f4, EBP=0x4966f840, ESI=0x4966f814, EDI=0x4966f8a8
EIP=0x6d6d8329, EFLAGS=0x00010246Top of Stack: (sp=0x4966f7f4)
0x4966f7f4:   6d6c69d5 00000000 48e30830 6d6c7c32
0x4966f804:   48e30830 00000000 4966f8bc 4966f858
0x4966f814:   48ec6484 00000000 48e30830 435aae80
0x4966f824:   6d6c2c63 4986cf94 48e30830 0000000e
0x4966f834:   6d64aa71 48e30830 4966f8b4 4966f8a8
0x4966f844:   4980381b 48e308ec 4966fcd0 00000000
0x4966f854:   4966f8bc 4966f910 4966fc48 435aae80
0x4966f864:   cccccccc cccccccc cccccccc cccccccc Instructions: (pc=0x6d6d8329)
0x6d6d8319:   44 24 04 24 fc 8b 00 8b 00 c3 8b 44 24 04 24 fc
0x6d6d8329:   8b 00 ff 74 24 04 8b c8 e8 93 fe ff ff c3 8b 44 
Stack: [0x49630000,0x49670000),  sp=0x4966f7f4,  free space=253k
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
V  [jvm.dll+0x98329]
C  [Tenfore.dll+0x381b]
C  [Tenfore.dll+0x3744]
C  [Tenfore.dll+0x6eb6]
C  [Tenfore.dll+0x93f8]
j  com.tenfore.TenforeData.Tenfore.InitTenforeLive()V+0
j  com.tenfore.TenforeData.GetTenforeData.run()V+32
j  java.lang.Thread.run()V+11
v  ~StubRoutines::call_stub
V  [jvm.dll+0x8295c]
V  [jvm.dll+0xd752e]
V  [jvm.dll+0x8282d]
V  [jvm.dll+0x8258a]
V  [jvm.dll+0x9d476]
V  [jvm.dll+0x1042ae]
V  [jvm.dll+0x10427c]
C  [MSVCRT.dll+0x2b530]
C  [kernel32.dll+0x24829]Java frames: (J=compiled Java code, j=interpreted, Vv=VM code)
j  com.tenfore.TenforeData.Tenfore.InitTenforeLive()V+0
j  com.tenfore.TenforeData.GetTenforeData.run()V+32
j  java.lang.Thread.run()V+11
v  ~StubRoutines::call_stub---------------  P R O C E S S  ---------------Java Threads: ( => current thread )
  0x49077b58 JavaThread "Thread-31361" daemon [_thread_blocked, id=5372]
  0x48d66320 JavaThread "SocketConnectorIoProcessor-0.0" [_thread_in_native, id=2720]
  0x48e7a2b0 JavaThread "RMI LeaseChecker" daemon [_thread_blocked, id=4528]
  0x48c5f0b8 JavaThread "AnonymousIoService-16" daemon [_thread_blocked, id=5524]
  0x48c5c010 JavaThread "AnonymousIoService-15" daemon [_thread_blocked, id=4872]
  0x48c58380 JavaThread "AnonymousIoService-14" daemon [_thread_blocked, id=5676]
  0x48c55e10 JavaThread "AnonymousIoService-13" daemon [_thread_blocked, id=5660]
  0x48d238c8 JavaThread "AnonymousIoService-12" daemon [_thread_blocked, id=3588]
  0x48d1a6e0 JavaThread "AnonymousIoService-11" daemon [_thread_blocked, id=4724]
  0x48d176d8 JavaThread "AnonymousIoService-10" daemon [_thread_blocked, id=2672]
  0x48d17280 JavaThread "AnonymousIoService-9" daemon [_thread_blocked, id=1112]
  0x48d143a8 JavaThread "AnonymousIoService-8" daemon [_thread_blocked, id=5520]
  0x48d408c8 JavaThread "AnonymousIoService-7" daemon [_thread_blocked, id=3268]
  0x00a6ca10 JavaThread "AnonymousIoService-6" daemon [_thread_blocked, id=4288]
  0x00a4bc78 JavaThread "AnonymousIoService-5" daemon [_thread_blocked, id=4416]
  0x00a65bd0 JavaThread "AnonymousIoService-4" daemon [_thread_blocked, id=5492]
  0x48fb8720 JavaThread "AnonymousIoService-3" daemon [_thread_blocked, id=2616]
  0x49079de8 JavaThread "AnonymousIoService-2" daemon [_thread_blocked, id=4240]
  0x48c29920 JavaThread "AnonymousIoService-1" daemon [_thread_blocked, id=3104]
  0x4903da38 JavaThread "SocketAcceptor-0" [_thread_in_native, id=504]
  0x000361d8 JavaThread "DestroyJavaVM" [_thread_blocked, id=5512]
  0x49061bd8 JavaThread "Timer-3" [_thread_blocked, id=4264]
  0x48e305c8 JavaThread "PooledByteBufferExpirer-0" daemon [_thread_blocked, id=4136]
  0x48e30448 JavaThread "Timer-2" [_thread_blocked, id=3372]
  0x490473a0 JavaThread "Thread-12" [_thread_in_native, id=5296]
=>0x48e30830 JavaThread "Thread-10" [_thread_in_vm, id=4444]
  0x48ec6ba0 JavaThread "Thread-9" [_thread_blocked, id=5364]
  0x4908f968 JavaThread "Thread-8" [_thread_blocked, id=3008]
  0x4903a808 JavaThread "Store sampleCache1 Expiry Thread" daemon [_thread_blocked, id=5724]
  0x49034370 JavaThread "Store sampleCache1 Spool Thread" daemon [_thread_blocked, id=5192]
  0x49091e78 JavaThread "MySQL Statement Cancellation Timer" daemon [_thread_blocked, id=4636]
  0x49028550 JavaThread "com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#2" daemon [_thread_blocked, id=5636]
  0x49029520 JavaThread "com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#1" daemon [_thread_blocked, id=1412]
  0x490293a0 JavaThread "com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#0" daemon [_thread_blocked, id=2828]
  0x49021600 JavaThread "Timer-1" daemon [_thread_blocked, id=3736]
  0x48eb6e70 JavaThread "RMI TCP Accept-6050" daemon [_thread_in_native, id=3592]
  0x48e752e0 JavaThread "RMI TCP Accept-0" daemon [_thread_in_native, id=6056]
  0x48eb28f0 JavaThread "Timer-0" daemon [_thread_blocked, id=4340]
  0x00a345e8 JavaThread "Low Memory Detector" daemon [_thread_blocked, id=4940]
  0x00a33260 JavaThread "CompilerThread0" daemon [_thread_blocked, id=6080]
  0x00a45bd8 JavaThread "Signal Dispatcher" daemon [_thread_blocked, id=4968]
  0x00a26918 JavaThread "Finalizer" daemon [_thread_blocked, id=5656]
  0x00a25d30 JavaThread "Reference Handler" daemon [_thread_blocked, id=4212]

解决方案 »

  1.   

    Other Threads:
      0x00a21bd8 VMThread [id=4396]
      0x48e79510 WatcherThread [id=5324]VM state:not at safepoint (normal execution)VM Mutex/Monitor currently owned by a thread: NoneHeap
     def new generation   total 72576K, used 67685K [0x02a70000, 0x07930000, 0x07930000)
      eden space 64512K, 100% used [0x02a70000, 0x06970000, 0x06970000)
      from space 8064K,  39% used [0x07150000, 0x07469a98, 0x07930000)
      to   space 8064K,   0% used [0x06970000, 0x06970000, 0x07150000)
     tenured generation   total 967936K, used 967935K [0x07930000, 0x42a70000, 0x42a70000)
       the space 967936K,  99% used [0x07930000, 0x42a6ffd0, 0x42a70000, 0x42a70000)
     compacting perm gen  total 12800K, used 12624K [0x42a70000, 0x436f0000, 0x46a70000)
       the space 12800K,  98% used [0x42a70000, 0x436c4080, 0x436c4200, 0x436f0000)
    No shared spaces configured.Dynamic libraries:
    0x00400000 - 0x0040c000  C:\WINDOWS\system32\java.exe
    0x7c800000 - 0x7c8c0000  C:\WINDOWS\system32\ntdll.dll
    0x77e40000 - 0x77f42000  C:\WINDOWS\system32\kernel32.dll
    0x77f50000 - 0x77feb000  C:\WINDOWS\system32\ADVAPI32.dll
    0x77c50000 - 0x77cef000  C:\WINDOWS\system32\RPCRT4.dll
    0x76f50000 - 0x76f63000  C:\WINDOWS\system32\Secur32.dll
    0x77ba0000 - 0x77bfa000  C:\WINDOWS\system32\MSVCRT.dll
    0x6d640000 - 0x6d7cc000  C:\Program Files\Java\jre1.5.0_05\bin\client\jvm.dll
    0x77380000 - 0x77411000  C:\WINDOWS\system32\USER32.dll
    0x77c00000 - 0x77c48000  C:\WINDOWS\system32\GDI32.dll
    0x76aa0000 - 0x76acd000  C:\WINDOWS\system32\WINMM.dll
    0x76290000 - 0x762ad000  C:\WINDOWS\system32\IMM32.DLL
    0x7f000000 - 0x7f009000  C:\WINDOWS\system32\LPK.DLL
    0x75490000 - 0x754f5000  C:\WINDOWS\system32\USP10.dll
    0x6d280000 - 0x6d288000  C:\Program Files\Java\jre1.5.0_05\bin\hpi.dll
    0x76b70000 - 0x76b7b000  C:\WINDOWS\system32\PSAPI.DLL
    0x6d610000 - 0x6d61c000  C:\Program Files\Java\jre1.5.0_05\bin\verify.dll
    0x6d300000 - 0x6d31d000  C:\Program Files\Java\jre1.5.0_05\bin\java.dll
    0x6d630000 - 0x6d63f000  C:\Program Files\Java\jre1.5.0_05\bin\zip.dll
    0x6d4b0000 - 0x6d4b8000  C:\Program Files\Java\jre1.5.0_05\bin\management.dll
    0x6d4c0000 - 0x6d4d3000  C:\Program Files\Java\jre1.5.0_05\bin\net.dll
    0x71c00000 - 0x71c17000  C:\WINDOWS\system32\WS2_32.dll
    0x71bf0000 - 0x71bf8000  C:\WINDOWS\system32\WS2HELP.dll
    0x71b20000 - 0x71b61000  C:\WINDOWS\System32\mswsock.dll
    0x76ed0000 - 0x76efa000  C:\WINDOWS\system32\DNSAPI.dll
    0x76f70000 - 0x76f77000  C:\WINDOWS\System32\winrnr.dll
    0x76f10000 - 0x76f3e000  C:\WINDOWS\system32\WLDAP32.dll
    0x76f80000 - 0x76f85000  C:\WINDOWS\system32\rasadhlp.dll
    0x68000000 - 0x68035000  C:\WINDOWS\system32\rsaenh.dll
    0x76920000 - 0x769e2000  C:\WINDOWS\system32\USERENV.dll
    0x71c40000 - 0x71c97000  C:\WINDOWS\system32\netapi32.dll
    0x5f270000 - 0x5f2ca000  C:\WINDOWS\system32\hnetcfg.dll
    0x71ae0000 - 0x71ae8000  C:\WINDOWS\System32\wshtcpip.dll
    0x49800000 - 0x49879000  D:\tenfore2.1.0\Tenfore.dll
    0x496f0000 - 0x49709000  D:\tenfore2.1.0\TickerApi.dll
    0x5d790000 - 0x5d799000  C:\WINDOWS\system32\RPCNS4.dll
    0x49710000 - 0x4971b000  C:\WINDOWS\system32\NetTCPIP2.dll
    0x49720000 - 0x4972a000  C:\WINDOWS\system32\CX32.dll
    0x73eb0000 - 0x73fd1000  C:\WINDOWS\system32\MFC42.DLL
    0x77670000 - 0x777a9000  C:\WINDOWS\system32\ole32.dll
    0x77d00000 - 0x77d8b000  C:\WINDOWS\system32\OLEAUT32.dll
    0x77210000 - 0x772bb000  C:\WINDOWS\system32\WININET.dll
    0x77da0000 - 0x77df2000  C:\WINDOWS\system32\SHLWAPI.dll
    0x761b0000 - 0x76243000  C:\WINDOWS\system32\CRYPT32.dll
    0x76190000 - 0x761a2000  C:\WINDOWS\system32\MSASN1.dll
    0x71bb0000 - 0x71bb9000  C:\WINDOWS\system32\WSOCK32.dll
    0x49880000 - 0x498bd000  C:\WINDOWS\system32\ODBC32.dll
    0x77530000 - 0x775c7000  C:\WINDOWS\WinSxS\x86_Microsoft.Windows.Common-Controls_6595b64144ccf1df_5.82.3790.3959_x-ww_78FCF8D0\COMCTL32.dll
    0x7c8d0000 - 0x7d0ce000  C:\WINDOWS\system32\SHELL32.dll
    0x762b0000 - 0x762f9000  C:\WINDOWS\system32\comdlg32.dll
    0x77420000 - 0x77523000  C:\WINDOWS\WinSxS\x86_Microsoft.Windows.Common-Controls_6595b64144ccf1df_6.0.3790.3959_x-ww_D8713E55\comctl32.dll
    0x49e10000 - 0x49e27000  C:\WINDOWS\system32\odbcint.dll
    0x6d4e0000 - 0x6d4e9000  C:\Program Files\Java\jre1.5.0_05\bin\nio.dll
    0x6d5f0000 - 0x6d5f6000  C:\Program Files\Java\jre1.5.0_05\bin\rmi.dllVM Arguments:
    jvm_args: -Dcom.sun.management.jmxremote.port=6050 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Xms512m -Xmx1024m
    java_command: Tenfore2.1.5_final_2.jarEnvironment Variables:
    JAVA_HOME=UN_6
    PATH=JAVA_HOME\bin;JAVA_HOME\jre\bin;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\Program Files\Symantec\pcAnywhere\;D:\Program Files\MySQL\MySQL Server 5.0\bin
    USERNAME=Administrator
    OS=Windows_NT
    PROCESSOR_IDENTIFIER=x86 Family 6 Model 15 Stepping 6, GenuineIntel---------------  S Y S T E M  ---------------OS: Windows Server 2003 family Build 3790 Service Pack 2CPU:total 4 family 6, cmov, cx8, fxsr, mmx, sse, sse2, htMemory: 4k page, physical 2097151k(1799168k free), swap 4194303k(2763916k free)vm_info: Java HotSpot(TM) Client VM (1.5.0_05-b05) for windows-x86, built on Aug 26 2005 15:36:02 by "java_re" with MS VC++ 6.0
    请教是哪里出了问题?谢谢!
      

  2.   

    估计是你的C++越界访问了.
    JAVA一被其它程序访问自己的的内存,就会崩溃.
      

  3.   

    是JNI是JAVA调用C++定义的本地方法
    C应该是不会访问到JAVA内存的吧
      

  4.   

    从错误信息看,我感觉是JNI出的问题。看看C那边的调用吧。
      

  5.   

    siginfo: ExceptionCode=0xc0000005, reading address 0x00000000 
    好像是说某处(估计是C的部分,JVM应该不会)去读地址0x00000000了,而操作系统禁止应用程序这样做