0

Apache Ignite と Java に関する興味深い問題を報告してきた開発者がいます。これは と にHPUX 11.31 IA platform with Apache-Ignite version 1.3.0-incubatingありますHP-UX Java build is 1.7.0.13-jinteg_2015_05_22_03_42-b00HPUX以下のエラーは私に渡されたものですが、Apache-Ignite がサポートまたはテストされていることがわかりません。BUS_ADRALNエラーは常に C++ 検索ヒットになるようです。とにかく、私たちの問題が何であるかに光を当てることができれば、それについて何かを見つけようとして2日間費やしたので、それは大歓迎です.

エラー

"siginfo:si_signo=SIGBUS: si_errno=0, si_code=1 (BUS_ADRALN), si_addr=1fffffffa98e8fe9"

readyQueueこれは、Ignite でキャッシュを作成するための呼び出しの後にスローされます。この致命的な例外は、キャッシュのインストール中にメモリにアクセスしようとすると、「無効なアドレス アライメント」が発生したことを意味します。

開発者は、参考になるかどうかのログもいくつか送ってくれました。

同じ問題に対する Ignite の Jira のバグが作成されました。このバグには、エラーの原因となったセットアップとスタックに関する詳細情報が含まれています。

https://issues.apache.org/jira/browse/IGNITE-1493

4

1 に答える 1

0

クリス、

これは非常に興味深いですね。マーシャリング中にクラスを書き込む場合、Ignite は最初に内部バイト フラグを書き込み、その後に他のデータを書き込みます。したがって、チケットに記載されているクラッシュ時のオフセット 17 は理にかなっています: 16 + 1 (私たちのバイト)。

ここでいくつかの仮定があります: 1) 配列の範囲外です。2) バイト配列要素の長さが 1 ではありません。 3) 他の何か (アラインメントの問題? JMV のバグ?)。

可能であれば、次のことを行ってください: 1) クラッシュの瞬間に GridUnsafeDataOutput.bytes 配列の長さを提供してください。クラッシュ レポートから、スタックに長さ 4096 の配列があることがわかります。おそらくこれは GridUnsafeDataOutput.bytes ですが、100% 確実である必要があります。2) 影響を受けるマシンで次のプログラムを実行し、出力を提供します。

public static void main(String[] args) {
    sun.misc.Unsafe unsafe = org.apache.ignite.internal.util.GridUnsafe.unsafe();

    System.out.println(unsafe.arrayBaseOffset(byte[].class));
    System.out.println(unsafe.arrayIndexScale(byte[].class));
}

このようにして、ランタイム JVM 配列パラメーターを知ることができます。

于 2015-09-16T10:56:13.860 に答える