競合状態の有無の確認

トレース・ポイントを有効にすると、クラッシュ後にダンプが生成されていない状況が発生しているかどうかを確認できます。

このタスクについて

Java™ ランタイム環境のシャットダウン近くでトレース・ポイントを有効にすることによって、クラッシュ後にダンプが生成されない状況を確認します。 これらのトレース・ポイントがクラッシュ状況と重なり合っている場合は、競合状態が発生していることを確認できます。 protectedDestroyJavaVM 内のトレース・ポイントは、メイン・スレッドの復帰前にトリガーされる最後のトレース・ポイントです。

手順

  1. トレース・ポイントのトレース・ポイント ID の決定」の説明に従って、 J9TraceFormat.dat ファイル内の protectedDestroyJavaVM 関数トレース・ポイントを見つけます。
  2. これらのトレース・ポイント ID が得られたら、問題のシナリオを再実行して、これらのトレース・ポイントをコンソールに送出します。
    この結果として、次のような出力が得られます。
    java -Xtrace:print=tpnid{j9vm.381-394} MyApp
    
    11:10:09.421*0x42cc1a00            j9vm.385      > protectedDestroyJavaVM
    11:10:09.421 0x42cc1a00            j9vm.386      - protectedDestroyJavaVM waiting for Java threads to 
    stop
    11:10:09.421 0x42cc1a00            j9vm.387      - protectedDestoryJavaVM all Java threads have stopped
    11:10:09.421 0x42cc1a00            j9vm.388      - protectedDestroyJavaVM protectedDestroyJavaVM 
    vmCleanup complete
    11:10:09.421 0x42cc1a00            j9vm.389      - protectedDestroyJavaVM VM Shutting Down Hook Fired
    Unhandled exception
    Type=Segmentation error vmState=0x00000000
    
    J9Generic_Signal_Number=00000004 ExceptionCode=c0000005 ExceptionAddress=430514BE ContextFlags=0001003f
    Handler1=7FEE9C40 Handler2=7FEC98C0 InaccessibleAddress=00000000
    EDI=000A70A0 ESI=432235D8 EAX=00000000 EBX=00192684
    ECX=00000001 EDX=4368FECC
    EIP=430514BE ESP=4368FED4 EBP=4368FED8 EFLAGS=00010246
    Module=failing_module.dll
    Module_base_address=43050000 Offset_in_DLL=000014be
    11:10:09.421 0x42cc1a00            j9vm.390      - Target=2_40_20081203_026494_lHdSMr (Windows XP 5.1 
    build 2600 Service Pack 2)
    protectedDestroyJavaVM GC HeapManagement ShutdownCPU=x86 (2 logical CPUs) (0x7fe6b000 RAM)
    
    11:10:09.421 0x42cc1a00            j9vm.391      - protectedDestroyJavaVM vmShutdown returned
    11:10:09.421 0x42cc1a00            j9vm.393      - protectedDestroyJavaVM terminateRemainingThreads failed
    Unhandled exception メッセージは、 protectedDestroyJavaVM 関数の最初のトレース・ポイントの後に出力されます。 この出力は、Java ランタイム環境の存続期間中に非常に遅くクラッシュが発生したこと、およびプロセスが終了する前にダンプ・ファイルを生成するための十分な時間が残っていることを示しています。

次のタスク

競合状態が発生したことが確認された場合でも、システム・ダンプ・ファイルを得られる可能性があります。 詳しくは、 競合状態でのシステム・ダンプ・ファイルの取得を参照してください。