問題タブ [memcheck]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
691 参照

c - Valgrind がメモリ領域のオーバーラップに関するエラーを表示しない

Valgrind (または具体的にはMemcheck )を使用してあらゆる種類の動的メモリ関連のエラーをテストする過程で、意図的にメモリのオーバーラップを作成している状況に遭遇しましたが、Valgrind/memcheck からのエラー レポートはありません。 . 以下は使用したコードです。私が欠けているものを共有してください。

コンパイル

サンプルの実行と出力

メモリ領域のオーバーラップに関する情報は実際にはありません。Valgrind のマニュアルによると、次のように表示されているはずです。

私の場合、欠けている部分は何ですか?

システムインフォメーション:

0 投票する
1 に答える
69 参照

c - 初期化されていない値 - if_nan 関数

次の関数を呼び出すコードがあります

to findif_nan()が計算で見つかりました。Valgrind で memcheck を実行すると、次のエラーが表示されます。

ここで初期化する値がわかりません。このエラーを回避する方法を提案してください。ありがとうございました

0 投票する
0 に答える
1960 参照

memory-management - Valgrind - プログラムがクラッシュしています

私は初めてですvalgrind。小さなプログラムをチェックしようとすると、次のエラーが発生します。

この種のエラーは、誤ったメモリ アクセスが原因であることがわかります。ライブラリは、そのメモリ空間にマップされていないメモリ領域にアクセスしようとしています。

valgrindプログラム全体をチェックせずに停止しましたか? それとも、私のアプリは問題ないということですか? 既存の問題を解決するにはどうすればよいですか?

0 投票する
1 に答える
478 参照

c++ - OOM 時にクラッシュしないメモリ リーク、または massif/valgrind に表示されるメモリ リーク

私は無期限に成長する内部 C++ アプリケーションを持っています。そのため、RSS が特定のピーク サイズ (2.0G) に達すると実際にアプリケーションを強制終了するロジックを実装して、順序の類似性を維持する必要がありました。ただし、これはいくつかの奇妙な動作を示しています。

まず、Valgrind と memcheck を使用してアプリケーションを実行し、ランダムなメモリ リークをあちこちで修正しました。ただし、これらのメモリ リークの程度は、数十メガバイト単位で測定されました。これは理にかなっています。実際のメモリ リークはなく、アプリケーション側のメモリ管理が不十分である可能性があるからです。

次に、Valgrind と Massif を使用して、メモリがどこに向かっているのかを確認しました。ピークのスナップショットは 161M で、RSS フィールドを使用して確認できる 1.9G+ のピークにはほど遠いものです。最大の消費は、std::string であると予想される場所ですが、これは異常ではありません。

最後に、これが最も不可解です。このメモリ リークに気付く前に、AWS でこのサービスを実際にテストしていたのですが、楽しみのために、CC2.8XL マシンでワーカーの数を 44 に設定しました。労働者。これは 60.5G の RAM で、スワップはありません。1 か月早送りします。私はホストを見に行きます-そして、低いと見よ、それは RAM で限界に達しています--しかし! プロセスはまだ正常に実行されており、メモリ使用量のさまざまな段階でスタックしています。800M から 1.9G までほぼ均等に分散されています。ときどきdmesg、メモリを割り当てることができないという Xen エラーが出力されますが、それ以外は、プロセスが終了することはなく、アクティブに処理を続けます (つまり、「スタック」していません)。

私がここに欠けているものはありますか?基本的には機能していますが、私の人生では、その理由がわかりません。次に何を探すべきかについて、何をお勧めしますか? それを理解するのに役立つツールはありますか?

0 投票する
1 に答える
425 参照

java - valgrind が execvp で作成された Java 子プロセスをトレースしないようにします

私はCプログラムを持っており、その中で次のようにexecvp呼び出しますjava:

path_to_java="/usr/java/latest/jre/bin/java"とI'm runningへargsのリンクが含まれています。jar私はそれが機能していることを知っています.C部分をプロファイリングしたいだけです.

java他のすべての子プロセスをプロファイリングしながら、子プロセスのプロファイリングを回避するために、このコマンドで memcheck を実行しようとしています:

ただし、他の問題の中でも特に、 に次のように表示されますLOGFILE

私も試し--trace-children-skip=javaてみましたが、「一致なし」エラーは発生しませんでしたが、サブプロセスvalgrindへのステップインを完全に防ぐことができませんでしたjava

私がこれを行っている理由はjava、特にvalgrindJVM がうまく動作しないため、サブプロセスのプロファイリングを気にしないためです。例えば:

ああ。私は何を間違っていますか?

0 投票する
4 に答える
7850 参照

c++ - サイズ 8 の無効な読み取り、サイズ 8 の無効な書き込み (Valgrind)

今晩数時間、次のコードをいじっていましたが、頭を悩ませています。

関数を使用して標準入力から配列を設定すると、「サイズ 8 の無効な書き込み」と「サイズ 8 の無効な読み取り」が発生し続けます。

助けていただければ幸いです...スタックオーバーフローにこれらのエラーがたくさんあることは知っていますが、それらのほとんどは状況に固有のものです。

Memcheck からのエラーは次のとおりです。

問題を次の 2 行に絞り込みました。書き込みで 10 個のエラー、読み取りで 10 個のエラーです。

どんな洞察もいただければ幸いです!