ulimit -s 無制限のトリック (libc のアドレスを修正するため) は知っていますが、背後にある事実を理解していません。説明を手伝ってくれる人はいますか? ~ thx
1633 次
1 に答える
2
bashのマニュアルページによると
ulimit は、そのような制御を許可するシステムで、シェルおよびそれによって開始されたプロセスで使用可能なリソースを制御します。
-s フラグは、最大スタック サイズを定義します。
ulimit -s unlimited
そのため、スタック サイズの最大制限が削除され、これにより従来の mmap 機能が有効になります。
ヘクセレントによると
32 ビット システムでは、arch/x86/mm/mmap.c のカーネルに次のコードがあるため、「ulimit -s unlimited」は mmap() のランダム化を無効にします。
static int mmap_is_legacy(void)
{
if (current->personality & ADDR_COMPAT_LAYOUT)
return 1;
if (rlimit(RLIMIT_STACK) == RLIM_INFINITY)
return 1;
return sysctl_legacy_va_layout;
}
于 2014-11-27T17:18:10.020 に答える