Oracle Solaris Studio 12.2 リリースの新機能

ツール

dbx

dbx に関する既知の問題と回避策

  1. dbx がプロセスに接続されると、データ収集で問題が発生する

    コレクタライブラリ libcollector.so を事前に読み込まずに実行プロセスに dbx を接続すると、多数のエラーが発生します。

    • どのトレーシングデータも収集できません。同期はトレーシング、ヒープトレーシング、または MPI トレーシングを待機します。トレーシングデータはさまざまなライブラリへの割り込み処理によって収集されます。libcollector.so が事前に読み込まれていない場合、割り込み処理ができなくなります。

    • dbx がプロセスに接続されたあとにシグナルハンドラがインストールされ、そのシグナルハンドラが SIGPROF シグナルおよび SIGEMT シグナルを転送しない場合、プロファイルデータと標本データが失われます。

    • プログラムが非同期入出力ライブラリ libaio.so を使用している場合、libaio.so が SIGPROF を使用して非同期の取り消し操作を行うため、時間ベースのプロファイルデータと標本データは失われます。

    • プログラムがハードウェアカウンタライブラリ libcpc.so を使用している場合、コレクタとプログラムが両方ともこのライブラリを使用するため、ハードウェアカウンタオーバーフロープロファイリング実験が破壊されます。dbx がプロセスに接続されたあとハードウェアカウンタライブラリが読み込まれる場合、ハードウェアカウンタ実験は成功しますが、libcpc ライブラリ関数への参照は libcpc.so の検索ではなく一般的検索によって解決されます。

    • プログラムが setitimer(2) を呼び出す場合、コレクタとプログラムの両方がタイマーを使用しているため、時間ベースのプロファイリング実験に失敗する場合があります。

  2. dbx で Java コードのデバッグ中に障害が発生する場合がある

    dbx シェルの中で、cd コマンドを実行した場合、もしくは CLASSPATH 環境変数または CLASSPATHX 環境変数を設定した場合、dbx でセグメント例外が発生することがあります。

    回避策:

    • 上記の実行もしくは設定を行わない。

    • 上記の実行もしくは設定を行う前に、すべてのウォッチポイント (表示) を削除する。

  3. dbx で Java コードの再デバッグ中に障害が発生する

    Java コードに対して 2 つの debug コマンドを実行することによって、dbx で障害が発生する場合があります。

  4. dbx で、アプリケーションをその構築に使用したものと異なる J2SE 上でデバッグすると、例外がスローされる

    アプリケーションを、そのアプリケーションの構築に使用したバージョンの J2SE テクノロジと異なるリリースの J2SE テクノロジの下でデバッグすると、dbx が例外をスローします。

  5. RTC 前の監視割り当てが原因でRUA エラーが誤ってレポートされていた

    マルチスレッドプログラムを使用する例外的な状況下で、実行時検査 (RTC) がメモリー割り当ての監視を開始する前に割り当てられた内部スレッド関連データへのアクセスを検出したときに、RTC は RUA エラーを誤ってレポートします。このような状況は、通常のスレッド切り替え動作の一部なので、dbx suppress コマンドを使用することにより、このような誤った RUA レポートを安全に無視できます。

dbx の制限事項と非互換性

Oracle Solaris Studio 12.2 dbx には次の制限事項があります。

パフォーマンスアナライザ

Linux で Oracle Message Passing Toolkit 8.2 または 8.2.1 を使用している場合、回避策が必要な場合があります。バージョン 8.1 または 8.2.1c では、または Oracle Solaris Studio コンパイラを使用している場合はすべてのバージョンで、回避策は必要ありません。

Oracle Message Passing Toolkit のバージョンは、/opt/SUNWhpc/HPC8.2.1 などのインストールパスで示されています。または、mpirun —V と入力して表示される次のような出力では、斜体の部分でバージョンが示されています。


mpirun (Open MPI) 1.3.4r22104-ct8.2.1-b09d-r70

アプリケーションを GNU または Intel コンパイラでコンパイルし、Oracle Message Passing Toolkit 8.2 または 8.2.1 を MPI 用に使用している場合、MPI の状態データを取得するには、Oracle Message Passing Toolkit の link コマンドで -WI および --enable-new-dtags オプションを使用する必要があります。これらのオプションを使用すると実行可能ファイルで RPATH に加えて RUNPATH が定義され、MPI 状態ライブラリが LD_LIBRARY_PATH 環境変数で有効になります。

dmake

ここでは、これまでにわかっている dmake ソフトウェアの問題点とその回避策について説明します。

分散モードで dmake を使用した場合に何か問題が発生する場合は、次の点を確認してください。

  1. $HOME 環境変数がアクセス可能なディレクトリに設定されているか

    % ls -la $HOME

  2. ファイル $HOME/.dmakerc が存在するか、このファイルの読み取りが可能か、このファイルの情報が正しいか

    % cat $HOME/.dmakerc

  3. $HOME/.dmakerc ファイルに示されているすべてのホストが稼働しているか (/usr/sbin/ping コマンドを使用して各ホストをチェック)

    % /usr/sbin/ping $HOST

    % /$$HOST には、$HOME/.dmakerc ファイルでホストとして示されているシステムの名前を指定してください。

  4. dmake バイナリのパスが正しいか (dmakerxm、および rxs コマンドを使用)


           % which dmake
           % which rxm
           % which rxs   
    
  5. 各ホスト上のリモートログイン (rsh) はパスワードなしで可能か。また、各リモートログインは妥当な時間内 (2 秒未満) に行えるか。

    % time rsh $HOST uname -a

  6. 各ホスト上にファイル /etc/opt/SPROdmake/dmake.conf が存在するか。このファイル内の情報は正しいか。このファイルが存在しない場合は、dmake はこのシステムでジョブを 1 つだけ分散します。

    % rsh $HOST cat /etc/opt/SPROdmake/dmake.conf

  7. 各ホストの dmake バイナリのパスが正しいか


           % rsh $HOST `which dmake`
           % rsh $HOST `which rxm`
           % rsh $HOST `which rxs`    
    
  8. 各ホストから構築領域を利用できるか (rwx)


           % cd $BUILD
           % rm $HOST.check.tmp
           % echo "Build area is available from host $HOST" > $HOST.check.tmp
           % rsh $HOST cat $BUILD/$HOST.check.tmp       
    

    $BUILD には、構築領域のフルパスを指定してください。

  9. その $HOME は各ホストから使用可能か


           % cd $HOME
           % rm $HOST.check.tmp
           % echo "HOME is available from host $HOST" > $HOST.check.tmp
           % rsh $HOST cat $HOME/$HOST.check.tmp
    

dmake の制限事項

次の要件を満たしていれば、どのマシンも構築サーバーとして使用できます。