コマンドラインアプリケーションをシェルで実行すると、データベースから読み取った出力が一覧表示されます。そして、メモリの割り当てと解放が行われているチャンクでこの情報を取得します。コマンドを実行すると (出力は約 6000 ページになります)、データが正しく一覧表示されます。しかし (AIX のみ) 'command | 乱数のページを表示した後、チャンクでデータを取得しているアプリケーションでのメモリ割り当てが失敗しています。(同じデータに対して Linux で more を使用した同じコマンドの実装が正常に機能しているため)。AIXで失敗する理由は何ですか? AIX のメモリ割り当て基準について知っている人はいますか? 出力を more コマンドにパイプすると、アプリケーションでメモリ割り当てエラーが発生するのはなぜですか?
質問する
351 次
1 に答える
0
失敗が何であるかは正確には明らかではありません。seg fault が発生していますか、それとも malloc の呼び出しがメモリ不足を示す 0 を返していますか?
障害は AIX ライブラリーにある可能性がありますが、アプリケーション内にある可能性もあります。
ここにアクセスしてください: http://pic.dhe.ibm.com/infocenter/aix/v6r1/index.jsp (またはあなたのレベルに適したページ)
「malloc デバッグ」を検索します。これらの施設は最先端ではありませんが、かなり優れており、完全です。ある程度の時間と注意を払って、メモリ リークを追跡し、メモリが解放された後にメモリを使用することができます (この場合のように聞こえます)。
また、自分のレベルで利用可能な APAR を調べて、似ている一致を探すこともお勧めします。
zero fault http://www.zerofault.com/index.htmlや Purify (IBM が購入したようです) http://www-01.ibm.com/software/awdtools/purify/unixなどのサードパーティ ツールもあります。 /sysreq/を手伝ってください。
幸運を
于 2012-09-15T13:11:19.143 に答える