FogBugzをローカルにインストールすると、DEPがオフになっていると主張するのはなぜですか?
5 に答える
FogBugz 6(およびそれ以前)では、電子メールの解析に使用するサードパーティのCOMコンポーネントのため、 DEPを備えたバージョンのWindowsではデータ実行防止(DEP)を無効にする必要があります。これは、FogBugzの次のメジャーリリースで修正されます。FogBugzはこのサードパーティコンポーネントを使用しなくなります(実際、FogBugzの次のバージョンはCOMコンポーネントを使用しません)。
それをオンにして、デバッガーでクラッシュする場所を確認してください:) DEP例外をトリガーしたデータブロックからコードを実行するCOMコンポーネントに出くわしました。FogBugz も、どこかで同じことをしているいくつかのネイティブ コンポーネントにアクセスしていると思います。
FogBugzの詳細はわかりませんが、...
DEPをオフにする最も一般的な理由は、スタックまたはヒープ上にプログラムで生成されたサンクです。Windowsカーネルは最も一般的なものをエミュレートしますが、「最も一般的な」はあまり適切なカバレッジではありませんでした。
DEPをオフにする2番目に一般的な理由は、データセグメントのように見える誤ってリンクされたコードセグメントです。
3番目に一般的な理由は、文字列のマシンコードです。一般的に、これは本当に悪いスタイルですが、Windowsでは仕方がない場合があります。
4番目に一般的な理由は、スタックレイアウトを想定したコード内のアルゴリズムです。DEPはそれを台無しにします。
または、プログラムが実際にヒープバッファでコードを実行している可能性があります。
最新のソフトウェアでは処理できないため、サーバー環境で DEP をオフにするという考えは好きではありません。特に、私が何年にもわたって試した中で、それを必要とする唯一のソフトウェアだったからです。
インストール中に DEP アラートに遭遇しました。
上記の FogBugz のリンクにあるように、「ただし、FogBugz は DEP が有効になっていると正しく機能しないことに注意してください。」
アドレス空間内の他のモジュールにフックをパッチまたは挿入しようとするコードは、多くの場合、DEP が無効になっているか、インストールされたフックに対して適切なメモリ保護オプションが設定されていない限り、機能しません。
これは、一部のフレームワーク (Delphi など) で一般的な手法であり、ベンダーがまだ対処していないバグを修正するために実行時に「パッチ」が動的に適用されます。