2.0.0-1.11 (2022年11月9日)

スタンドアロン・ユーザー・スペース実装の11番目のエラータ。

これは、機能が制限されたプレリリースです。

新機能:

  • args[]組込み変数が実装されました。

  • カーネル領域アドレスからのスカラーのロードをサポートします。

  • copyin()、copyinto()およびcopyinstr()サブルーチンが実装されました。

  • カーネルのロックされたメモリー制限を調整するために、-xlockmemオプションが追加されました。BPFマップまたはプログラムのロードが、ロックされたメモリー制限が低すぎる可能性があることを示して失敗した場合、この新しいオプションの使用を提案するエラー・メッセージが出力されます。

  • キー(タプル)によって索引付けされた集計のサポートが追加されました。

  • 集計変数に逆アセンブラ注釈が追加されました。

  • setopt()アクションが実装されました。現在サポートされているオプション数は制限されています。

  • pidプロバイダは、コンパイラによって生成された内部関数名を無視するように変更されました。

  • USDTプロバイダが基本的なユースケース用に実装されました。プローブ・スクリプトで(pidによって)明示的に参照される実行可能ファイルに対して、通常の有効でないプローブがサポートされています。引数マッピングとワイルドカード・プローブの指定はまだサポートされていません。

新しい依存関係:

  • USDTプロバイダのサポートは、libfuseバージョン2または3の可用性に依存します。ビルド時に、使用可能な場合、libfuse 3にプリファレンスが指定されます。ビルド・プロセスでは、makeコマンドに'libfuse2=yes'を渡すことでlibfuse 2に対する強制的なビルドをサポートしています。

アップグレード:

  • USDT実装は、常に実行されるデーモン(dtprobed)に依存します。対応するsystemd dtprobed.serviceは、非レスキュー・シナリオでは比較的早期に起動したときに自動的に起動されますが、DTraceが最初にインストールされたとき、またはデーモンが存在する前のバージョン(2.0.0-1.11より前)からアップグレードされた場合は、その時点より前にすでに実行されていたプログラム内のプローブは、そのようなプログラムが再起動されるまで、DTraceの使用可能なプローブのリストに表示されません。

バグ修正:

  • sdt-providerプローブの引数は、tracepointデータを使用して正しく設定されるようになりました。

  • dtrace:::、fbt:::return、pid:::およびsyscall:::returnプローブの引数処理がクリーン・アップされました。

  • dtraceユーティリティは、--の後に複数の引数を処理できるようになりました。

  • -xcpp、-xctfpathおよび-xverboseオプションが修正されました。

  • タイプキャストと内部整数ストレージのバグが修正されました。

  • rtld_globalのlibproc検索がglibcの変更に対して改善されました。

  • procfs.dでは、カーネルとの競合を解決するために、projid_tの名前が変更されました。

  • パーサーでは、typedefのスライスのサポートが追加されました。

  • 非DTraceポインタに関連する文字列比較が修正されました。

  • execname組込み変数の値は、DTrace以外のポインタとして正しく認識されるようになりました。

内部変更:

  • コード・ジェネレータは、ランタイム・カーネル間のBPFヘルパー関数の可用性の差異に適応できます。

  • BPFマップを初期化するためのゼロの読取り専用ブロックが統合されました。

  • タプルは、その値ではなくデータ型に基づいて、予測可能なオフセットにコンポーネント値を使用して構成されるようになりました。

  • BPFマップ内のキーを反復するBPF dt_bpf_map_next_key()ヘルパーのサポートが追加されました。

  • 集計データの複数コピー(DT_AGG_NUM_COPIES)のサポートが必要なくなり、削除されました。

  • マップのマップ(配列またはハッシュ)の作成のサポートが追加されました。内部マップの参照および更新を実行する関数も含まれています。

  • 集約データのストレージが、CPU IDによって索引付けされたBPFハッシュ・マップの配列を使用するように変更されました。その結果、各CPUの集約データは独自のBPFハッシュ・マップに格納され、他のCPUのデータに影響を与えることなく変更できます。

  • BPFプログラムのロード、マップ作成、CTF、およびdlibロードのエラー・レポートがクリーン・アップされました。

  • 一部のコードがリファクタリングされ、廃止されたコードが削除されました。

テストスイートの変更:

  • テスト・オプションで-eのサポートを追加します。

  • 失敗すると予想されるテストで、xfailメッセージが改善されました。

  • より厳格な@@nosortチェックのサポートが追加されました。

  • 「不安定な」テストの問題は、XFAILとして報告されます。

  • 何度も(過去にtick-nを使用して)起動するテストは、より堅牢です。

  • 新機能の実装に対応し、いくつかのバグ修正を考慮して、様々なテストがXFAILからPASSステータスに移動されました。

  • 様々なテストが改善されました。

既知の問題点:

  • 一部のaarch64システムでは、copyin()、copyinstr()、およびcopyinto()サブルーチンが、カーネル・レベルのBPF実装の制限により障害を報告することがあります。この問題は、特定のCPU機能に関連しているようです。