2017-05-12 10 views
0

Entschuldigung für Englisch. Ich habe ein Problem beim Ausführen eines Java-Programms für die Interaktion mit USB-Modems, es verwendet Threads und durch die rxtx-Bibliothek stellt die Kommunikation mit bis zu 24 COM-Ports, der Fehler passiert, wenn ich genau 24 Modems über USB-Hub an Maschine angeschlossen haben. Es schließt sich und generiert die folgende log-Datei (Teil)Zugriffsverletzung - Programm in Java mit rxtx schließt automatisch

# 
# A fatal error has been detected by the Java Runtime Environment: 
# 
# EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x00000001800087dd, pid=6564, tid=0x00000000000017a8 
# 
# JRE version: Java(TM) SE Runtime Environment (8.0_112-b15) (build 1.8.0_112-b15) 
# Java VM: Java HotSpot(TM) 64-Bit Server VM (25.112-b15 mixed mode windows-amd64 compressed oops) 
# Problematic frame: 
# C [rxtxSerial.dll+0x87dd] 
# 
# Failed to write core dump. Minidumps are not enabled by default on client versions of Windows 

--------------- T H R E A D --------------- 

Current thread (0x0000000017667000): JavaThread "Thread-32" [_thread_in_native, id=6056, stack(0x000000001e640000,0x000000001e740000)] 

siginfo: ExceptionCode=0xc0000005, writing address 0x0000000000000100 

Register to memory mapping: 

RAX=0x0000000000000000 is an unknown value 
RBX=0x00000000162e4ba0 is an unknown value 
RCX=0x0000000000000002 is an unknown value 
RDX=0x0000000000000000 is an unknown value 
RSP=0x000000001e73eab0 is pointing into the stack for thread: 0x0000000017667000 
RBP=0x000000001e73ed28 is pointing into the stack for thread: 0x0000000017667000 
RSI=0x0000000016ae623a is an unknown value 
RDI=0x00000000162e4d20 is an unknown value 
R8 =0x0000000000000000 is an unknown value 
R9 =0x0000000000000000 is an unknown value 
R10=0x0000000000000006 is an unknown value 
R11=0x0000000000000001 is an unknown value 
R12=0x000000001e73ed30 is pointing into the stack for thread: 0x0000000017667000 
R13=0x0000000019553998 is pointing into metadata 
R14=0x000000001e73ed30 is pointing into the stack for thread: 0x0000000017667000 
R15=0x0000000017667000 is a thread 


Stack: [0x000000001e640000,0x000000001e740000], sp=0x000000001e73eab0, free space=1018k 
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code) 
C [rxtxSerial.dll+0x87dd] 
C [rxtxSerial.dll+0xaab4] 
C [rxtxSerial.dll+0x213d] 
C 0x0000000002738a4b 

Java frames: (J=compiled Java code, j=interpreted, Vv=VM code) 
j gnu.io.RXTXPort.open(Ljava/lang/String;)I+0 
j gnu.io.RXTXPort.<init>(Ljava/lang/String;)V+125 
j gnu.io.RXTXCommDriver.getCommPort(Ljava/lang/String;I)Lgnu/io/CommPort;+78 
j gnu.io.CommPortIdentifier.open(Ljava/lang/String;I)Lgnu/io/CommPort;+171 
j tw.modem.Porta.abrePorta()V+11 
j tw.modem.Porta.run()V+50 
j java.lang.Thread.run()V+11 
v ~StubRoutines::call_stub 

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

Java Threads: (=> current thread) 
    0x0000000016a33000 JavaThread "Thread-41" [_thread_in_native, id=6436, stack(0x000000001ecf0000,0x000000001edf0000)] 
    0x0000000016a32000 JavaThread "Thread-40" [_thread_in_native, id=6008, stack(0x000000001ebc0000,0x000000001ecc0000)] 
    0x0000000016a31800 JavaThread "Thread-39" [_thread_in_native, id=676, stack(0x000000001e950000,0x000000001ea50000)] 
    0x0000000016a30800 JavaThread "Thread-38" [_thread_in_native, id=6368, stack(0x0000000019190000,0x0000000019290000)] 
    0x0000000016a30000 JavaThread "Thread-37" [_thread_in_native, id=7160, stack(0x000000001e750000,0x000000001e850000)] 
    0x0000000016a2f000 JavaThread "Thread-36" [_thread_in_native, id=5372, stack(0x000000001e210000,0x000000001e310000)] 
    0x0000000017665800 JavaThread "Thread-35" [_thread_in_native, id=3228, stack(0x00000000188b0000,0x00000000189b0000)] 
    0x0000000016a2d800 JavaThread "Thread-33" [_thread_blocked, id=1060, stack(0x000000001e850000,0x000000001e950000)] 
=>0x0000000017667000 JavaThread "Thread-32" [_thread_in_native, id=6056, stack(0x000000001e640000,0x000000001e740000)] 
    0x0000000017666000 JavaThread "Thread-31" [_thread_blocked, id=3368, stack(0x000000001e430000,0x000000001e530000)] 
    0x0000000017661800 JavaThread "Thread-30" [_thread_blocked, id=6312, stack(0x000000001e310000,0x000000001e410000)] 
    0x0000000017662800 JavaThread "Thread-29" [_thread_blocked, id=2556, stack(0x000000001e0b0000,0x000000001e1b0000)] 
    0x0000000017660000 JavaThread "Thread-28" [_thread_blocked, id=6584, stack(0x000000001dc60000,0x000000001dd60000)] 
    0x0000000017663000 JavaThread "Thread-27" [_thread_blocked, id=748, stack(0x0000000019da0000,0x0000000019ea0000)] 
    0x0000000017661000 JavaThread "Thread-26" [_thread_blocked, id=4080, stack(0x000000001c990000,0x000000001ca90000)] 
    0x0000000017664000 JavaThread "Thread-25" [_thread_blocked, id=6452, stack(0x000000001dec0000,0x000000001dfc0000)] 
    0x0000000017664800 JavaThread "Thread-24" [_thread_blocked, id=4544, stack(0x000000001db50000,0x000000001dc50000)] 
    0x0000000016a21800 JavaThread "Image Animator 3" daemon [_thread_blocked, id=6328, stack(0x0000000019850000,0x0000000019950000)] 
    0x0000000017626800 JavaThread "Timer-0" [_thread_blocked, id=6772, stack(0x00000000199b0000,0x0000000019ab0000)] 
    0x00000000176c7800 JavaThread "TimerQueue" daemon [_thread_blocked, id=5760, stack(0x0000000019700000,0x0000000019800000)] 
    0x00000000003be800 JavaThread "DestroyJavaVM" [_thread_blocked, id=3488, stack(0x0000000002350000,0x0000000002450000)] 
    0x00000000177a9800 JavaThread "AWT-EventQueue-0" [_thread_blocked, id=424, stack(0x0000000019300000,0x0000000019400000)] 
    0x000000001753b000 JavaThread "AWT-Windows" daemon [_thread_in_native, id=2300, stack(0x0000000018610000,0x0000000018710000)] 
    0x0000000016b65800 JavaThread "AWT-Shutdown" [_thread_blocked, id=7152, stack(0x0000000018490000,0x0000000018590000)] 
    0x0000000016b64800 JavaThread "Java2D Disposer" daemon [_thread_blocked, id=3384, stack(0x00000000180c0000,0x00000000181c0000)] 
    0x000000001697a800 JavaThread "Abandoned connection cleanup thread" daemon [_thread_blocked, id=5112, stack(0x0000000017380000,0x0000000017480000)] 
    0x000000001683e000 JavaThread "Service Thread" daemon [_thread_blocked, id=6648, stack(0x0000000017040000,0x0000000017140000)] 
    0x00000000167c5000 JavaThread "C1 CompilerThread2" daemon [_thread_blocked, id=7044, stack(0x0000000016e50000,0x0000000016f50000)] 
    0x00000000167c4800 JavaThread "C2 CompilerThread1" daemon [_thread_blocked, id=5560, stack(0x0000000016c00000,0x0000000016d00000)] 
    0x0000000014f7a800 JavaThread "C2 CompilerThread0" daemon [_thread_blocked, id=3980, stack(0x0000000016300000,0x0000000016400000)] 
    0x0000000014f78000 JavaThread "Attach Listener" daemon [_thread_blocked, id=4684, stack(0x00000000166b0000,0x00000000167b0000)] 
    0x0000000014f74800 JavaThread "Signal Dispatcher" daemon [_thread_blocked, id=5064, stack(0x0000000016530000,0x0000000016630000)] 
    0x0000000014f5a800 JavaThread "Finalizer" daemon [_thread_blocked, id=4300, stack(0x0000000016430000,0x0000000016530000)] 
    0x0000000014f13800 JavaThread "Reference Handler" daemon [_thread_blocked, id=1556, stack(0x0000000016170000,0x0000000016270000)] 

Other Threads: 
    0x0000000014f0b800 VMThread [stack: 0x0000000015f80000,0x0000000016080000] [id=3788] 
    0x000000001686c000 WatcherThread [stack: 0x0000000017160000,0x0000000017260000] [id=6028] 

VM state:not at safepoint (normal execution) 

VM Mutex/Monitor currently owned by a thread: None 


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

OS: Windows 7 , 64 bit Build 7601 (6.1.7601.23569) 

CPU:total 4 (2 cores per cpu, 2 threads per core) family 6 model 42 stepping 7, cmov, cx8, fxsr, mmx, sse, sse2, sse3, ssse3, sse4.1, sse4.2, popcnt, avx, clmul, ht, tsc, tscinvbit 

Memory: 4k page, physical 4104836k(1314976k free), swap 8207812k(4569232k free) 

vm_info: Java HotSpot(TM) 64-Bit Server VM (25.112-b15) for windows-amd64 JRE (1.8.0_112-b15), built on Sep 22 2016 21:31:56 by "java_re" with MS VC++ 10.0 (VS2010) 

Die Funktion abrePorta, verantwortlich für den COM-Port zu öffnen, die in dem Bericht und ist hier.

private synchronized void abrePorta() { 
     try { 
      serialPort = (SerialPort) serialPortId.open("Porta", 6000); 
      serialPort.setSerialPortParams(115200, SerialPort.DATABITS_8, SerialPort.STOPBITS_1, 
        SerialPort.PARITY_NONE); 
      serialPort.setFlowControlMode(SerialPort.FLOWCONTROL_RTSCTS_IN | SerialPort.FLOWCONTROL_RTSCTS_OUT); 
      at = new AtCommandPort(serialPort); 
     } catch (Exception e) { 
      System.err.println(e.getMessage()); 
      e.printStackTrace(); 
     } 
    } 

Wer hat eine Idee, was es sein könnte? Wäre es ein Fehler, die Kommunikation mit den Häfen herzustellen? Danke

+0

Ich löste das Problem, indem ich die Kommunikationsschnittstelle rxtx serielle Schnittstelle zu jssc änderte. Übrigens, viel stabiler. – Everson

Antwort

0

Ich konfrontiert das gleiche Problem hier. Ich habe festgestellt, dass die Speicherverwaltung in C lib dieses Problem verursacht.

0

Ich habe dieses Problem behoben. By ersetzen rxtxSerial64.dll, die für 64-Bit-Betriebssystem verwendet wird.

Verwandte Themen