# # An unexpected error has been detected by Java Runtime Environment: # # EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x0b0e1c4b, pid=176, tid=4000 # # Java VM: Java HotSpot(TM) Client VM (11.3-b02 mixed mode windows-x86) # Problematic frame: # C [sm125_Comm_Dll.dll+0x1c4b] # # 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 (0x00857800): JavaThread "main" [_thread_in_native, id=4000, stack(0x008f0000,0x00940000)]
VM Mutex/Monitor currently owned by a thread: None
Heap def new generation total 960K, used 810K [0x029f0000, 0x02af0000, 0x02ed0000) eden space 896K, 83% used [0x029f0000, 0x02aaa920, 0x02ad0000) from space 64K, 100% used [0x02ae0000, 0x02af0000, 0x02af0000) to space 64K, 0% used [0x02ad0000, 0x02ad0000, 0x02ae0000) tenured generation total 4096K, used 166K [0x02ed0000, 0x032d0000, 0x069f0000) the space 4096K, 4% used [0x02ed0000, 0x02ef9998, 0x02ef9a00, 0x032d0000) compacting perm gen total 12288K, used 3244K [0x069f0000, 0x075f0000, 0x0a9f0000) the space 12288K, 26% used [0x069f0000, 0x06d1b128, 0x06d1b200, 0x075f0000) No shared spaces configured.
The function returns a pointer to an array of bytes, ArrayOfData[], containing the data returned, and an integer, NumberOfBytes, which indicates the size of the data array. 文档是这样描述这个函数的,您帮忙看看我的程序有没有理解错?
错误日志
#
# An unexpected error has been detected by Java Runtime Environment:
#
# EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x0b0e1c4b, pid=176, tid=4000
#
# Java VM: Java HotSpot(TM) Client VM (11.3-b02 mixed mode windows-x86)
# Problematic frame:
# C [sm125_Comm_Dll.dll+0x1c4b]
#
# 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 (0x00857800): JavaThread "main" [_thread_in_native, id=4000, stack(0x008f0000,0x00940000)]
siginfo: ExceptionCode=0xc0000005, writing address 0x00000064
Registers:
EAX=0x00000064, EBX=0x00000000, ECX=0x0000002c, EDX=0x00000000
ESP=0x0093f380, EBP=0x0093f3f8, ESI=0x0093f380, EDI=0x0093f3f8
EIP=0x0b0e1c4b, EFLAGS=0x00010202
Top of Stack: (sp=0x0093f380)
0x0093f380: 0093fb14 00000002 00000000 cccccccc
0x0093f390: cccccccc cccccccc cccccccc cccccccc
0x0093f3a0: cccccccc cccccccc cccccccc cccccccc
0x0093f3b0: cccccccc cccccccc cccccccc cccccccc
0x0093f3c0: cccccccc cccccccc cccccccc cccccccc
0x0093f3d0: cccccccc 0000000a 30303030 30303030
0x0093f3e0: cc003434 30303030 30303030 cccc3434
0x0093f3f0: 0000000a 0000002c 0093f408 1000dc25
Instructions: (pc=0x0b0e1c4b)
0x0b0e1c3b: 00 00 8b 45 f8 e9 34 01 00 00 8b 45 0c 8b 4d fc
0x0b0e1c4b: 89 08 8b 55 fc 52 e8 fa 02 00 00 83 c4 04 89 45
Stack: [0x008f0000,0x00940000], sp=0x0093f380, free space=316k
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
C [sm125_Comm_Dll.dll+0x1c4b]
C [jna4138342220634322716.dll+0xdc25]
C [jna4138342220634322716.dll+0xd546]
C [jna4138342220634322716.dll+0x2e5e]
C [jna4138342220634322716.dll+0x54ce]
j com.sun.jna.Native.invokeInt(JI[Ljava/lang/Object;)I+0
j com.sun.jna.Function.invoke([Ljava/lang/Object;Ljava/lang/Class;Z)Ljava/lang/Object;+333
j com.sun.jna.Function.invoke(Ljava/lang/Class;[Ljava/lang/Object;Ljava/util/Map;)Ljava/lang/Object;+214
j com.sun.jna.Library$Handler.invoke(Ljava/lang/Object;Ljava/lang/reflect/Method;[Ljava/lang/Object;)Ljava/lang/Object;+341
j $Proxy0.DataReadPD([BI)I+23
j com.jxdl.dataConnect.Test.main([Ljava/lang/String;)V+83
v ~StubRoutines::call_stub
Java frames: (J=compiled Java code, j=interpreted, Vv=VM code)
j com.sun.jna.Native.invokeInt(JI[Ljava/lang/Object;)I+0
j com.sun.jna.Function.invoke([Ljava/lang/Object;Ljava/lang/Class;Z)Ljava/lang/Object;+333
j com.sun.jna.Function.invoke(Ljava/lang/Class;[Ljava/lang/Object;Ljava/util/Map;)Ljava/lang/Object;+214
j com.sun.jna.Library$Handler.invoke(Ljava/lang/Object;Ljava/lang/reflect/Method;[Ljava/lang/Object;)Ljava/lang/Object;+341
j $Proxy0.DataReadPD([BI)I+23
j com.jxdl.dataConnect.Test.main([Ljava/lang/String;)V+83
v ~StubRoutines::call_stub
--------------- P R O C E S S ---------------
Java Threads: ( => current thread )
0x0ab29000 JavaThread "Low Memory Detector" daemon [_thread_blocked, id=1904, stack(0x0ad70000,0x0adc0000)]
0x0ab24400 JavaThread "CompilerThread0" daemon [_thread_blocked, id=212, stack(0x0ad20000,0x0ad70000)]
0x0ab1f800 JavaThread "Attach Listener" daemon [_thread_blocked, id=1340, stack(0x0acd0000,0x0ad20000)]
0x0ab4a400 JavaThread "Signal Dispatcher" daemon [_thread_blocked, id=4052, stack(0x0ac80000,0x0acd0000)]
0x0ab0d400 JavaThread "Finalizer" daemon [_thread_blocked, id=1760, stack(0x0ac30000,0x0ac80000)]
0x0ab08c00 JavaThread "Reference Handler" daemon [_thread_blocked, id=1496, stack(0x0abe0000,0x0ac30000)]
=>0x00857800 JavaThread "main" [_thread_in_native, id=4000, stack(0x008f0000,0x00940000)]
Other Threads:
0x0ab05400 VMThread [stack: 0x0ab90000,0x0abe0000] [id=1908]
0x0ab34000 WatcherThread [stack: 0x0adc0000,0x0ae10000] [id=884]
VM state:not at safepoint (normal execution)
VM Mutex/Monitor currently owned by a thread: None
Heap
def new generation total 960K, used 810K [0x029f0000, 0x02af0000, 0x02ed0000)
eden space 896K, 83% used [0x029f0000, 0x02aaa920, 0x02ad0000)
from space 64K, 100% used [0x02ae0000, 0x02af0000, 0x02af0000)
to space 64K, 0% used [0x02ad0000, 0x02ad0000, 0x02ae0000)
tenured generation total 4096K, used 166K [0x02ed0000, 0x032d0000, 0x069f0000)
the space 4096K, 4% used [0x02ed0000, 0x02ef9998, 0x02ef9a00, 0x032d0000)
compacting perm gen total 12288K, used 3244K [0x069f0000, 0x075f0000, 0x0a9f0000)
the space 12288K, 26% used [0x069f0000, 0x06d1b128, 0x06d1b200, 0x075f0000)
No shared spaces configured.
Dynamic libraries:
0x00400000 - 0x00424000 d:\Program Files\MyEclipse\Common\binary\com.sun.java.jdk.win32.x86_1.6.0.013\bin\javaw.exe
0x7c920000 - 0x7c9b6000 C:\WINDOWS\system32\ntdll.dll
0x7c800000 - 0x7c91e000 C:\WINDOWS\system32\kernel32.dll
0x77da0000 - 0x77e49000 C:\WINDOWS\system32\ADVAPI32.dll
0x77e50000 - 0x77ee3000 C:\WINDOWS\system32\RPCRT4.dll
0x77fc0000 - 0x77fd1000 C:\WINDOWS\system32\Secur32.dll
0x77d10000 - 0x77da0000 C:\WINDOWS\system32\USER32.dll
0x77ef0000 - 0x77f39000 C:\WINDOWS\system32\GDI32.dll
0x76300000 - 0x7631d000 C:\WINDOWS\system32\IMM32.DLL
0x62c20000 - 0x62c29000 C:\WINDOWS\system32\LPK.DLL
0x73fa0000 - 0x7400b000 C:\WINDOWS\system32\USP10.dll
0x7c340000 - 0x7c396000 d:\Program Files\MyEclipse\Common\binary\com.sun.java.jdk.win32.x86_1.6.0.013\jre\bin\msvcr71.dll
0x6d8b0000 - 0x6db06000 d:\Program Files\MyEclipse\Common\binary\com.sun.java.jdk.win32.x86_1.6.0.013\jre\bin\client\jvm.dll
0x76b10000 - 0x76b3a000 C:\WINDOWS\system32\WINMM.dll
0x6d340000 - 0x6d348000 d:\Program Files\MyEclipse\Common\binary\com.sun.java.jdk.win32.x86_1.6.0.013\jre\bin\hpi.dll
0x76bc0000 - 0x76bcb000 C:\WINDOWS\system32\PSAPI.DLL
0x6d860000 - 0x6d86c000 d:\Program Files\MyEclipse\Common\binary\com.sun.java.jdk.win32.x86_1.6.0.013\jre\bin\verify.dll
0x6d3e0000 - 0x6d3ff000 d:\Program Files\MyEclipse\Common\binary\com.sun.java.jdk.win32.x86_1.6.0.013\jre\bin\java.dll
0x6d8a0000 - 0x6d8af000 d:\Program Files\MyEclipse\Common\binary\com.sun.java.jdk.win32.x86_1.6.0.013\jre\bin\zip.dll
0x68000000 - 0x68036000 C:\WINDOWS\system32\rsaenh.dll
0x77be0000 - 0x77c38000 C:\WINDOWS\system32\msvcrt.dll
0x759d0000 - 0x75a7f000 C:\WINDOWS\system32\USERENV.dll
0x5fdd0000 - 0x5fe25000 C:\WINDOWS\system32\netapi32.dll
0x6d6c0000 - 0x6d6d3000 D:\Program Files\MyEclipse\Common\binary\com.sun.java.jdk.win32.x86_1.6.0.013\jre\bin\net.dll
0x71a20000 - 0x71a37000 C:\WINDOWS\system32\WS2_32.dll
0x71a10000 - 0x71a18000 C:\WINDOWS\system32\WS2HELP.dll
0x719c0000 - 0x719fe000 C:\WINDOWS\system32\mswsock.dll
0x60fd0000 - 0x61025000 C:\WINDOWS\system32\hnetcfg.dll
0x58a00000 - 0x58a07000 C:\WINDOWS\System32\wship6.dll
0x76ef0000 - 0x76f17000 C:\WINDOWS\system32\DNSAPI.dll
0x76f80000 - 0x76f88000 C:\WINDOWS\System32\winrnr.dll
0x76f30000 - 0x76f5c000 C:\WINDOWS\system32\WLDAP32.dll
0x64000000 - 0x64021000 C:\Program Files\Bonjour\mdnsNSP.dll
0x76d30000 - 0x76d48000 C:\WINDOWS\system32\Iphlpapi.dll
0x76f90000 - 0x76f96000 C:\WINDOWS\system32\rasadhlp.dll
0x10000000 - 0x1003d000 C:\Documents and Settings\Administrator\Local Settings\Temp\jna-Administrator\jna4138342220634322716.dll
0x0b0e0000 - 0x0b114000 C:\WINDOWS\system32\sm125_Comm_Dll.dll
0x71a00000 - 0x71a08000 C:\WINDOWS\System32\wshtcpip.dll
VM Arguments:
jvm_args: -Dfile.encoding=GBK
java_command: com.jxdl.dataConnect.Test
Launcher Type: SUN_STANDARD
Environment Variables:
PATH=d:/Program Files/MyEclipse/Common/binary/com.sun.java.jdk.win32.x86_1.6.0.013/jre/bin/client;d:/Program Files/MyEclipse/Common/binary/com.sun.java.jdk.win32.x86_1.6.0.013/jre/bin;d:/Program Files/MyEclipse/Common/binary/com.sun.java.jdk.win32.x86_1.6.0.013/jre/lib/i386;C:\Program Files\Network General\Sniffer Portable\Program;C:\Program Files\Network General\Sniffer Portable\Program\isniffer;C:\Program Files\Network General\Sniffer Portable\ApperaCollector\bin;C:\Program Files\Network General\Sniffer Portable\SupportComponents\bin;C:\Program Files\Network General\Sniffer Portable\CoreComponents\bin;C:\Program Files\Network General\SnifferProtocols\Decode\1.0;C:\Program Files\Intel\iCLS Client\;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\Program Files\Common Files\Thunder Network\KanKan\Codecs;C:\Program Files\Intel\Intel(R) Management Engine Components\DAL;C:\Program Files\Intel\Intel(R) Management Engine Components\IPT;C:\Program Files\ThinkPad Wireless LAN Adapter Software;C:\Program Files\Rational\common;C:\Program Files\Microsoft SQL Server\100\Tools\Binn\;C:\Program Files\Microsoft SQL Server\100\DTS\Binn\;C:\Program Files\Microsoft SQL Server\100\Tools\Binn\VSShell\Common7\IDE\;C:\WINDOWS\system32\WindowsPowerShell\v1.0;D:\Program Files\Java\jdk1.7.0_17\bin;D:\apache-ant-1.9.0\bin;C:\Program Files\MySQL\MySQL Server 5.6\bin
USERNAME=Administrator
OS=Windows_NT
PROCESSOR_IDENTIFIER=x86 Family 6 Model 42 Stepping 7, GenuineIntel
--------------- S Y S T E M ---------------
OS: Windows XP Build 2600 Service Pack 3
CPU:total 2 (8 cores per cpu, 2 threads per core) family 6 model 10 stepping 7, cmov, cx8, fxsr, mmx, sse, sse2, sse3, ssse3, ht
Memory: 4k page, physical 2097151k(1152544k free), swap 4194303k(3057944k free)
vm_info: Java HotSpot(TM) Client VM (11.3-b02) for windows-x86 JRE (1.6.0_13-b03), built on Mar 9 2009 01:15:24 by "java_re" with MS VC++ 7.1
time: Sun May 26 10:47:48 2013
elapsed time: 0 seconds
--
# C [sm125_Comm_Dll.dll+0x1c4b] native本地代码出现了问题,sm125_Comm_Dll.dll出了错误
猜测应该是public int DataReadPD(ByteBuffer ArrayOfData , int NumberOfBytes);
传递的参数导致底层计算的时候对内存产生了非法的读写
不知道为什么你把参数byte[]改成了ByteBuffer类型,而且分配了10000个字节,传递进去的numberOfBytes却只有100,你先看一下这块
关于字节大小的问题,arrayOfData是用来存数据的数组吧,numberOfBytes是每次传进来的字节数,我觉得这两个大小不会导致崩溃吧。而且我也调节了下,还是crash 的。这个程序本来是一个师兄用MFC写的,老师让改成B/S模型,我的数据大小是按之前师兄的设置来的
厂家不提供源码,那要想解决问题,有什么思路?
把所有可用的数据类型试一遍?刚才已经试了char[],String,String[]了
还能有什么办法呢?
The function returns a pointer to an array of bytes, ArrayOfData[], containing the data returned, and an integer, NumberOfBytes, which indicates the size of the data array.
文档是这样描述这个函数的,您帮忙看看我的程序有没有理解错?