俺は実際にはトレースするの面倒だから 0xc0115317にブレイクポイントを
設定し実行した。
[0]kdb> bp 0xc0115317
Instruction(i) BP #1 at 0xc0115317 (do_fork+0xa7)
  is enabled globally adjust 1
[1]kdb> g
Instruction(i) breakpoint #1 at 0xc0115317 (adjusted)
0xc0115317 do_fork+0xa7int3

Entering kdb (current=0xc5f82000, pid 15240) on processor 1
               due to Breakpoint @0xc0115317
次に実行されるインストラクションはこれ。
0xc0115317 do_fork+0xa7cmp 0x300(%ebx),%eax
レジスタの内容を見てみよう。eaxが&p->user->processesのはず。
[1]kdb> rd
eax = 0x00001000 ebx = 0xc2bd0000 ecx = 0x00000000 edx = 0xc6d0dfc0
esi = 0xc5f82680 edi = 0xc2bd0680 esp = 0xc5f83f50 eip = 0xc0115317
ebp = 0xc5f83fa4 xss = 0x00000018 xcs = 0x00000010 eflags = 0x00000286
xds = 0xc5f80018 xes = 0x00000018 origeax = 0xffffffff ®s = 0xc5f83f1c
eaxは0x1000つまり4096だな。0x300(%ebx)も見てみよう。メモリダンプはmdだ。
[0]kdb> md %ebx+0x300
0xc5aaa300 00001000 00001000 00000400 00000400 ................
p->rlim[RLIMIT_NPROC].rlim_curも0x1000,4096であることがわかる。
つまりこのマシンでは1ユーザーコンテキスト上では4096個以上のプロセスは
立ち上げられないことになる。実際にpsコマンドでみても4096以上は
立ち上がっていない。