glibcヒープの一貫性チェック
-
26-09-2019 - |
質問
- 2008年の投稿によると(私は今それを見つけることができません)、 glibcヒープチェック マルチスレッド環境では機能しません。 2010年にはまだ状況ですか?
- ヒープチェックはデフォルトで有効になりますか? (GCC 4.1.2)? malloc_check_を設定しません。Mcheck()を呼び出すことを知らないでください。たぶんそれはいくつかのコンピレーションフラグによって有効になっていますか?
解決
デフォルトでは、malloc_check_またはmcheck()を使用せずに、Glibcは同じメモリチャンクで2回無料()を呼び出すなど、パフォーマンスを傷つけない小さなチェックを行います。そのため、これらのメッセージの一部を取得していますが、Malloc_Check_を使用して得られるMalloc代替API(はるかに多くのテストを行っているが、CPU集約型もはるかに多く)を使用して得られるすべてのメッセージが提供されることはありません。これを確認し、エラーをトリガーし、malloc_check_の有無にかかわらずテストすることができます。たとえば、単純なダブルフリー()の場合、「ダブルフリーまたは破損(上)」または「free():malloc_check_を設定する場合はいつでも依存します。
1/質問に答えるために、Mcheckは存在するため(15年など)、Mallocフックに依存しており、それらは糸を安全にすることを意図していません。
出典:glibc/malloc/malloc.c、 http://sourceware.org/bugzilla/show_bug.cgi?id=9939
所属していません StackOverflow