2.0.2-1 (2024年12月6日)

新機能:

  • カーネル・バージョン6.10以降のトランスレータが追加され、(少なくとも) 6.12カーネルまでトランスレータがサポートされます。

  • fexitプローブに基づくFBT returnプローブで、戻り値が報告されるようになりました。

  • print()アクションは、その引数の型情報が拡張されました。

  • トレースの開始後に検出されたUSDTプローブ(プローブ指定または-Zオプションでのワイルドカードの使用による)がサポートされるようになりました。

  • USDTプローブの引数型のサポートが実装されました(変換された型および引数マッピングを含む)。

  • dtprobedのマニュアル・ページを追加しました。

  • rawfbtプロバイダが実装されました。これは、kprobesを通じて利用可能なすべての関数のトレースに使用できる新しいプロバイダです。これには、コンパイラの最適化の結果である<func>.<suffix>関数名が含まれます。

バグ修正:

  • BPFアセンブラ・ソースは「通常」のアセンブラ構文で記述されるため、-masm=normalオプションがBPF gcc呼出しに渡されます。

  • bpf_helper_defs.hの解析は、バージョンの変更に対してより寛容になりました。

  • カーネル・モジュールでBPFからCTFへの変換が機能します。

  • DTraceは、void関数の戻り値の取得を試行しなくなりました。

  • stddev()集計関数の桁上がり計算が修正されました。

  • clear()アクションでは、呼び出した集計だけがクリアされるようになりました。

  • ERRORプローブの起動により、実行によってエラーがトリガーされたプローブのプローブ引数が破損していました。

  • ERRORプローブの起動では、常に正しいプローブIDが報告されるとはかぎりません。

  • ERRORプローブ・プログラムの再配置が早すぎたため、一部の値が正しくありませんでした。

  • バッファ・サイズの計算が修正されました。

  • キャストではlvalue immutableがレンダリングされなくなりました。

  • 1つのELFオブジェクト内で複数のUSDTプロバイダが機能するようになりました。

  • 自身の捕捉のサポートが改善されました。

  • umod/usym/uaddrアクションが改善されました。

  • 様々なメモリー・リークが解決されました。

ユーザーに認識される変更:

  • USDTプローブをサポートするヘッダー・ファイル(sdt.hなど)が/usr/lib64/dtrace/include/sysに移動されました。pkg-configのサポートが追加され、ライブラリおよびヘッダー・ファイルのインストール・パスを取得するための便利な方法が提供されています。

  • root権限を必要とするモードで実行する場合に、DTraceで適切なエラー・メッセージが表示されるようになりました。

  • dtraceおよびdtprobedのマニュアル・ページでより適切なマークアップが使用されるように更新されました。

内部変更:

  • @[mod()]や@[sym()]などのキーが、可能なかぎり統合されるようになりました。

  • トレース・データの消費では、反復ごとに1つのレコード・セットのみが処理されるようになり、不足の問題が回避されます。

  • 不要コードの様々なパーツが取り除かれます。

  • プローブと句の関連付けが、文レベルで動作するようになりました。これは、トレース・プログラムの構造をより正確に反映し、トレース開始後のプローブの検出をサポートするために必要です。

  • EPIDの概念は非推奨になりました。「epid」ビルトイン変数の値は、下位互換性のために引き続き生成されます。この値にはセマンティックな意味はなく、特定のプローブのインスタンスごとに一意であるという要件を満たしています。

  • BPFトレース・プログラムで、トレースがすでに開始された後に、検出されたプローブで使用できる句を含めることができるようになりました。

  • pidプローブ、USDTプローブ、およびis-enabled USDTプローブの内部実装は、基礎となるuprobeの単一のトランポリンに統合(および簡素化)されています。

  • DTrace (特にdtprobed)はlibsystemdに依存しなくなりました。引き続き、そのアクティビティ・ステータスをsystemdに報告できます。

テストスイートの変更:

  • 多くのテスト・ケースが、オプション機能に依存せず、より予測可能な動作になるように調整されました。

  • テストスイート全体でのbashとgawkの使用が、より一貫性を持つようになりました。

ビルド時:

  • 配布で柔軟なファイル・システム・レイアウトを使用するように、すべてのインストール・パスを構成できます。

  • valgrindのサポートはオプションになりました。

既知の問題点:

  • (50,000を超える)大量のプローブを有効にすると、BPFプログラムを保持するために大量のメモリーが消費され、カーネル内でOOMキラーがトリガーされる可能性があります。