トリッキーなメモリ破損バグ (メモリがランダムに上書きされる) を診断するために、Electric Fence といくつかのカスタム mprotect 呼び出しを利用して、破損したデータ構造に書き込みたい場合にのみ書き込み可能にすることを考えました (そしてすぐに取得します)。書き込みが試みられたときの SIGSEGV)。
残念ながら、上記のコードは Ruby C 拡張機能であるため、libefence の下で Ruby インタープリター全体を実行する際に libefence の下で実行することはパフォーマンス上の悪夢となります。
export LD_PRELOAD=libefence.so.0.0
恐ろしく遅いです。
OTOH、ルビー拡張機能を libefence に直接リンクしても (リンカーに -lefence を渡すことによって)、libefence のインスツルメンテーションなしで実行する効果はないようです。
libefence を介して特定の共有ライブラリで発生するメモリ割り当てのみを実行し、他の共有ライブラリとメイン プロセスをそのままにしておく方法はありますか?