問題タブ [sanitizer]

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 投票する
3 に答える
718 参照

c++ - 初期化されていない変数のそのような使用を報告できるツールは何ですか?

次のプログラムを検討してください

明らかに、未定義の動作があり、一般的にデバッグ ツールを使用してキャッチできるようにしたいと考えています。cppcheck (オンラインデモを使用) と 、およびg++ -fsanitize=addressg++ -fsanitize=undefined試しましvalgrindた。x.dしかし、これらのツールは、読み取り時に初期化されていないことを報告しません。

この種の未定義の動作 (できれば Linux で実行) をキャッチするには、どのツールを使用できますか?

0 投票する
2 に答える
427 参照

c++ - プロジェクトのサンプル プロジェクトからメモリ サニタイズの結果を再現できません

fedora rpm スペックファイルを使用してソースからビルドされた centos7、clang-3.6.1 からまったく同じ結果が得られます。Ubuntu 14.04、clang-3.4

https://github.com/google/sanitizers/wiki/MemorySanitizerLibcxxHowToの wiki の手順 を可能な限り忠実に使用します。このページの最終更新は 6 か月前です。

googlest リビジョン 613 はまだ tr1 を使用しています

googletest を tip (746) に更新すると、次の警告が表示されてコンパイルされます

そして、そのページからの些細な提案されたケースは、msan によって取り上げられませんでした

非常に大きなmmapを使用しているため、valgrind barfsが発生するプロジェクトがあるため、メモリのサニタイズが非常に役立ちます。私が何か間違ったことをしている場合。どうやら googletest がエラーを抑制しているようです。Google テストを削除し、テスト ケースを

if(foo[4] == 'z') std::cout << "z です" << std::endl;

期待どおりに明らかなエラーの報告をトリガーします

単体テスト ライブラリでメモリ サニタイズを使用することは可能ですか?

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

redis - jemalloc を使用した asan の下の Redis

Redis 3.0.6 を 4 つの異なる方法でコンパイルしています。

  1. ジェマロック
  2. libc malloc
  3. アサン + ジェマロック ( -fsanitize=address -fno-omit-frame-pointer)
  4. asan + libc malloc

次にredis-bench、これらすべてのバイナリで標準を実行します。私が理解していないのは、シナリオ3のパフォーマンスがシナリオに非常に近いということ1です。

誰かが私にこれがどのように可能であるかを説明できますか? jemallocまたは関連するものをサポートしていないというマニュアルはありませんでした。

0 投票する
2 に答える
1635 参照

clang - 未定義の動作サニタイザー抑制ファイル: 抑制の解析に失敗しました

-fsanitize=undefinedを使用して clang 3.6 でアプリケーションをコンパイルした後、いくつかのエラーを無視するために抑制ファイルを使用しながら、インストルメント化されたプログラムを起動しようとしています。

抑制ファイル ubsan.supp には以下が含まれます。

これにより、次のエラー メッセージが表示されます。

gcc 4.9 ビルドでも同じことが起こります。私が見つけることができる唯一のドキュメントはhttp://clang.llvm.org/docs/UndefinedBehaviorSanitizer.htmlです。これは clang 3.9 用ですが、3.6 を使用しています (ubsan のドキュメントは含まれていません)。

誰もがclang 3.6で動作するubsan抑制ファイルの実例を提供できますか?

編集: ubsan のソース コードを参照すると、有効な抑制タイプは "vptr_check" だけであることがわかりました。ただし、どのバージョンを見ていたかはわかりません。誰もがclang 3.9でより多くの抑制タイプが利用可能であることを確認できますか?

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

c++ - std::vector> push_back は heap-buffer-overflow を与える

入力を読み取る次のコードを使用して、hackerrank の偶数ツリー タスクstd::cinを解決しようとしています (カスタム文字列データに置き換えて、入力とプログラム コードを 1 か所にまとめます)。

2 番目の数値はエッジの数 (後続の数値のペア) になるため、必要なベクトル内の要素の数を予測できます。

このコードにより、次のサニタイザー エラー (コメント行と同じエラー) が表示されます。

ここで何が欠けていますか?

編集

わかりましたのでemplace_back、デフォルトstd::vector<int>でオンになるソリューションの1つを見つけましたv

しかし、 cppreferenceを使用したコンストラクター以降、以前は機能しなかったのはなぜですかsize_type

3) デフォルトで挿入された T のインスタンスを count 個含むコンテナを構築します。コピーは作成されません。

0 投票する
2 に答える
1898 参照

gcc - 次の Address Sanitizer 出力を使用して、プログラムでこのセグメンテーション違反を解決するにはどうすればよいですか?

この質問は私の前の質問の続編であり、現在のステータスは、@Employed Russian によって提案されたアドレスサニタイザーの出力を取得したことです。これは以下に示されています。アドレスサニタイザーを使用するのはこれが初めてなので、素朴で申し訳ありません。

@Employed Russian が先に指摘したように、おそらく問題はスタックにあると思われます。では、このスタックの問題を解決するにはどうすればよいでしょうか。これらは私の頭の上にあるからです。

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

clang - サニタイザーの警告に対処する

数日間、Xcode 7.3 内で Address Sanitizer を起動すると、次の問題が発生します。Sanitizer が問題を検出したときに Xcode コンソールに出力されたエラー メッセージ (実際にはファイルによって抑制されていた):

==13392==警告: fd 55 でシンボライザーに書き込めません

==13392==警告: fd 55 でシンボライザーに書き込めません

==13392==警告: fd 55 でシンボライザーに書き込めません

==13392==警告: fd 55 でシンボライザーに書き込めません

==13392==警告: 外部シンボライザーの使用と再起動に失敗しました!

リポジトリでエラー メッセージを見つけましたが、何が起こっているのか説明できません。明らかに内部書き込み機能は失敗しますが、何が原因なのかわかりません。何か案は?

https://github.com/Microsoft/compiler-rt/blob/master/lib/sanitizer_common/sanitizer_symbolizer_process_libcdep.cc#L100

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

c++ - clang ですべてのサニタイザーを有効にできないのはなぜですか?

Clangには、実行時に問題を検出するためにオンにできるさまざまなサニタイザーがあります。
ただし、併用できない消毒剤もあります。何故ですか?

大したことではありませんが、単体テストを実行すると、必要以上に時間がかかります。これは、同じテスト用に複数のバイナリを作成し、それぞれを個別に実行しているためです。