Java 8-Java运行时环境检测到一个致命错误

Java 8-Java运行时环境检测到一个致命错误,java,lambda,webserver,java-stream,aspectj,Java,Lambda,Webserver,Java Stream,Aspectj,部署在tomcat服务器上的my webapp因以下错误而崩溃: Java运行时环境检测到一个致命错误: pc=0x00007fe6f9b9e105、pid=7607、tid=140628827879168时的SIGSEGV(0xb) JRE版本:Java(TM)SE运行时环境(8.0_31-b13)(构建1.8.0_31-b13) Java虚拟机:Java热点(TM)64位服务器虚拟机(25.31-b07混合模式linux-amd64压缩oops) 问题帧: j com.emc.evt.reg

部署在tomcat服务器上的my webapp因以下错误而崩溃:

Java运行时环境检测到一个致命错误:

pc=0x00007fe6f9b9e105、pid=7607、tid=140628827879168时的SIGSEGV(0xb)

JRE版本:Java(TM)SE运行时环境(8.0_31-b13)(构建1.8.0_31-b13)
Java虚拟机:Java热点(TM)64位服务器虚拟机(25.31-b07混合模式linux-amd64压缩oops)
问题帧:
j com.emc.evt.reg.db.facade.DataDBAPI.是指从最新ftestsgrouped或untogether___围绕body 554(Lcom/emc/evt/reg/db/facade/DataDBAPI;Ljava/lang/Long;Lorg/aspectj/lang/JoinPoint;)运行的任何其他并发测试

核心转储已写入。默认位置:/var/opt/vmware/vfabric tc server developer/insight instance/bin/core或core.7607(最大大小为1 kB)。要确保完整的内核转储,请在再次启动Java之前尝试“ulimit-c unlimited”

如果您想提交错误报告,请访问:

这是我的代码,这段代码在junit或eclipse中工作得很好,但当部署到web服务器上时,调用此方法时会崩溃

public boolean isThereAnyOtherConcurrentTestRunningOrOnHoldFromTheListOfTestsGroupedToRunTogether(Long runId) {
    Run run = getRunById(runId);
    if (run != null) {
        if (run.getCycle().getMode() != null && run.getCycle().getMode().equalsIgnoreCase(RUN_TYPE_CONCURRENT)) {
            logger.info("CYCLE {} , is not concurrent ....");
            return false;
        }

        //list of tests in the group
        List<Long> groupOfConcurrentTests = getAllTestsCaseIdsForTheCycleAndBoxHavingSameGroupIndex(run.getCycle().getId(), run.getBox().getId(), run.getTestCase().getCatTestId());

        if (groupOfConcurrentTests != null && groupOfConcurrentTests.size() > 1) {
            List<Run> concurrentRuns = runRepository.findByCycleIdAndBoxIdAndTestCaseCatTestIdInOrderByEndDateDesc(run.getCycle().getId(), run.getBox().getId(), groupOfConcurrentTests);

            if (concurrentRuns != null && !concurrentRuns.isEmpty()) {
                //Remove current run from the list, because it should be ignored
                concurrentRuns = concurrentRuns.stream().filter(conRun -> !conRun.getId().equals(run.getId())).collect(Collectors.toList());

                //Remove all box prep failures - ignort those failures
                concurrentRuns = concurrentRuns.stream().filter(conRun -> !conRun.getTestCaseState().equals(RunTestCaseStatus.BOX_PREPARATION_FAILED.name())).collect(Collectors.toList());

                //Is there any other test in group still running ?
                List<Run> testsRunning = concurrentRuns.stream().filter(conRun -> conRun.getTestCaseState().equals(RunTestCaseStatus.TEST_RUNNING.name())).collect(Collectors.toList());
                if (testsRunning != null && !testsRunning.isEmpty()) {
                    logger.info("CYCLE {} ,There are other tests in the group {}/{} still running....", run.getCycle().getCycleName(), run.getBox().getLabel(), run.getTestCase().getCatTestId());
                    return true;
                } else {
                    //If not, Is there any test in group still pending to be triaged.
                    List<Run> testsOnHold = concurrentRuns.stream().filter(conRun -> conRun.getTriageCompletionTime() == null).collect(Collectors.toList());
                    if (testsOnHold != null && !testsOnHold.isEmpty()) {
                        logger.info("CYCLE {} ,There are other tests in the group {}/{}  on HOLD....", run.getCycle().getCycleName(), run.getBox().getLabel(), run.getTestCase().getCatTestId());
                        return true;
                    }

                }
            }
        }
    }

    return false;
}
public boolean在此为ListFTestsGroup或UnnotGether(长运行ID)中的任何其他ConcurrentTestRunning或OnHold{
Run=getRunById(runId);
如果(运行!=null){
if(run.getCycle().getMode()!=null&&run.getCycle().getMode().equalsIgnoreCase(运行类型并发)){
info(“循环{},不是并发的…”);
返回false;
}
//组中的测试列表
List groupOfConcurrentTests=GetAllTestsCaseDSfortheCycleandBoxhavingSameGroupIndex(run.getCycle().getId(),run.getBox().getId(),run.getTestCase().getCatTestId());
if(groupOfConcurrentTests!=null&&groupOfConcurrentTests.size()>1){
列出concurrentRuns=runRepository.FindBycycleIDandBoxId和TestCaseCattestidInOrderByEndDateDesc(run.getCycle().getId(),run.getBox().getId(),groupOfConcurrentTests);
if(concurrentRuns!=null&&!concurrentRuns.isEmpty()){
//从列表中删除当前运行,因为它应该被忽略
concurrentRuns=concurrentRuns.stream().filter(conRun->!conRun.getId().equals(run.getId()).collect(Collectors.toList());
//删除所有箱子准备故障-忽略这些故障
concurrentRuns=concurrentRuns.stream().filter(conRun->!conRun.getTestCaseState().equals(RunTestCaseStatus.BOX_PREPARATION_FAILED.name()).collect(Collectors.toList());
//组中是否还有其他测试仍在运行?
列出testsRunning=concurrentrunts.stream().filter(conRun->conRun.getTestCaseState().equals(RunTestCaseStatus.TEST_RUNNING.name()).collect(Collectors.toList());
if(testsRunning!=null&!testsRunning.isEmpty()){
logger.info(“CYCLE{},组{}/{}中还有其他测试仍在运行…”,run.getCycle().getCycleName(),run.getBox().getLabel(),run.getTestCase().getCatTestId());
返回true;
}否则{
//若否,组中是否有任何测试仍有待分检。
列出testsOnHold=concurrentRuns.stream().filter(conRun->conRun.getTriageCompletionTime()==null).collect(Collectors.toList());
if(testsOnHold!=null&&!testsOnHold.isEmpty()){
logger.info(“CYCLE{},在组{}/{}中还有其他测试处于等待状态…”,run.getCycle().getCycleName(),run.getBox().getLabel(),run.getTestCase().getCatTestId());
返回true;
}
}
}
}
}
返回false;
}

当我将这些流语句中的每一个移动到单独的工作方法时,有什么想法,它是如何产生不同的吗?

A+1让我的一天变得更美好!当我读到方法名时,我笑了,你忘了提到你正在使用AspectJ,崩溃发生在一个“around”建议中,所以这可能是AspectJ中的一个bug。也许@StephenC的滑稽评论毕竟并不奇怪……您使用哪种AspectJ编译器版本进行方面编译,以及哪种AspectJ运行时版本?您使用的是编译时编织还是加载时编织?您是否将其他Java代理或字节码操作框架与AspectJ结合使用?你能在这里或GitHub上提供一个服务吗?顺便说一句,也许您想将您的Java8版本升级到更新的版本。你能出示你的方面代码吗?A+1让我开心一天!当我读到方法名时,我笑了,你忘了提到你正在使用AspectJ,崩溃发生在一个“around”建议中,所以这可能是AspectJ中的一个bug。也许@StephenC的滑稽评论毕竟并不奇怪……您使用哪种AspectJ编译器版本进行方面编译,以及哪种AspectJ运行时版本?您使用的是编译时编织还是加载时编织?您是否将其他Java代理或字节码操作框架与AspectJ结合使用?你能在这里或GitHub上提供一个服务吗?顺便说一句,也许您想将您的Java8版本升级到更新的版本。请出示你的方面代码好吗?