Java jvm在数组内崩溃。等于()

Java jvm在数组内崩溃。等于(),java,jvm-crash,Java,Jvm Crash,从创造的核心我可以看到这一点 > A fatal error has been detected by the Java Runtime Environment: > # > # SIGSEGV (0xb) at pc=0x00007ffbccaa1b83, pid=1781, tid=0x00007ffbb31ec700 > # > # JRE version: Java(TM) SE Runtime Environment (8

从创造的核心我可以看到这一点

> A fatal error has been detected by the Java Runtime Environment:
>     #
>     #  SIGSEGV (0xb) at pc=0x00007ffbccaa1b83, pid=1781, tid=0x00007ffbb31ec700
>     #
>     # JRE version: Java(TM) SE Runtime Environment (8.0_181-b25) (build 1.8.0_181-b25)
>     # Java VM: Java HotSpot(TM) 64-Bit Server VM (25.181-b25 mixed mode linux-amd64 compressed oops)
>     # Problematic frame:
>     # J 6754 C2 java.util.Arrays.equals([B[B)Z (54 bytes) @ 0x00007ffbccaa1b83 [0x00007ffbccaa1b60+0x23]
车祸发生的代码是

private List<UnitInfo> unitInfoList = new ArrayList<UnitInfo>();
private final ReentrantReadWriteLock readWriteLock = new ReentrantReadWriteLock();
private final Lock readLock = readWriteLock.readLock();


public UnitInfo getUnitInfoFromIPAddress( InetSocketAddress address )//
    {
        byte[] ipAddress = address.getAddress().getAddress();
        readLock.lock();
        try
        {
            UnitInfo unitInfo;
            Iterator<UnitInfo> list = unitInfoList.iterator();
            while( list.hasNext() )
            {
                unitInfo = list.next();
                if( null != unitInfo.getIpAddress() )
                {
                    if( Arrays.equals( ipAddress, unitInfo.getIpAddress().getAddress() ) )
                    {
                        return unitInfo;
                    }
                }
            }

            return null;
        }
        finally
        {
            //Unlock after completing the read operation.
            readLock.unlock();
        }
    }
这些异常不久前出现在许多线程中,并在进程终止时停止

public byte[] getAddress()
    {
        byte[] address = null;

        if( IPV4_VAL == version )
        {

                address = Arrays.copyOf(this.address, IPV4_ADDRSIZE);

        }
        else
        {
            address = this.address;
        }
        return address;
    }

显然,这些空指针是由于字节[]this.address未初始化而导致的,而且在执行时它仍然是空的。这个错误只发生过一次,所以我想知道是什么导致了崩溃发生在数组中。equals()?如果参数为null,此方法不会失败。这是因为copyOf()中的另一个空指针吗?在这种情况下,我不会在hss_err文件的堆栈跟踪中看到copyOf()吗?迭代器和我的readlock是否存在并发问题

也许你应该提供更多的
核心转储
内容。你能创建一个简化的测试类并写出你需要的插件/库吗?为什么不把所有的异常粘贴在这里?可能有很多原因,我们可以列出一大堆原因。
public byte[] getAddress()
    {
        byte[] address = null;

        if( IPV4_VAL == version )
        {

                address = Arrays.copyOf(this.address, IPV4_ADDRSIZE);

        }
        else
        {
            address = this.address;
        }
        return address;
    }