2011-07-03 12 views
16

私は年間Javaプロジェクトを行っています。私のコードは何ヶ月もうまくいきました。数日前、私はMac(Snow Leopard 10.6.8)上でJava SDKを最新のバージョン1.6.0_26にアップグレードしました。アップグレード後、非常に奇妙なことが起こります。私はクラスのいくつかを実行すると、私はこのエラーを取得する:Javaの場所のメモリアクセスが無効です

場所0x202 RIPの無効なメモリアクセス= 0x202

しかし、私は彼らが働く-Xint(解釈)、ゆっくりではあるが仕事でそれらを実行する場合良い。私はビット単位の演算子(ゲームのオセロのためのビットボード)を使用するクラスでこの問題が発生します。私はここにコードを置くことはできません。なぜなら、エラー、例外、または類似のものは得られないからです。私はちょうどその迷惑なメッセージを取得します。

-Xintなしでコードが実行されないのは正常ですが、正常に動作しますか?私は何をすべきか? JVMはそのようクラッシュを開始すると、事前

+1

非常に奇妙な。これは例外として表示されますか?コンパイルエラー?他に何か?エラーメッセージにテキストがありますか?それは行番号を示していますか?プログラムは継続しているのですか、それとも爆発しますか? -Xintなしでコードを実行するたびに発生しますか?あなたのGUIにSwingを使用していますか?並行性の問題の可能性はありますか? –

+2

メッセージとして例外として表示されません。それはうまくコンパイルされます。これは唯一のメッセージですが、別のメモリアドレスが表示されることもありますが、同じメッセージです。プログラムの実行が停止します。私はSwingを使用していませんが、スレッドを使用しています。同時実行性の問題になる可能性がありますが、インタプリタとして実行すると動作しないのはなぜですか?それは迷惑な部分です。 –

+3

VMのバグのようです。プログラムを切り詰めて問題を切り分けてください(重要ではないと思われるものを取り除きます - それが再び起こらない場合は元に戻し、別の部分で試してみてください)。その後、あなたのJREを作成した人にバグを提出してください。 –

答えて

4

おかげで、それが何かは、JVMの実行モデルが壊れたサインです。

アプリケーションにネイティブコードが含まれていますか?ネイティブコードコンポーネントを持つサードパーティのライブラリを使用していますか?どちらも真でない場合、これはJVMのAppleポートにあるバグである可能性があります。これは、JITコンパイラのバグ、またはJVMネイティブコードライブラリのバグである可能性があります。

このようなバグについてはどうすればよいですか?

あまりありません。

  • 問題を示す小さなテストケースがあるまで、徐々にビットを切り捨ててアプリケーションを減らしてください。
  • テストケースに基づいて、問題を回避する経験的な方法があるかどうかを確認してください。
  • テストケースを使用してAppleにバグレポートを送信してください。
  • +0

    いいえ、私のアプリケーションにはネイティブコードは含まれていません。私はサードパーティライブラリを使用していません。私はあなたの提案に従うでしょう、私がバグを見つけるのにどれくらいの時間がかかるか見てみましょう。ありがとう! –

    0

    また、the event dispatch threadにGUIを構築しており、他のスレッドからGUIコンポーネントを更新していないことも確認してください。

    関連するエラーは非常に再現するのが難しいですが、変更されたタイミングに関連する変更は示唆的です。

    4

    私はこのような状況に遭遇しました。それは、JSONオブジェクトを循環参照でシリアル化しているコードに関連していることが判明しました。私はサイクルを削除し、エラーは消え去った。これは、Mac OSX上の新しいJVMで別々に処理されるメモリオーバーフローエラーに関連すると考えられます。この場合、私はMac OSX 10.7を実行していました。

    は完全を期すために、私が受け取ったエラーは以下の通りであった。

    Invalid access of stack red zone 0x10e586d30 rip=0x10daabba6 
    Bus error: 10 
    

    そして:

    Invalid memory access of location 0x10b655890 rip=0x10a8baba6 
    Segmentation fault: 11 
    
    +0

    私はjacksonを使って同様の問題を抱えていました。 @JsonIgnoreを使用して私の問題を解決しました – Yevgeniy

    0

    /etc/hostsが空であるかどうかを確認し、それがこれらの構成が含まれていることを確認してください:

    127.0.0.1  localhost 
    255.255.255.255 broadcasthost 
    ::1    localhost 
    fe80::1%lo0  localhost 
    
    関連する問題