3

私は Scala 2.9.2 で書かれた小さなプロジェクトを持っており、単体テストは ScalaTest を使って書かれています。テストのコンパイルと実行に SBT を使用しています。

私のプロジェクトで実行sbt testすると JVM segfault が定期的に発生しますが、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 プログラムを実際に実行することはできませんでした)。

(関連する可能性のある別の問題: テスト ケースの一部には、やなどの括弧を含むタイトルが含まれています)。その結果、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)

これは、より詳細な segfault エラーとコア ダンプが得られることも意味します。

#
# 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]

そしてダンプ

EDIT : scalaVersion を 2.9.1 に変更すると、次のエラーが 1 回発生し、次に上記と同じエラーが発生しました。

Could not load hsdis-amd64.dylib; library not loadable; PrintAssembly is disabled
[thread 25091 also had an error]
4

3 に答える 3

1

JVM segfaulting は通常、システム メモリが不良であることを示しており、特に限界までプッシュされていない場合は特にそうです。

memtestx86 を一晩実行します。

于 2012-12-07T00:28:17.857 に答える
0

scala 1を学ぶために構築しているおもちゃのプロジェクトで同様の問題に遭遇しました。私が見つけた解決策は、build.sbt の scala バージョンをバージョン 2.9.1 に変更することでした。なぜこれが役に立ったのかわかりません。

于 2012-12-12T17:02:35.973 に答える
0

非常によく似たエラーがありました。多くのポーリングとプロディングにより、Array.ofDim で多くの配列を割り当てたループの周りで発生することがわかりました。それを Array.fill に置き換えると、問題が解決したようです。

于 2013-02-27T12:07:49.440 に答える