Fazecast / jSerialComm

Platform-independent serial port access for Java
GNU Lesser General Public License v3.0
1.34k stars 287 forks source link

Crashed 'SerialPort.getCommPorts()' after running time 16 hours up #564

Closed 93cy closed 4 months ago

93cy commented 5 months ago

OS : 5.15.84-v8+ #1613 SMP PREEMPT Thu Jan 5 12:03:08 GMT 2023 aarch64 (raspberry pi 4, compute module)

JAVA version : openjdk version "11.0.20" 2023-07-18 OpenJDK Runtime Environment (build 11.0.20+8-post-Debian-1deb11u1) OpenJDK 64-Bit Server VM (build 11.0.20+8-post-Debian-1deb11u1, mixed mode)

JserialComm version : 2.9.3, 2.11.0

I have checked with getCommPorts() every second. but I found crashed my App with 'hs_err_pid3958595.log' a few hours later.

`Host: AArch64, 4 cores, 3G, Debian GNU/Linux 11 (bullseye) Time: Sun Jun 2 01:48:13 2024 KST elapsed time: 143875.603287 seconds (1d 15h 57m 55s)

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

Current thread (0x0000007f9c472800): JavaThread "welink-serial-port-scan" [_thread_in_vm, id=3958779, stack(0x0000007f36800000,0x0000007f36a00000)]

Stack: [0x0000007f36800000,0x0000007f36a00000], sp=0x0000007f369fdf80, free space=2039k Native frames: (J=compiled Java code, A=aot compiled Java code, j=interpreted, Vv=VM code, C=native code) V [libjvm.so+0x75db1c] jni_ThrowNew+0x6c C [libjSerialComm.so+0x3ac8] C [libjSerialComm.so+0x749c] Java_com_fazecast_jSerialComm_SerialPort_getCommPortsNative+0x84 J 4636 com.fazecast.jSerialComm.SerialPort.getCommPortsNative()[Lcom/fazecast/jSerialComm/SerialPort; (0 bytes) @ 0x0000007f8c5a7bc0 [0x0000007f8c5a7b40+0x0000000000000080] C 0x0000000100031688

Java frames: (J=compiled Java code, j=interpreted, Vv=VM code) J 4636 com.fazecast.jSerialComm.SerialPort.getCommPortsNative()[Lcom/fazecast/jSerialComm/SerialPort; (0 bytes) @ 0x0000007f8c5a7bc4 [0x0000007f8c5a7b40+0x0000000000000084] J 5001 c2 welink.core.device.serial.jserial.WelinkJSerialPortManager.scanSerialPorts()V (498 bytes) @ 0x0000007f8c67f4d4 [0x0000007f8c67e780+0x0000000000000d54] J 5729% c2 welink.core.device.serial.jserial.WelinkJSerialPortManager$2.call()Ljava/lang/Void; (87 bytes) @ 0x0000007f8c93d5f4 [0x0000007f8c93d400+0x00000000000001f4] j welink.core.device.serial.jserial.WelinkJSerialPortManager$2.call()Ljava/lang/Object;+1 j java.util.concurrent.FutureTask.run()V+39 java.base@11.0.20 j java.util.concurrent.ThreadPoolExecutor.runWorker(Ljava/util/concurrent/ThreadPoolExecutor$Worker;)V+92 java.base@11.0.20 j java.util.concurrent.ThreadPoolExecutor$Worker.run()V+5 java.base@11.0.20 j java.lang.Thread.run()V+11 java.base@11.0.20 v ~StubRoutines::call_stub `

How do I prevent it from crashing?