問題タブ [address-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 に答える
15302 参照

macos - OS X の Clang Address Sanitizer

Valgrind はこのプラットフォームでのメモリ チェックに問題があるため、OSX Mountain Lion で clang アドレス サニタイザーを使用したいと考えています。しかし-fsanitize=address、コンパイル時に (このページで見られるように: http://clang.llvm.org/docs/AddressSanitizer.html )、このエラーが発生しました:clang: error: argument unused during compilation: '-fsanitize=address'

それで、私の質問は、OS X で Clang Address Sanitizer を使用する方法ですか? 使用できない場合、どのツールを使用できますか?

Xcodeでclangをダウンロードしましたが、最新です。(おそらく、このバージョンにはサニタイザーのビルドに対応していない可能性があります)

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

macos - コマンドライン クランを使用、OS X 10.9.1、Xcode 5.0.2

clang の -fsanitize=address 機能を使用したいと思います。

私は〜に乗っています:

コマンド ラインから clang を実行していますが、次のエラーが表示されます。

これはうまくいくと言われていますが、探し回っても道がわかりません。異なるバージョンの clang を導入する必要がありますか?

ありがとう!

0 投票する
3 に答える
15090 参照

c++ - GCC のアドレス サニタイザーの意味のあるスタック トレース

-fsanitize=addressGCCとフラグでコンパイルしてみました。プログラムを実行すると、アドレス サニタイザは欠陥を検出しますが、スタック トレースは役に立ちません。参照する必要があるソース コードの場所を指すように、これをどのように構成できますか?

0 投票する
5 に答える
9912 参照

c - clang の -fsanitize=address を使用してデバッグ出力の行番号を取得するにはどうすればよいですか?

で検出されたメモリ エラーをデバッグしようとしていますが、 では検出さclangasanませんでしたvalgrind。しかし、clangビルドされたバイナリを取得して、有用なデバッグ情報を得ることができません。短いテスト プログラムでこれを実証できます。

(明らかに、このエラーによって検出されます。valgrind純粋に の問題を示すためclangです。)

次のように Clang 3.4-1ubuntu1 でコンパイルします。

案の定、./test中止し、いくつかのデバッグ情報が表示されます。

しかし、私が本当に知りたいのは、エラーが発生した行番号と、メモリが割り当てられた場所です。

clang+からこの情報を取得するにはどうすればよいasanですか?

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

c++ - トランクから clang をコンパイルする際のエラー

clang のコンパイル時にエラーが発生しました。iOS シミュレーター用にコンパイルされたアドレスサニタイザーに問題があるようです。x86_64 の libclang.dylib にリンクする理由がわかりません。誰もそれを見たことがありますか?または、オフにする方法はありますか?

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

gcc - GCC 4.8.2 の Asan を使用する場合のスタック トレースの未解決のシンボル

このチュートの助けを借りてバグハンティングを試みます: https://fuzzing-project.org/tutorial2.html

アドレス サニタイザーを使用している場合、スタック トレースにシンボル解決がありません。

ここで説明する操作を試みます: GCC のアドレス サニタイザーの意味のあるスタック トレースですが、うまくいきません。私のOSはUbuntu 14.04です

私が取る手順は次のとおりです。

  1. 私は古典的なオフバイワンエラーであるCでテストプログラムを使用しています

    /li>
  2. llvm 3.5をインストールしますapt-get

  3. 次の変数をエクスポートします

    /li>
  4. 次のコマンドでgcc 4.8.2でコンパイルします

    /li>
  5. テスト プログラムを起動すると、バグ レポートに警告が表示されます。AddressSanitizer が llvm-symbolizer-3.5 に接続できないようです

    /li>

そして、スタックトレースにシンボルがありません。sudo を実行すると、警告は表示されませんが、シンボルの解決もありません。

p>

また、Google ページ プロジェクトで説明されている python スクリプトを試してみましたasan_symbolize.pyが、結果はありませんでした。

https://code.google.com/p/address-sanitizer/wiki/CallStack

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

c++ - OpenCV でアドレス サニタイザーを使用する

Google のAddress Sanitizerを CUDA プロジェクト、より正確には OpenCV cuda 関数で使用しようとしています。ただし、最初の cuda 呼び出しで「メモリ不足」エラーが発生しました。

で再現できます

でコンパイル

gcc でも同じ結果が得られました。また、結果なしでcuda関数をブラックリストに登録しようとしました。

opencvなしでcudaを使用するようになりました:

サニタイザーはメモリ リークで停止します。

私の質問は、アドレスサニタイザーを使用して、これにこだわらずにソフトウェアをサニタイズするにはどうすればよいですか? 少なくともcuda関連のすべての呼び出しを適切にブラックリストに登録するにはどうすればよいですか?

有名な Web 検索エンジンで関連するものは見つかりませんでした。人々が cuda や asan、あるいはその両方を使用していないようです。cuda を完全に無効にしたビルドを持っているだけですか?

asan は cuda メモリ管理に苦労していると思いますが、少なくともコードベースの残りの部分でこのツールを使用する方法を探しています。