2011-03-04 3 views
0

C++ 라이브러리를 사용하는 Java 응용 프로그램을 개발 중입니다. 내 응용 프로그램 유형은 클라이언트/서버 RCP (eclipse 플러그인 기반)입니다. 문제는 2 개 이상의 클라이언트를 서버에 연결하려고 할 때 항상 문제가 발생한다는 것입니다. 이상한 점은 Windows에서 실행할 때만이 문제가 발생한다는 것입니다. 리눅스에서는 잘 동작합니다.내 JNI 응용 프로그램과의 다중 연결로 구성된 내 라이브러리

프로그래밍 방식으로 클라이언트가 C++ 스레드로 표시된다는 사실을 알고 싶습니다. 같은 리소스에 액세스하려고 할 수 있습니다. 나는 응용 프로그램, 그것은 defroze 대기, 실행이


# An unexpected error has been detected by Java Runtime Environment: 
# 
# EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x6b88cd86, pid=2972, tid=3700 
# 
# Java VM: Java HotSpot(TM) Client VM (11.2-b01 mixed mode windows-x86) 
# Problematic frame: 
# C [libtlmdevice_ycp-3-0-0.dll+0x4cd86] 
# 
# 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 (0x637f0800): JavaThread "Thread-4" [_thread_in_native, id=3700, stack(0x687a0000,0x687f0000)] 

siginfo: ExceptionCode=0xc0000005, reading address 0x0000000c 

Registers: 
EAX=0x00000000, EBX=0x6b87b418, ECX=0x003fcd58, EDX=0x00000000 
ESP=0x687efaa8, EBP=0x687efaa8, ESI=0x003ffeb8, EDI=0x637f0800 
EIP=0x6b88cd86, EFLAGS=0x00010202 

Top of Stack: (sp=0x687efaa8) 
0x687efaa8: 687efb08 6b86246a 00000000 6b897954 
0x687efab8: 00000001 6b87b418 003ffeb8 637f0800 
0x687efac8: 687efae8 6b87a97c 688946e8 00000000 
0x687efad8: 00000001 00000000 68893500 633b3f02 
0x687efae8: 687efb02 6b88d032 00000002 00000000 
0x687efaf8: 00000000 6b87b418 003ffeb8 637f0800 
0x687efb08: 687efb48 6b87b312 003fcd58 00000002 
0x687efb18: 00000000 00000011 687efb58 7c90da1c 

Instructions: (pc=0x6b88cd86) 
0x6b88cd76: 08 0f b6 45 fc 88 42 08 c9 c3 55 89 e5 8b 45 08 
0x6b88cd86: 8b 40 0c 5d c3 90 55 89 e5 53 83 ec 14 8b 45 08 


Stack: [0x687a0000,0x687f0000], sp=0x687efaa8, free space=318k 
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code) 
C [libtlmdevice_ycp-3-0-0.dll+0x4cd86] 
C [libtlmdevice_ycp-3-0-0.dll+0x2246a] 
C [libtlmdevice_ycp-3-0-0.dll+0x3b312] 
C [libtlmdevice_ycp-3-0-0.dll+0x3b42c] 
C [libtlmdevice_ycp-3-0-0.dll+0x3db81] 
C [libtlmdevice_ycp-3-0-0.dll+0x3de1c] 
C [libtlmdevice_ycp-3-0-0.dll+0x22f70] 
j com.st.tlmdevice.api.TlmdeviceServer.Initialize(Ljava/lang/String;IIII)I+0 
j com.st.tlmdevice.api.TlmdeviceServer.run()V+40 
v ~StubRoutines::call_stub 

Java frames: (J=compiled Java code, j=interpreted, Vv=VM code) 
j com.st.tlmdevice.api.TlmdeviceServer.Initialize(Ljava/lang/String;IIII)I+0 
j com.st.tlmdevice.api.TlmdeviceServer.run()V+40 
v ~StubRoutines::call_stub 

--------------- P R O C E S S --------------- 

Java Threads: (=> current thread) 
    0x66e52800 JavaThread "Thread-17" [_thread_in_native, id=1324, stack(0x68c30000,0x68c80000)] 
    0x63063000 JavaThread "Thread-15" [_thread_in_native, id=3060, stack(0x68b30000,0x68b80000)] 
    0x63035000 JavaThread "Thread-16" [_thread_in_native, id=3720, stack(0x68970000,0x689c0000)] 
    0x637e5800 JavaThread "Thread-14" [_thread_in_native, id=2672, stack(0x689c0000,0x68a10000)] 
    0x66da4400 JavaThread "Java Sound Event Dispatcher" daemon [_thread_blocked, id=1532, stack(0x6bf00000,0x6bf50000)] 
=>0x637f0800 JavaThread "Thread-4" [_thread_in_native, id=3700, stack(0x687a0000,0x687f0000)] 
    0x637ec800 JavaThread "Thread-5" [_thread_blocked, id=796, stack(0x68750000,0x687a0000)] 
    0x66be8c00 JavaThread "Worker-1" [_thread_blocked, id=2016, stack(0x684c0000,0x68510000)] 
    0x66b67400 JavaThread "Worker-0" [_thread_blocked, id=2336, stack(0x67ac0000,0x67b10000)] 
    0x63408400 JavaThread "Start Level Event Dispatcher" daemon [_thread_blocked, id=3360, stack(0x63760000,0x637b0000)] 
    0x633ffc00 JavaThread "Framework Event Dispatcher" daemon [_thread_blocked, id=1268, stack(0x636c0000,0x63710000)] 
    0x633e6c00 JavaThread "State Data Manager" daemon [_thread_blocked, id=1968, stack(0x63670000,0x636c0000)] 
    0x63025000 JavaThread "Low Memory Detector" daemon [_thread_blocked, id=3936, stack(0x63270000,0x632c0000)] 
    0x6301ec00 JavaThread "CompilerThread0" daemon [_thread_blocked, id=468, stack(0x63220000,0x63270000)] 
    0x6301d400 JavaThread "Attach Listener" daemon [_thread_blocked, id=2560, stack(0x631d0000,0x63220000)] 
    0x6301c000 JavaThread "Signal Dispatcher" daemon [_thread_blocked, id=2716, stack(0x63180000,0x631d0000)] 
    0x6300c400 JavaThread "Finalizer" daemon [_thread_blocked, id=456, stack(0x63130000,0x63180000)] 
    0x63007800 JavaThread "Reference Handler" daemon [_thread_blocked, id=1400, stack(0x630e0000,0x63130000)] 
    0x003a6c00 JavaThread "main" [_thread_in_native, id=448, stack(0x008c0000,0x00910000)] 

Other Threads: 
    0x63004000 VMThread [stack: 0x63090000,0x630e0000] [id=1424] 
    0x63038800 WatcherThread [stack: 0x632c0000,0x63310000] [id=2604] 

VM state:not at safepoint (normal execution) 

VM Mutex/Monitor currently owned by a thread: None 

Heap 
def new generation total 36352K, used 165K [0x02990000, 0x05100000, 0x07850000) 
    eden space 32320K, 0% used [0x02990000, 0x029b9740, 0x04920000) 
    from space 4032K, 0% used [0x04920000, 0x04920000, 0x04d10000) 
    to space 4032K, 0% used [0x04d10000, 0x04d10000, 0x05100000) 
tenured generation total 483968K, used 30304K [0x07850000, 0x250f0000, 0x42990000) 
    the space 483968K, 6% used [0x07850000, 0x095e83f8, 0x095e8400, 0x250f0000) 
compacting perm gen total 28928K, used 28902K [0x42990000, 0x445d0000, 0x62990000) 
    the space 28928K, 99% used [0x42990000, 0x445c9ac0, 0x445c9c00, 0x445d0000) 
No shared spaces configured. 

Dynamic libraries: 
0x00400000 - 0x00424000  C:\spg\ext_tools\jdk\i686-win5.1\jdk1.6.0_12\jre\bin\javaw.exe 
0x7c900000 - 0x7c9af000  C:\WINDOWS\system32\ntdll.dll 
0x7c800000 - 0x7c8f6000  C:\WINDOWS\system32\kernel32.dll 
0x77dd0000 - 0x77e6b000  C:\WINDOWS\system32\ADVAPI32.dll 
0x77e70000 - 0x77f02000  C:\WINDOWS\system32\RPCRT4.dll 
0x77fe0000 - 0x77ff1000  C:\WINDOWS\system32\Secur32.dll 
0x7e410000 - 0x7e4a1000  C:\WINDOWS\system32\USER32.dll 
0x77f10000 - 0x77f59000  C:\WINDOWS\system32\GDI32.dll 
0x76390000 - 0x763ad000  C:\WINDOWS\system32\IMM32.DLL 
0x7c340000 - 0x7c396000  C:\spg\ext_tools\jdk\i686-win5.1\jdk1.6.0_12\jre\bin\msvcr71.dll 
0x6d8b0000 - 0x6db06000  C:\spg\ext_tools\jdk\i686-win5.1\jdk1.6.0_12\jre\bin\client\jvm.dll 
0x76b40000 - 0x76b6d000  C:\WINDOWS\system32\WINMM.dll 
0x6d340000 - 0x6d348000  C:\spg\ext_tools\jdk\i686-win5.1\jdk1.6.0_12\jre\bin\hpi.dll 
0x76bf0000 - 0x76bfb000  C:\WINDOWS\system32\PSAPI.DLL 
0x6d860000 - 0x6d86c000  C:\spg\ext_tools\jdk\i686-win5.1\jdk1.6.0_12\jre\bin\verify.dll 
0x6d3e0000 - 0x6d3ff000  C:\spg\ext_tools\jdk\i686-win5.1\jdk1.6.0_12\jre\bin\java.dll 
0x6d8a0000 - 0x6d8af000  C:\spg\ext_tools\jdk\i686-win5.1\jdk1.6.0_12\jre\bin\zip.dll 
0x72000000 - 0x72014000  C:\STM\STWorkbenchR4.1.1\plugins\org.eclipse.equinox.launcher.win32.win32.x86_1.0.101.R34x_v20080731\eclipse_1115.dll 
0x773d0000 - 0x774d3000  C:\WINDOWS\WinSxS\x86_Microsoft.Windows.Common-Controls_6595b64144ccf1df_6.0.2600.5512_x-ww_35d4ce83\COMCTL32.dll 
0x77c10000 - 0x77c68000  C:\WINDOWS\system32\msvcrt.dll 
0x77f60000 - 0x77fd6000  C:\WINDOWS\system32\SHLWAPI.dll 
0x77c00000 - 0x77c08000  C:\WINDOWS\system32\VERSION.dll 
0x63530000 - 0x63568000  C:\WINDOWS\system32\uxtheme.dll 
0x74720000 - 0x7476c000  C:\WINDOWS\system32\MSCTF.dll 
0x755c0000 - 0x755ee000  C:\WINDOWS\system32\msctfime.ime 
0x774e0000 - 0x7761d000  C:\WINDOWS\system32\ole32.dll 
0x68000000 - 0x68036000  C:\WINDOWS\system32\rsaenh.dll 
0x769c0000 - 0x76a74000  C:\WINDOWS\system32\USERENV.dll 
0x63610000 - 0x63665000  C:\WINDOWS\system32\netapi32.dll 
0x6d6c0000 - 0x6d6d3000  C:\spg\ext_tools\jdk\i686-win5.1\jdk1.6.0_12\jre\bin\net.dll 
0x71ab0000 - 0x71ac7000  C:\WINDOWS\system32\WS2_32.dll 
0x71aa0000 - 0x71aa8000  C:\WINDOWS\system32\WS2HELP.dll 
0x71a50000 - 0x71a8f000  C:\WINDOWS\System32\mswsock.dll 
0x76f20000 - 0x76f47000  C:\WINDOWS\system32\DNSAPI.dll 
0x76fb0000 - 0x76fb8000  C:\WINDOWS\System32\winrnr.dll 
0x76f60000 - 0x76f8c000  C:\WINDOWS\system32\WLDAP32.dll 
0x76fc0000 - 0x76fc6000  C:\WINDOWS\system32\rasadhlp.dll 
0x6d6e0000 - 0x6d6e9000  C:\spg\ext_tools\jdk\i686-win5.1\jdk1.6.0_12\jre\bin\nio.dll 
0x673d0000 - 0x67425000  C:\Documents and Settings\turkia\workspace2\.metadata\.plugins\org.eclipse.pde.core\New_configuration\org.eclipse.osgi\bundles\561\1\.cp\swt-win32-3452.dll 
0x77120000 - 0x771ab000  C:\WINDOWS\system32\OLEAUT32.dll 
0x763b0000 - 0x763f9000  C:\WINDOWS\system32\comdlg32.dll 
0x7c9c0000 - 0x7d1d7000  C:\WINDOWS\system32\SHELL32.dll 
0x74d90000 - 0x74dfb000  C:\WINDOWS\system32\USP10.dll 
0x771b0000 - 0x7727e000  C:\WINDOWS\system32\WININET.dll 
0x67440000 - 0x67449000  C:\WINDOWS\system32\Normaliz.dll 
0x67450000 - 0x67495000  C:\WINDOWS\system32\iertutil.dll 
0x67730000 - 0x67744000  C:\Documents and Settings\turkia\workspace2\.metadata\.plugins\org.eclipse.pde.core\New_configuration\org.eclipse.osgi\bundles\561\1\.cp\swt-gdip-win32-3452.dll 
0x67750000 - 0x678f6000  C:\WINDOWS\WinSxS\x86_Microsoft.Windows.GdiPlus_6595b64144ccf1df_1.0.2600.5512_x-ww_dfb54e0c\gdiplus.dll 
0x74c80000 - 0x74cac000  C:\WINDOWS\system32\oleacc.dll 
0x76080000 - 0x760e5000  C:\WINDOWS\system32\MSVCP60.dll 
0x68040000 - 0x68305000  C:\WINDOWS\system32\xpsp2res.dll 
0x76380000 - 0x76385000  C:\WINDOWS\system32\msimg32.dll 
0x67b10000 - 0x67b1f000  C:\Documents and Settings\turkia\workspace2\.metadata\.plugins\org.eclipse.pde.core\New_configuration\org.eclipse.osgi\bundles\362\1\.cp\jWinHttp.dll 
0x67b30000 - 0x67b89000  C:\WINDOWS\system32\WINHTTP.dll 
0x76fd0000 - 0x7704f000  C:\WINDOWS\system32\CLBCATQ.DLL 
0x77050000 - 0x77115000  C:\WINDOWS\system32\COMRes.dll 
0x75cf0000 - 0x75d81000  C:\WINDOWS\system32\mlang.dll 
0x70d00000 - 0x70d23000  C:\test\i686-win5.1-gcc_4.1.1_mingw-2-jdk_1.6.0_12-yac_1.2.5\bin\libyacapi.dll 
0x6b840000 - 0x6bef9000  C:\test\i686-win5.1-gcc_4.1.1_mingw-2-jdk_1.6.0_12-yac_1.2.5\bin\libtlmdevice_ycp-3-0-0.dll 
0x687f0000 - 0x68848000  C:\WINDOWS\system32\hnetcfg.dll 
0x73080000 - 0x7309d000  C:\WINDOWS\system32\rsvpsp.dll 
0x71a90000 - 0x71a98000  C:\WINDOWS\System32\wshtcpip.dll 
0x6d5d0000 - 0x6d5f4000  C:\spg\ext_tools\jdk\i686-win5.1\jdk1.6.0_12\jre\bin\jsound.dll 
0x6d600000 - 0x6d608000  C:\spg\ext_tools\jdk\i686-win5.1\jdk1.6.0_12\jre\bin\jsoundds.dll 
0x73f10000 - 0x73f6c000  C:\WINDOWS\system32\DSOUND.dll 
0x76c30000 - 0x76c5e000  C:\WINDOWS\system32\WINTRUST.dll 
0x77a80000 - 0x77b15000  C:\WINDOWS\system32\CRYPT32.dll 
0x77b20000 - 0x77b32000  C:\WINDOWS\system32\MSASN1.dll 
0x76c90000 - 0x76cb8000  C:\WINDOWS\system32\IMAGEHLP.dll 
0x72d20000 - 0x72d29000  C:\WINDOWS\system32\wdmaud.drv 
0x72d10000 - 0x72d18000  C:\WINDOWS\system32\msacm32.drv 
0x77be0000 - 0x77bf5000  C:\WINDOWS\system32\MSACM32.dll 
0x77bd0000 - 0x77bd7000  C:\WINDOWS\system32\midimap.dll 
0x73ee0000 - 0x73ee4000  C:\WINDOWS\system32\KsUser.dll 

VM Arguments: 
jvm_args: -Xms512m -Xmx1g -XX:MaxPermSize=512m -Declipse.pde.launch=true -Dfile.encoding=Cp1252 
java_command: org.eclipse.equinox.launcher.Main -launcher C:\STM\STWorkbenchR4.1.1\eclipse.exe -name Eclipse -showsplash 600 -product com.st.platform.st_ide -data C:\Documents and Settings\turkia\workspace2/../runtime-New_configuration -configuration file:C:/Documents and Settings/turkia/workspace2/.metadata/.plugins/org.eclipse.pde.core/New_configuration/ -dev file:C:/Documents and Settings/turkia/workspace2/.metadata/.plugins/org.eclipse.pde.core/New_configuration/dev.properties -os win32 -ws win32 -arch x86 -nl en_US 
Launcher Type: SUN_STANDARD 

Environment Variables: 
PATH=C:/spg/ext_tools/jdk/i686-win5.1/jdk1.6.0_12/bin/../jre/bin/client;C:/spg/ext_tools/jdk/i686-win5.1/jdk1.6.0_12/bin/../jre/bin;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem 
USERNAME=turkia 
OS=Windows_NT 
PROCESSOR_IDENTIFIER=x86 Family 6 Model 15 Stepping 2, GenuineIntel 



--------------- S Y S T E M --------------- 

OS: Windows XP Build 2600 Service Pack 3 

CPU:total 1 (1 cores per cpu, 1 threads per core) family 6 model 15 stepping 2, cmov, cx8, fxsr, mmx, sse, sse2, sse3, ssse3 

Memory: 4k page, physical 2086444k(1045564k free), swap 4024844k(2273736k free) 

vm_info: Java HotSpot(TM) Client VM (11.2-b01) for windows-x86 JRE (1.6.0_12-b04), built on Jan 17 2009 09:57:14 by "java_re" with MS VC++ 7.1 

time: Thu Mar 03 11:07:22 2011 
elapsed time: 334 seconds 

libtlmdevice_ycp-3-0-0.dll 아래의 로그를 충돌 및 발생하자 당신은 어떤이있는 경우 나

을 사용하고있는 라이브러리입니다 아이디어 :) 미리 감사드립니다.

종류, 알리.

답변

0

네이티브 코드는 AttachCurrentThread를 사용하여 jvm에 연결하고이 함수가 제공하는 JNIEnv 포인터를 사용해야합니다. C++ lib에 첫 번째 JNIEnv를 사용할 수는 없습니다.

또한, C++ lib가 스레드로부터 안전하지 않고 소스를 보지 않고도 알 수있는 좋은 기회가 있습니다.

관련 문제