Java 中的 wiringPiISR 核心转储

wiringPiISR core dump in Java

我正在使用 wiringPiISR 获取核心转储 #

Java 运行时环境检测到致命错误: # 内部错误 (os_linux_zero.cpp:254),pid=6552,tid=1866855520 致命错误:捕捉到未处理的信号 11

# JRE 版本:OpenJDK Runtime Environment (8.0_66-b01) (build 1.8.0_66-internal-b01)

Java VM:OpenJDK 零 VM(25.66-b01 解释模式 linux-arm) 无法写入核心转储。核心转储已被禁用。

要启用核心转储,请在再次启动 Java 之前尝试 "ulimit -c unlimited" # 如果您想提交错误报告,请访问:

http://bugreport.java.com/bugreport/crash.jsp #

我该如何解决这个问题?

我的代码是:

import com.na7kr.GPIOController.GPIOController;
import com.na7kr.Utils.Utils;
import com.na7kr.rpi_gpio_controller.Rpi_gpio_controllerApplicationUI;

import com.pi4j.wiringpi.Gpio;
import com.pi4j.wiringpi.GpioInterruptCallback;

public class Interrupt {
Rpi_gpio_controllerApplicationUI mApplication = new      Rpi_gpio_controllerApplicationUI(); // NO_UCD
                                                                                        // (use
                                                                                        // private)

// ***************************************
public synchronized void GetInput1(int trigerpin, int outputpin) throws InterruptedException {
    System.out.println("<--Pi4J--> GPIO interrupt test program");

    // setup wiringPi
    if (Gpio.wiringPiSetup() == -1) {
        System.out.println(" ==>> GPIO SETUP FAILED");
        return;
    }

    Gpio.pinMode(1, Gpio.INPUT);
    Gpio.pinMode(2, Gpio.INPUT);

    Gpio.pullUpDnControl(1, Gpio.PUD_UP);
    Gpio.pullUpDnControl(2, Gpio.PUD_UP);

    Gpio.wiringPiISR(1, Gpio.INT_EDGE_FALLING, new GpioInterruptCallback() {
        @Override
        public void callback(int pin) {
            System.out.println(" ==>> GPIO PIN " + pin + " - INTERRUPT DETECTED");
            Utils.Output_WriteDebug(true, "1");
            GPIOController.INSTANCE.mGPIOPins[outputpin].toggle();
            mApplication.refreshGPIOPinState();
            Utils.Output_WriteDebug(true, "2");
        }
    });
    Gpio.wiringPiISR(2, Gpio.INT_EDGE_FALLING, new GpioInterruptCallback() {
        @Override
        public void callback(int pin) {
            System.out.println(" ==>> GPIO PIN " + pin + " - INTERRUPT DETECTED");
            Utils.Output_WriteDebug(true, "3");
            GPIOController.INSTANCE.mGPIOPins[outputpin].toggle();
            mApplication.refreshGPIOPinState();
            Utils.Output_WriteDebug(true, "4");
        }
    });
}
}

这个问题在我的代码中还是需要发送到 Java?

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

Current thread (0x017210c0):  JavaThread "Thread-4" [_thread_in_vm, id=7296, stack(0x6ec61000,0x6f460000)]

Stack: [0x6ec61000,0x6f460000],  sp=0x6f45e708,  free space=8181k

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

Java Threads: ( => current thread )
=>0x017210c0 JavaThread "Thread-4" [_thread_in_vm, id=7296, stack(0x6ec61000,0x6f460000)]
  0x71cf8a88 JavaThread "http-bio-8080-exec-10" daemon [_thread_blocked, id=6582, stack(0x6fd60000,0x6fee0000)]
  0x63c19bd8 JavaThread "http-bio-8080-exec-9" daemon [_thread_in_native, id=6581, stack(0x6fee0000,0x70060000)]
  0x73407170 JavaThread "http-bio-8080-exec-8" daemon [_thread_in_native, id=6580, stack(0x70060000,0x701e0000)]
  0x74069a48 JavaThread "http-bio-8080-exec-7" daemon [_thread_in_native, id=6579, stack(0x701e0000,0x70360000)]
  0x73e3b720 JavaThread "http-bio-8080-exec-6" daemon [_thread_in_native, id=6578, stack(0x70460000,0x705e0000)]
  0x734058a0 JavaThread "http-bio-8080-exec-5" daemon [_thread_blocked, id=6577, stack(0x70818000,0x70998000)]
  0x734045a0 JavaThread "http-bio-8080-exec-4" daemon [_thread_in_native, id=6576, stack(0x70998000,0x70b18000)]
  0x734032a0 JavaThread "http-bio-8080-exec-3" daemon [_thread_in_native, id=6575, stack(0x70b18000,0x70c98000)]
  0x73402110 JavaThread "http-bio-8080-exec-2" daemon [_thread_in_native, id=6574, stack(0x70c98000,0x70e18000)]
  0x73400a98 JavaThread "http-bio-8080-exec-1" daemon [_thread_blocked, id=6573, stack(0x70e18000,0x70f98000)]
  0x72b80b20 JavaThread "http-bio-8080-AsyncTimeout" daemon [_thread_blocked, id=6572, stack(0x70f98000,0x71118000)]
  0x72b7fa90 JavaThread "http-bio-8080-Acceptor-0" daemon [_thread_in_native, id=6571, stack(0x71118000,0x71298000)]
  0x71f8a4a8 JavaThread "ContainerBackgroundProcessor[StandardEngine[Catalina]]" daemon [_thread_blocked, id=6570, stack(0x71298000,0x71418000)]
  0x71c373f0 JavaThread "GC Daemon" daemon [_thread_blocked, id=6567, stack(0x71a80000,0x71c00000)]
  0x72c3e9d8 JavaThread "Service Thread" daemon [_thread_blocked, id=6564, stack(0x720f7000,0x72277000)]
  0x72c3d058 JavaThread "Signal Dispatcher" daemon [_thread_blocked, id=6563, stack(0x72277000,0x723f7000)]
  0x72c3bd30 JavaThread "Surrogate Locker Thread (Concurrent GC)" daemon [_thread_blocked, id=6562, stack(0x723f7000,0x72577000)]
  0x72c1fe58 JavaThread "Finalizer" daemon [_thread_blocked, id=6561, stack(0x72700000,0x72880000)]
  0x72c1ea18 JavaThread "Reference Handler" daemon [_thread_blocked, id=6560, stack(0x72880000,0x72a00000)]
  0x76505f78 JavaThread "main" [_thread_in_native, id=6553, stack(0x76660000,0x767df000)] 

我更改为 PI4J 的 1.1-SNAPSHOT,问题消失了。