4

ulimit -s 無制限のトリック (libc のアドレスを修正するため) は知っていますが、背後にある事実を理解していません。説明を手伝ってくれる人はいますか? ~ thx

4

1 に答える 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 に答える