問題タブ [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.
xcode7 - NSBitmapImageRep のヒープ バッファ オーバーフローを示す Xcode 7 - bitmapData
Xcode 7 の新しい Address Sanitizer 機能を使用してアプリを実行しているときに、まったく理解できない問題が見つかりました。
NSImage
このようなものから中サイズ (588x375) のテクスチャを初期化しようとしています
実行がコード サンプルの最後の行にAsanDie
達するとすぐに、次のスタック トレース (10.11.1 ベータ版を実行) でヒープ バッファー オーバーフローについて不平を言います。
この割り当てストラック トレースでは、次のようになります。
つまり、基本的に AppKit の内部に深く入り込んでいます。
問題が何であるかについてのアイデアはありますか..?
xcode - プラグインのアドレスサニタイザーを有効にする
私が制御できないサードパーティ向けのプラグインを構築しています。このプラグインを使用して Xcode 7 で Address Sanitizer を使用したいと考えています。プラグインを正常にコンパイルしてインストールできます。問題は、それが機能していることを証明できないことです。サニタイザーが問題を検出することを確認するために、次のコードを含めています。
サードパーティのアプリケーションがプラグインをロードすると、予想されるクラッシュは発生せず、5 という数字がログに記録されます。
環境変数を使用してDYLD_PRINT_LIBRARIES_POST_LAUNCH
、アドレスサニタイザーランタイムライブラリがロードされたことを証明しましたが、確かに次のとおりでした:
メインの実行可能ファイルがプラグインを使用していないときに、この診断ツールをプラグインで動作させる方法はありますか?
macos - OS X ptrace で実行すると、clang アドレス サニタイザーでビルドされたバイナリが SIGTRAP で停止する
ptrace の制御下で、clang のアドレス サニタイザーでビルドされたバイナリを実行しようとしていますが、偽の SIGTRAP に問題があります。
私のプログラムは、標準的な方法で ptrace を使用しptrace(PT_TRACE_ME,...)
ますexec
。親は、呼び出しが行われたSIGTRAP
ことを示す in child を待機します。exec
親はptrace(PT_CONTINUE,...)
、子を実行するように設定します。
これはすべて、通常のバイナリでは問題なく機能します。一方、アドレスサニタイザーでビルドされたバイナリを実行するとPT_CONTINUE
、プロセスを再開するために を実行した後、子プロセスは予期しない SIGTRAP をすぐに受け取ります。
これは、同様の方法で ptrace と対話する gdb を使用して実証できます。
簡単なテスト プログラムを作成します。
gdb で実行します。
(記号に関するメッセージは無視してください。)
プロセスはコード 062 で終了せず、SIGTRAP で停止したことに注意してください。
プロセスを実行するには、手動で続行します。
これはすべて対話型の使用には非常に適していますが、アドレス サニタイザーのビルドには特別な処理が必要になるため、自動テストには少し面倒です。可能であれば、すべてのビルド タイプで同じテスト プロセスを維持したいと考えています。
ここで何が起こっているか知っている人はいますか?
私はclang-700.1.76(Xcodeから)を使用しています。(そして gdb 7.9.1 (MacPorts から) - しかし、これは私自身のコードも影響を受けているため、より一般的な問題のように見えます。)
これを Linux (gcc 4.8.4/clang 3.8.0、gdb 7.7.1) で再現できませんでした。
c++ - Address Sanitizer: throw-catch および printf 使用時の「不明なアドレスの SEGV」
int や char const* などの何かをスローし、printf を使用してエラーを調べると、Address Sanitizer エラーが発生します。
ネット上で同様のものを見つけることができませんでした。私のコード例は非常に基本的であるため、エラーが発生する可能性があることを本当に理解していません.
削減されたコード サンプル:
コード実行時のコンソール出力:
-fsanitize フラグを無効にすると、Valgrind は次のヒントを提供します。
コンパイラ設定: 次のフラグを指定して Debian Jessie で clang 3.5.0-10 を使用する (Makefile からの抜粋):
何か案は?
c++ - -lsupc++ および -stdlib=libc++ を使用した AddressSanitizer / LeakSanitizer エラーが、ストリームに書き込みを行う呼び出されていない仮想関数で発生する
次のコードは、Clang 3.5 を使用して Debian Jessie でコンパイルすると、 AddressSanitizer エラーをスローします。
リンクされたライブラリの組み合わせに関連しているように見えますが、インターネット上で同様のものを見つけることができませんでした.
エラーの再現
呼び出し:clang++ -stdlib=libc++ -lc++abi -fsanitize=address,vptr sample.cpp -lsupc++ -o sample
compile flag を省略する-lc++abi
と、代わりにLeakSanitizer ランタイム エラーが発生します。
他のコンパイル フラグを省略した場合、エラーは発生しません。
エラーの原因は何ですか? 私のコードに何か問題がありますか、それともこれはコンパイル フラグの無効な組み合わせですか? もしそうなら、競合の原因は何ですか?
ios - iOS デバイスのサニタイズ ランタイム エラーに対処する
xCode7 ビルド設定タップで、以下のようにフラグを追加します。
シミュレーターでは問題なく動作しますが、iOS デバイスでアプリを実行するとクラッシュします。エラー情報は次のとおりです。
dyld: ライブラリが読み込まれていません: @rpath/libclang_rt.asan_ios_dynamic.dylib 参照元: /var/mobile/Containers/Bundle/Application/6DFB6F58-A283-4F82-A4B5-903E12B7D0CA/EduLayout.app/EduLayout 理由: 画像が見つかりません。 /p>
では、どうすれば修正できますか?</p>