1

Linux の aio_write と aio_read を使用するテスト ユーティリティがあります。このテスト ユーティリティは、静的ライブラリをラップしてテストします。このライブラリはマルチスレッドのブラック ボックスです。

今まで、それはうまくいきました。しかし、今回はこのブラックボックスに大きな変更を加えたため、テスト ユーティリティは最初の IO をコミットするとすぐに失敗します。この IO は errno 22 == EINVAL で戻ります。

aio_write のマニュアル ページに基づくと、このエラーは、次のフィールドのいずれかが無効な場合に発行されます --> aio_offset、aio_reqprio、aio_nbytesgdb 内で実行し、構造体 aiocb *入力パラメーター内の他のすべての値と同様に、それらの値をテストしました。私の結論は、入力パラメーターはすべて有効であるということです。

ブラックボックス内でスレッドが機能する方法に何か変化があったのではないかと思います。これがこの問題の原因であると思われます(他の説明が見つかりません)。

私が実際に理解しようとしているのは、どのシナリオで aio_write() が EINVAL エラー コードを返すのかということです。

明確にするために、ブラックボックスを古いバージョンに置き換えると、同じテストユーティリティを使用して正常に動作します.... (入力引数が悪いバージョンの入力引数に一致することがわかったので、ここでも入力引数をテストしました)。

4

1 に答える 1