2011-03-04 3 views
0

Je développe une application Java qui utilise une bibliothèque C++. Mon type d'application est un client/serveur RCP (basé sur un plugin eclipse). Le problème est que lorsque j'essaie de connecter plus de 2 clients à mon serveur, ça fronce toujours. Ce qui est étrange, c'est que ce problème se produit, seulement lors de son exécution dans Windows. Sous Linux, cela fonctionne bien.Ma bibliothèque sur les connexions multiples avec mes applications JNI

Je veux également remarquer que, par programmation, les clients sont représentés par des threads C++. Peut être, ils veulent accéder à la même ressource. Si je laisse l'application en cours d'exécution, il en attente de defroze, il se bloque et génère le journal ci-dessous


# 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 est la bibliothèque J'utilise

Si vous avez des idée :) Merci d'avance. Cordialement, Ali.

Répondre

0

Le code natif doit être attaché au jvm en utilisant AttachCurrentThread et utiliser le pointeur JNIEnv fourni par cette fonction. Vous ne pouvez pas simplement utiliser le premier JNIEnv votre librairie C++ a mis la main dessus.

De plus, il y a de bonnes chances que la bibliothèque C++ ne soit pas thread-safe, ne peut pas dire sans voir la source.

Questions connexes