我有一个用 Scala 2.9.2 编写的小项目,其中包含使用 ScalaTest 编写的单元测试。我使用 SBT 来编译和运行我的测试。
在我的项目上运行 sbt test
会定期导致 JVM 段错误,但仅从 SBT 编译和运行我的项目就可以正常工作。这是确切的错误消息:
Invalid memory access of location 0x8 rip=0x10959f3c9
[1] 11925 segmentation fault sbt
我无法在任何地方找到核心转储,但如果可以的话,我很乐意提供。
运行 java -version
结果如下:
java version "1.6.0_37"
Java(TM) SE Runtime Environment (build 1.6.0_37-b06-434-11M3909)
Java HotSpot(TM) 64-Bit Server VM (build 20.12-b01-434, mixed mode)
但我还安装了 Java 7(尽管我从来没有能够用它实际运行 Java 程序,afaik)。
另一个可能相关的问题:我的一些测试用例包含包含括号的标题,例如 (
和 )
。 SBT 或 ScalaTest(不确定)将因此在输出中间插入方括号。例如,名称为 (..)..(..)
的测试用例可能突然看起来像 (..[..](..)
。
非常感谢任何解决这些问题的帮助:-)
编辑:我安装了 Java 7 JDK,所以现在 java -version
显示正确的内容:
java version "1.7.0_07"
Java(TM) SE Runtime Environment (build 1.7.0_07-b10)
Java HotSpot(TM) 64-Bit Server VM (build 23.3-b01, mixed mode)
这也意味着我现在得到了更详细的段错误和核心转储:
#
# A fatal error has been detected by the Java Runtime Environment:
#
# SIGSEGV (0xb) at pc=0x000000010a71a3e3, pid=16830, tid=19459
#
# JRE version: 7.0_07-b10
# Java VM: Java HotSpot(TM) 64-Bit Server VM (23.3-b01 mixed mode bsd-amd64 compressed oops)
# Problematic frame:
# V [libjvm.dylib+0x3cd3e3]
和the dump .
编辑:将 scalaVersion 更改为 2.9.1 一次出现以下错误,然后出现与上述相同的错误:
Could not load hsdis-amd64.dylib; library not loadable; PrintAssembly is disabled
[thread 25091 also had an error]
请您参考如下方法:
JVM 段错误通常表示系统内存有问题,尤其是在未被推到极限时。
整夜运行 memtestx86。