問題タブ [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.
c++ - Qt メモリ エラー - valgrind トレース分析のヘルプが必要
この潜在的に問題のあるメモリ アクセス パターンをデバッグする方法について、何か理論はありますか? 私が経験している特定の heisen バグに関連している可能性があると思いますが、それを特定することはできません。
これは、valgrind の下で、デバッグ ビルドの実行のスニペットです--track-origins=yes
。--leak-check=full
Qt の Gui lib を悪用して、次のように表示される可能性はありますか?
c++ - Valgrindが新しいスレッドごとに組み込みgdbserverを開始しないようにするにはどうすればよいですか?
他の何千ものスレッドを生成するプログラムでvalgrindmemcheckを実行しています。
他のスレッドはエラーを生成しません、そして私はそれらに何が起こるかを気にしません。
ただし、Valgrindは、新しいスレッドが生成されるたびに/tmpで名前付きパイプを開くことを要求します。これは無駄であるだけでなく、実際にvalgrindを壊します。valgrindがそれ自体をクリーンアップしない場合があり、同じpidを持つ将来の子(後でアクティブになる)は、valgrindが正しい名前(既に存在する)のパイプを作成できないため、スポーンに失敗します。
Valgrindがこれらすべてのパイプを作成するのを防ぐにはどうすればよいですか!?!
編集:私がすでに試したフラグ:
--child-silent-after-fork = yes
そして私がすでに除外したこと:
--track-children = no(デフォルト値はno)。
valgrind - 多くの同時 valgrind プロセスを実行すると、mkstemp が失敗する原因は何ですか?
valgrind を使用していくつかのソフトウェアのテストを行っています。理想的には、一度に valgrind の 20 以上のインスタンスを開きたいと考えています。ただし、16 を超えるインスタンスを並行して実行すると、次のようなメッセージが表示され始めます。
一部のプロセス (おそらくそれらの 1/3) は、代わりにエラーで終了します。
これらの呼び出しを実行している間、/tmp にファイルは作成されませんが、使用しているユーザー アカウントには /tmp に対する読み取り、書き込み、および実行のアクセス許可があります。
このバグに関する情報をオンラインで見つけることはできませんが、おそらくどこかでそれについて何か知っているでしょうか?
編集: いくつかのさらなる実験では、実際には一度に実行できるプロセスは 5 つまでであることが示唆されています。
c - 無効な書き込みサイズ:memset
valgrindは、memsetでのサイズ1の無効な書き込みを示しています( "###"-マークされた行)。ここで何が悪いのかを理解するのを手伝ってください。valgrind出力の「アドレス0x0はスタックされておらず、mallocされておらず、解放されていません」に続いて、strtokが責任を負うことを除外できます。それはおそらく明らかです...
c - valgrindの出力を分析します: "invalid free()"
valgrindが(愚かな)認証モジュールでこの奇妙なエラーを見つけました。これにより、ヒープの割り当てが発生します。
私が理解していることから、彼は私が109-110-111行で3つの無効なfree()を実行すると言っています。エラーは、実際に割り当てられているよりも多くのスペースを解放しようとしていることですが、割り当てを解除するスペースの量を決定できません。また、なぜそれが108行目(これもfree())を参照しているのかわかりません。
これはドキュメントからのものです(無効は無料です):
Memcheckは、malloc / newを使用してプログラムによって割り当てられたブロックを追跡するため、free/deleteの引数が正当であるかどうかを正確に知ることができます。ここで、このテストプログラムは同じブロックを2回解放しました。不正な読み取り/書き込みエラーと同様に、Memcheckは解放されたアドレスを理解しようとします。ここでのように、アドレスが以前に解放されたアドレスである場合は、同じブロックの重複した解放を簡単に見つけることができると言われます。
ヒープブロックの先頭を指していないポインタを解放しようとすると、このメッセージも表示されます。
私はこれらのケースの1つでどうなるかを本当に想像することはできません。
ヘッダーファイル:
linux - プログラムの状態を Valgrind/DrMemory に記録して復元することは可能ですか?
起動時に大量のデータをロードするプログラムがあります。これにはかなり長い時間がかかるため、Valgrind( memcheck
) / DrMemoryの実行時にオーバーヘッドが発生します。そのため、異なる引数でプログラムを数回呼び出すと、かなりの時間がかかります
私の考えはfork()
、データ読み込みフェーズの直後に使用して、子を Valgrind/DrMemory に渡すことです。読み込みフェーズが Valgrind/DrMemory の下で実行される場合でも、オーバーヘッドは 1 回だけ発生し、すべてのfork
ed 子プロセスはそこからプリロードされたデータを使用できるはずです。
プログラムの状態を記録して汚染されていないと宣言し、後で Valgrind ( memcheck
) または DrMemory でその状態を復元することは可能ですか?
注:私は unixoid プラットフォームにのみ関心があります。Linux だけに限定しても問題ありません。
linux - Valgrind は明らかなエラーを検出しません
私は、Zed Shaw の優れたLearn C the Hard Wayから C を学んでいます。
Debian Sid をカーネル バージョン 3.9.0-vanillaice amd64 (コンパイル済み) で glibc 2.17 (Debian のリポジトリからインストール) で実行しています。
私は本の演習 4 を行っています。
これが私のコードです:
Valgrind は次のようなものを生成する必要があります。
私はエラーについて何も言及していません: